RustyKaraoke: Difference between revisions

From DisNCord Community Wiki
Jump to navigation Jump to search
CappyIshihara (talk | contribs)
No edit summary
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Projects]]
[[Category:Preservation and Documentation]]
{{stub}}
'''RustyKaraoke''' is an attempt to create a universal karaoke player in the Rust programming language by [[User:CappyIshihara|Cappy Ishihara]] after encountering various frutstrations with various proprietary Thai karaoke software (Nick Karaoke, eXtreme Karaoke), while development on its open-source alternative HandyKaraoke was stagnant.
'''RustyKaraoke''' is an attempt to create a universal karaoke player in the Rust programming language by [[User:CappyIshihara|Cappy Ishihara]] after encountering various frutstrations with various proprietary Thai karaoke software (Nick Karaoke, eXtreme Karaoke), while development on its open-source alternative HandyKaraoke was stagnant.




RustyKaraoke was primarily created to support the various Thai karaoke formats (NCN, EMK), but with planned support for other formats including Video with ASS subtitles, MP3/CD+G and more.
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:
== The NCN Format (MIDI, .cur, .lyr) ==
NCN is a basic timing format made for Nick Karaoke, with a plain-text .lyr file usually encoded in TIS-620 and a set of 16-bit unsigned integers in the .cur file.
=== Lyrics (.lyr) ===
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.<syntaxhighlight line="1">
Title
Artist
Key
Lyrics....
</syntaxhighlight>Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file
=== Cursor file (.cur) ===
The cursor file contains a list of 16-bit unsigned integers indicating when each character will be scrolled to the song. The entire MIDI song is split into 65535 ticks.
The formula for figuring out the current MIDI tick is as follows:


insert latex here
RustyKaraoke was primarily created to support the various Thai karaoke formats ([[NCN (Karaoke Format)|NCN]], [[EMK (Karaoke Format)|EMK]]), but with planned support for other formats including Video with ASS subtitles, MP3/CD+G and more.


<math>C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60</math>
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats.

Latest revision as of 02:21, 29 November 2022

Template:Stub

RustyKaraoke is an attempt to create a universal karaoke player in the Rust programming language by Cappy Ishihara after encountering various frutstrations with various proprietary Thai karaoke software (Nick Karaoke, eXtreme Karaoke), while development on its open-source alternative HandyKaraoke was stagnant.


RustyKaraoke was primarily created to support the various Thai karaoke formats (NCN, EMK), but with planned support for other formats including Video with ASS subtitles, MP3/CD+G and more.

Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats.