{"id":26406121,"url":"https://github.com/yuantongl/ytoke","last_synced_at":"2025-08-07T07:13:03.896Z","repository":{"id":56567285,"uuid":"289072550","full_name":"YuantongL/YToke","owner":"YuantongL","description":"Mac Karaoke app, open source, free, based on Youtube videos.","archived":false,"fork":false,"pushed_at":"2020-12-08T20:52:40.000Z","size":22655,"stargazers_count":16,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-02-27T16:30:51.891Z","etag":null,"topics":["karaoke","macos","youtube","youtube-videos"],"latest_commit_sha":null,"homepage":"https://ytoke.app","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YuantongL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.com/biz/fund?id=L3P7NAM2MZLDS"]}},"created_at":"2020-08-20T17:51:22.000Z","updated_at":"2023-01-31T01:48:32.000Z","dependencies_parsed_at":"2022-08-15T21:01:03.936Z","dependency_job_id":null,"html_url":"https://github.com/YuantongL/YToke","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuantongL%2FYToke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuantongL%2FYToke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuantongL%2FYToke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuantongL%2FYToke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YuantongL","download_url":"https://codeload.github.com/YuantongL/YToke/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244075643,"owners_count":20393980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["karaoke","macos","youtube","youtube-videos"],"created_at":"2025-03-17T17:18:30.442Z","updated_at":"2025-03-17T17:18:31.350Z","avatar_url":"https://github.com/YuantongL.png","language":"Swift","funding_links":["https://www.paypal.com/biz/fund?id=L3P7NAM2MZLDS"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n \u003cimg src=\"Artwork/logo_with_text.png\" width=500 align=\"center\"\u003e\n\u003c/p\u003e\n\nYToke~ is an Open Source free karaoke app on Mac. Connect external microphone to your Mac, YToke~ streams your voice to audio output. Enjoy living room karaoke by connecting Mac to your TV screen.\n\nYToke~ uses Youtube videos as source of MVs, enjoy millions of songs with/without vocal and free of ads.\n\n[\u003cimg src=\"Artwork/Setup.png\" align=\"center\"\u003e](Artwork/Setup.png)\n\n## Download\nYou can download the app on Github releases.\n\n[GitHub Releases](https://github.com/YuantongL/YToke/releases)\n\n## Setup\nYToke~ has 2 windows - a control panel and a video view. Ideal setup would be use a TV as extended screen for playing the MV, and have the control panel on Mac display, just similar to what you have in a KTV room.\n\n* Multiple microphone setup: You can use Mac's built-in \"Audio MIDI setup\" app to combine input from multiple microphones. [Apple's official guide](https://support.apple.com/en-us/HT202000)\n* Prefer use wired external microphone as audio input to minimize latency.\n* Latency is critical in karaoke, don't use Airplay, always prefer wired connection. Some TV has mode selections (most seen in game mode) to minimize latency.\n* Use of Mac built-in microphone + speaker may cause howling.\n\n## Run the project in Xcode\nThe project uses Cocoapods for package management.\n\n* Run ``$ pod install`` under project root.\n\n* Open the ``.workspace`` file generated by previous step, you should be able to just run the project by press ``command+R``.\n\n## How does it work\nThe initial idea is to build a home karaoke system, Youtube is the world's largest video repository and there are a lot of karaoke videos, it make sense to use Youtube as the source of the videos.\n\nYToke~ uses [dedicated API](https://ytokebackend.appspot.com) hosted on Google Cloud, you can checkout the [backend project](https://github.com/YuantongL/YTokeBackend) for details. The backend uses [Invidious API](https://github.com/iv-org/invidious) instead of Youtube's official data API for searching purpose, informations along with videoId is gathered. Then the videoId is passed to [XCDYouTubeKit](https://github.com/0xced/XCDYouTubeKit) to play.\n\nMeanwhile, I created a MicStreamer based on [AVAudioEngine](https://developer.apple.com/documentation/avfoundation/avaudioengine) which basically does realtime audio processing. It connects the Mac's default audio input to output with little audio effect.\n\nThe app can be separate to 3 layers with unit-test covered on all layers.\n\n* Data - Data providers, direct communicate to data sources.\n* Repository - Contains logic for manipulating the data providers.\n* View - Draws the UI, handles interaction and view layer logics.\n\nThe UI is built using AppKit + MVVM.\n\n## Donation\nIf you enjoy singing with YToke~, besides contribute you are also welcome to donate. Your support push us develop new features and bring fantastic at-home Karaoke experience to you in the future.\n\n[Donate](https://www.paypal.com/biz/fund?id=L3P7NAM2MZLDS)\n\n## Contact\nIf you have questions or found bugs, feel free to create issue here on Github.\n\nYou can also follow up by reading the blog https://write.as/ytoke/.\n\n## License\n\nYToke~ is a open source app. The software is under the terms of the\n[GNU General Public License V3](https://www.gnu.org/licenses/gpl-3.0.en.html).\n\n[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuantongl%2Fytoke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuantongl%2Fytoke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuantongl%2Fytoke/lists"}