The Best Lyrics Experience for Spotify & Apple Music on macOS. It Just Works.
Download here.
Screenshots
![Screenshot 1](https://private-user-images.githubusercontent.com/25706524/387886068-e3c2c5f1-3d2b-4f7c-9893-d4613340943e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzQ0OTk5NDIsIm5iZiI6MTczNDQ5OTY0MiwicGF0aCI6Ii8yNTcwNjUyNC8zODc4ODYwNjgtZTNjMmM1ZjEtM2QyYi00ZjdjLTk4OTMtZDQ2MTMzNDA5NDNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEyMTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMjE4VDA1MjcyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4YTllNWE4NjJiZGFlMjQ3YmQxYzA4NGNjYzY5YTM5Zjg3YTU0Y2MxMGU2ZGZlZTUyZWIxMjE1NWYyZTA2MjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.N906hKFu_lpupFDnU69j4yxQ4Xode_he5cDHe1yhZFk)
![Screenshot 2](https://private-user-images.githubusercontent.com/25706524/387886086-8d63d03e-6961-4675-b07a-e29697379c4b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzQ0OTk5NDIsIm5iZiI6MTczNDQ5OTY0MiwicGF0aCI6Ii8yNTcwNjUyNC8zODc4ODYwODYtOGQ2M2QwM2UtNjk2MS00Njc1LWIwN2EtZTI5Njk3Mzc5YzRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEyMTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMjE4VDA1MjcyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRkNGJjMzg4NjViYzFkNWIyNTRjNTEwNTM0YWNhZTY0OWVjOTk3NDI2YmVjODlhYzRlNjYxMzNjMGU0ZmI1MDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.VtsfRWeAD3HkFwGcnMDMA1jNutk3WrSuOWt0qQTovKs)
Features
- Automatic Lyric Playback on Menubar
- Fullscreen Mode (Modeled after Apple Music’s fullscreen view)
- Karaoke Mode (Lyric popup that stays on screen)
- Lyric Translation (using Apple’s on device APIs)
- Offline caching! Lyrics are automatically stored offline efficiently using CoreData
- Play some music on the Spotify / Apple Music app and watch the lyrics play on the menu bar automatically.
- Lyrics fetched from Spotify, and LRCLIB as a backup lyric provider
YouTube Promo Vid:
- macOS Ventura or higher (Sonoma required for fullscreen, Sequoia required for translation)
- Spotify Desktop Client (if using Spotify)
- UI is built using SwiftUI.
- The lyrics are updated and fetched using Swift Concurrency and Swift Tasks
- The lyrics are stored into disk using CoreData.
- I interface with Spotify & Apple Music using their AppleScript methods as well as by subscribing to their playback state change notifications.
- I interface with Spotify and Apple Music's AppleScript methods by using Apple's provided ScriptingBridge interface.
- I additionally use private APIs to get the currently playing Apple Music song's iTunes ID, and use MusicKit to map that to an ISRC code
- I map Apple Music songs to equivalent Spotify ID using ISRC to display Lyrics fetched from Spotify for either platform
- Lyrics are fetched from LRCLIB as a backup when Spotify fails
- I fetch the song “background color” with each lyric, and the color is used for the karaoke mode window background
- The fullscreen view uses a custom mesh gradient (I have lost the source for the code, cannot attribute it) and extracts colors from the album art using ColorKit
- Spiritual successor to LyricsX (95% more efficient, 0.1% CPU usage of Lyric Fever vs 3% of LyricsX)
- Technical write-up coming soon
- lcandy2 For their pull request
- Sparkle: For app updates
- Amplitude: For app analytics
- Spotify: The music platform this project depends on! (for playback, for lyrics)
- Apple MusicKit: Apple Music API
- Apple Music: Another platform that this project depends on
- ColorKit-macOS: My port of ColorKit for macOS
- Cindori for their blog post on writing an NSPanel view for SwiftUI
- tranxuanthang for LRCLIB, an open source Lyric library. Used when Spotify fails.
- Unknown author for the mesh gradient view. I have lost the source.