https://github.com/yuantongl/ytoke
Mac Karaoke app, open source, free, based on Youtube videos.
https://github.com/yuantongl/ytoke
karaoke macos youtube youtube-videos
Last synced: 2 months ago
JSON representation
Mac Karaoke app, open source, free, based on Youtube videos.
- Host: GitHub
- URL: https://github.com/yuantongl/ytoke
- Owner: YuantongL
- License: gpl-3.0
- Created: 2020-08-20T17:51:22.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-08T20:52:40.000Z (almost 5 years ago)
- Last Synced: 2023-02-27T16:30:51.891Z (over 2 years ago)
- Topics: karaoke, macos, youtube, youtube-videos
- Language: Swift
- Homepage: https://ytoke.app
- Size: 21.6 MB
- Stars: 16
- Watchers: 1
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
![]()
YToke~ 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.
YToke~ uses Youtube videos as source of MVs, enjoy millions of songs with/without vocal and free of ads.
[
](Artwork/Setup.png)
## Download
You can download the app on Github releases.[GitHub Releases](https://github.com/YuantongL/YToke/releases)
## Setup
YToke~ 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.* 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)
* Prefer use wired external microphone as audio input to minimize latency.
* 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.
* Use of Mac built-in microphone + speaker may cause howling.## Run the project in Xcode
The project uses Cocoapods for package management.* Run ``$ pod install`` under project root.
* Open the ``.workspace`` file generated by previous step, you should be able to just run the project by press ``command+R``.
## How does it work
The 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.YToke~ 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.
Meanwhile, 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.
The app can be separate to 3 layers with unit-test covered on all layers.
* Data - Data providers, direct communicate to data sources.
* Repository - Contains logic for manipulating the data providers.
* View - Draws the UI, handles interaction and view layer logics.The UI is built using AppKit + MVVM.
## Donation
If 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.[Donate](https://www.paypal.com/biz/fund?id=L3P7NAM2MZLDS)
## Contact
If you have questions or found bugs, feel free to create issue here on Github.You can also follow up by reading the blog https://write.as/ytoke/.
## License
YToke~ is a open source app. The software is under the terms of the
[GNU General Public License V3](https://www.gnu.org/licenses/gpl-3.0.en.html).[](http://www.gnu.org/licenses/gpl-3.0.en.html)