You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm opening this issue to propose a major rework, or you could say polishing of the lyrics page. While this is not a priority and I don't see this being implemented in probably the next two or maybe three milestones, it still might be a good idea to have this tracked for a future pull request.
This is more more of niche, but if implemented properly, then swingmusic would probably be the one of its kind to support such a thing and I could see some people specifically swinging to swing (sorry for the pun) just for these features.
elrc Word by Word sync
Romanization/Translation and multi-lrc support
Formatting Vocal Features
Aesthetic Improvements
Most of these ideas here have already been implemented in a spicetify extension called beautiful lyrics so we already have a source to refer from just in case.
.elrc Support
The current state of the lyrics page only supports either static lyrics or line synced lyrics (typical .lrc files). I want to introduce something called "enhanced lyrics" or 'elrc' files. These are lyrics that are synced word-to-word and make a great use case for karaoke.
[00:00.00] <00:00.04> When <00:00.16> the <00:00.82> truth <00:01.29> is <00:01.63> found <00:03.09> to <00:03.37> be <00:05.92> lies
[00:06.47] <00:07.67> And <00:07.94> all <00:08.36> the <00:08.63> joy <00:10.28> within <00:10.53> you <00:13.09> dies
[00:13.34] <00:14.32> Don't <00:14.73> you <00:15.14> want <00:15.57> somebody <00:16.09> to <00:16.46> love
Word.Sync.Output.mp4
Do note that enhanced lrc files don't really go by .elrc (They also use just lrc) file extension but it would be easier to classify them if swing only recognized .elrc as enhanced lyrics.
The ability to romanize foreign languages to english relies on the language property of the track. Swing can check if the said track is of a particular native language for which romanization is supported and then can give the user the ability to switch to the equivalent romanized lyrics. There are a few ways in which this can be implemented:
Specific Libraries
Libraries like pykakasi support JIT translation for Japanese -> English and it's all which is fast and self contained (i.e no requirement of external dictionaries, etc.). The only issue with this is that it can be hard to find such implementations for other languages.
Multiple Lyric Files
There can support for multiple lrc files which can have certain language identifiers such as: [KG] Foo - Bar.lrc: Native korean lyrics [KG-EN] Foo - Bar.lrc: Korean to English Translated (Literal Translation) [KG-ROM] - Bar.lrc: Romanized korean lyrics
The identifiers would probably be ISO Codes for languges with suitable modifiers and the user can switch from one lyric to another within the UI or set defaults as well.
Formatting Background Vocals (or ad-libs)
These are the part of lyrics that are usually denoted in brackets. They could be formatted as a new line under the main line with a smaller font or similar.
If a word-by-word elrc file is given then it could be implemented by checking whether the lyric starts with a parenthesis or not and then apply the necessary styling.
In case only a regular time synced lyric file is given then its only possible if the ad-lib lyric starts on a new line:
# This would work-
[04:23:45] Lorem Ipsum Dolor Sit Amer
[04:24:56] (Dolor Sit Amer)
# This wouldn't work-
[04:23:45] Lorem Ipsum Dolor Sit Amer (Dolor Sit Amer)
Switching Vocals
Add support for custom formatting of lines sung by different people. A basic example of this would be gender wise - Male, Female & Duet:
[00:12.00]Line 1 lyrics
[00:17.20]F: Line 2 lyrics
[00:21.10]M: Line 3 lyrics
[00:24.00]Line 4 lyrics
[00:28.25]D: Line 5 lyrics
[00:29.02]Line 6 lyrics
Let's say we use blue for male, red for female and pink for Duet.
Line 1 will use the default color (blue) when no tag is found.
Line 2 lyrics start with red when F: is found.
Line 3 lyrics start with blue when M: is found.
Line 4 lyrics stays blue when no tag is found.
Line 5 lyrics start with pink when D: is found.
Line 6 lyrics stays pink when no tag is found.
This is just an example, the exact colors, and behaviors can be changed accordingly.
Aesthetic Improvements
The lyrics themselves could use a bit more subtle animations like fades, color whipes and grow/shrink to make it look more lively.
Gaudio Studio - A free service that uses AI to transcribe songs word-by-word. While not perfect to the 100th millisecond, with minimal input you can get a lot of songs done through this whose (elrc files) are not available on major services..
Note: If you want to download the lyrics, you can head on to the network tab in dev tools and download the csv file which contains the time stamps at which words are broken for a given line.
I'm opening this issue to propose a major rework, or you could say polishing of the lyrics page. While this is not a priority and I don't see this being implemented in probably the next two or maybe three milestones, it still might be a good idea to have this tracked for a future pull request.
This is more more of niche, but if implemented properly, then swingmusic would probably be the one of its kind to support such a thing and I could see some people specifically swinging to swing (sorry for the pun) just for these features.
elrc
Word by Word syncMost of these ideas here have already been implemented in a spicetify extension called beautiful lyrics so we already have a source to refer from just in case.
.elrc
SupportThe current state of the lyrics page only supports either static lyrics or line synced lyrics (typical .lrc files). I want to introduce something called "enhanced lyrics" or 'elrc' files. These are lyrics that are synced word-to-word and make a great use case for karaoke.
Here is the syntax for a normal
.lrc
fileLine.Sync.Output.mp4
This is how a an
.elrc
file lyrics look like:Word.Sync.Output.mp4
Romanization
(Related to #182 )
Romanization.Demo.mp4
The ability to romanize foreign languages to english relies on the
language
property of the track. Swing can check if the said track is of a particular native language for which romanization is supported and then can give the user the ability to switch to the equivalent romanized lyrics. There are a few ways in which this can be implemented:Specific Libraries
Libraries like pykakasi support JIT translation for Japanese -> English and it's all which is fast and self contained (i.e no requirement of external dictionaries, etc.). The only issue with this is that it can be hard to find such implementations for other languages.
Multiple Lyric Files
There can support for multiple lrc files which can have certain language identifiers such as:
[KG] Foo - Bar.lrc
: Native korean lyrics[KG-EN] Foo - Bar.lrc
: Korean to English Translated (Literal Translation)[KG-ROM] - Bar.lrc
: Romanized korean lyricsThe identifiers would probably be ISO Codes for languges with suitable modifiers and the user can switch from one lyric to another within the UI or set defaults as well.
Formatting Background Vocals (or ad-libs)
These are the part of lyrics that are usually denoted in brackets. They could be formatted as a new line under the main line with a smaller font or similar.
If a word-by-word elrc file is given then it could be implemented by checking whether the lyric starts with a parenthesis or not and then apply the necessary styling.
In case only a regular time synced lyric file is given then its only possible if the ad-lib lyric starts on a new line:
Switching Vocals
Add support for custom formatting of lines sung by different people. A basic example of this would be gender wise - Male, Female & Duet:
Let's say we use blue for male, red for female and pink for Duet.
This is just an example, the exact colors, and behaviors can be changed accordingly.
Aesthetic Improvements
The lyrics themselves could use a bit more subtle animations like fades, color whipes and grow/shrink to make it look more lively.
Useful References
The text was updated successfully, but these errors were encountered: