<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.restless.systems/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CappyIshihara</id>
	<title>DisNCord Community Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.restless.systems/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CappyIshihara"/>
	<link rel="alternate" type="text/html" href="https://wiki.restless.systems/wiki/Special:Contributions/CappyIshihara"/>
	<updated>2026-05-29T17:30:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=317</id>
		<title>NCN (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=317"/>
		<updated>2022-11-29T02:30:24Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
NCN is a karaoke file format used by the Thai karaoke player [[Nick Karaoke]]. It is a collection of 3 files: a MIDI, a plaintext lyrics file, and a binary cursor containing a list of 16-bit unsigned integers.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot; lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIDI ===&lt;br /&gt;
A standard MIDI file, that accompanies the lyrics and the cursor file.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=316</id>
		<title>NCN (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=316"/>
		<updated>2022-11-29T02:23:04Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
NCN is a karaoke file format used by the Thai karaoke player [[Nick Karaoke]]. It is a collection of 3 files: a MIDI, a plaintext lyrics file, and a binary cursor containing a list of 16-bit unsigned integers.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIDI ===&lt;br /&gt;
A standard MIDI file, that accompanies the lyrics and the cursor file.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=315</id>
		<title>NCN (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=315"/>
		<updated>2022-11-29T02:22:01Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
NCN is a karaoke file format used by the Thai karaoke player Nick Karaoke. It is a collection of 3 files: a MIDI, a plaintext lyrics file, and a binary cursor containing a list of 16-bit unsigned integers.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIDI ===&lt;br /&gt;
A standard MIDI file, that accompanies the lyrics and the cursor file.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=EMK_(Karaoke_Format)&amp;diff=314</id>
		<title>EMK (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=EMK_(Karaoke_Format)&amp;diff=314"/>
		<updated>2022-11-29T02:21:57Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
EMK is a container format for [[NCN (Karaoke Format)|NCN]] karaoke files. It is used by [[Extreme Karaoke]] to archive songs.&lt;br /&gt;
&lt;br /&gt;
==Format==&lt;br /&gt;
EMK files are simply an archive of the NCN format, compressed into one single file.&lt;br /&gt;
&lt;br /&gt;
An EMK file contains the following data:&lt;br /&gt;
&lt;br /&gt;
*EMK Header (extra metadata)&lt;br /&gt;
*NCN Lyrics&lt;br /&gt;
*NCN Cursor&lt;br /&gt;
*MIDI&lt;br /&gt;
&lt;br /&gt;
All EMK files are XOR encrypted with the magic key &amp;lt;code&amp;gt;AFF24C9CE9EA994&amp;lt;/code&amp;gt;, which when decrypted becomes a DEFLATE stream of an archive with 4 chunks containing these files.&lt;br /&gt;
&lt;br /&gt;
Once extracted, it can be played like a normal NCN file, with extra metadata in the headers.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=313</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=313"/>
		<updated>2022-11-29T02:21:00Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=EMK_(Karaoke_Format)&amp;diff=312</id>
		<title>EMK (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=EMK_(Karaoke_Format)&amp;diff=312"/>
		<updated>2022-11-29T02:20:50Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: Created page with &amp;quot;EMK is a container format for NCN karaoke files. It is used by Extreme Karaoke to archive songs.  ==Format== EMK files are simply an archive of the NCN format, compressed into one single file.  An EMK file contains the following data:  *EMK Header (extra metadata) *NCN Lyrics *NCN Cursor *MIDI  All EMK files are XOR encrypted with the magic key &amp;lt;code&amp;gt;AFF24C9CE9EA994&amp;lt;/code&amp;gt;, which when decrypted becomes a DEFLATE stream of an archive with 4 ch...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EMK is a container format for [[NCN (Karaoke Format)|NCN]] karaoke files. It is used by [[Extreme Karaoke]] to archive songs.&lt;br /&gt;
&lt;br /&gt;
==Format==&lt;br /&gt;
EMK files are simply an archive of the NCN format, compressed into one single file.&lt;br /&gt;
&lt;br /&gt;
An EMK file contains the following data:&lt;br /&gt;
&lt;br /&gt;
*EMK Header (extra metadata)&lt;br /&gt;
*NCN Lyrics&lt;br /&gt;
*NCN Cursor&lt;br /&gt;
*MIDI&lt;br /&gt;
&lt;br /&gt;
All EMK files are XOR encrypted with the magic key &amp;lt;code&amp;gt;AFF24C9CE9EA994&amp;lt;/code&amp;gt;, which when decrypted becomes a DEFLATE stream of an archive with 4 chunks containing these files.&lt;br /&gt;
&lt;br /&gt;
Once extracted, it can be played like a normal NCN file, with extra metadata in the headers.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=311</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=311"/>
		<updated>2022-11-29T02:18:39Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats.&lt;br /&gt;
&lt;br /&gt;
== eXtreme Karaoke MIDI Archive (.emk)==&lt;br /&gt;
EMK files are simply an archive of the NCN format, compressed into one single file.&lt;br /&gt;
&lt;br /&gt;
An EMK file contains the following data:&lt;br /&gt;
&lt;br /&gt;
*EMK Header (extra metadata)&lt;br /&gt;
*NCN Lyrics&lt;br /&gt;
*NCN Cursor&lt;br /&gt;
*MIDI&lt;br /&gt;
&lt;br /&gt;
All EMK files are XOR encrypted with the magic key &amp;lt;code&amp;gt;AFF24C9CE9EA994&amp;lt;/code&amp;gt;, which when decrypted becomes a DEFLATE stream of an archive with 4 chunks containing these files.&lt;br /&gt;
&lt;br /&gt;
Once extracted, it can be played like a normal NCN file, with extra metadata in the headers.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=310</id>
		<title>NCN (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=310"/>
		<updated>2022-11-29T02:17:48Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: moved ncn spec from rustykaraoke&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NCN is a karaoke file format used by the Thai karaoke player Nick Karaoke. It is a collection of 3 files: a MIDI, a plaintext lyrics file, and a binary cursor containing a list of 16-bit unsigned integers.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIDI ===&lt;br /&gt;
A standard MIDI file, that accompanies the lyrics and the cursor file.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=309</id>
		<title>NCN (Karaoke Format)</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=NCN_(Karaoke_Format)&amp;diff=309"/>
		<updated>2022-11-29T02:15:43Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: Created page with &amp;quot;NCN is a karaoke file format used by the Thai karaoke player Nick Karaoke. It is a collection of 3 files: a MIDI, a plaintext lyrics file, and a binary cursor containing a list of 16-bit unsigned integers.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NCN is a karaoke file format used by the Thai karaoke player Nick Karaoke. It is a collection of 3 files: a MIDI, a plaintext lyrics file, and a binary cursor containing a list of 16-bit unsigned integers.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=308</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=308"/>
		<updated>2022-11-29T02:13:30Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats.&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIDI ===&lt;br /&gt;
A standard MIDI file, that accompanies the lyrics and the cursor file.&lt;br /&gt;
&lt;br /&gt;
== eXtreme Karaoke MIDI Archive (.emk) ==&lt;br /&gt;
EMK files are simply an archive of the NCN format, compressed into one single file.&lt;br /&gt;
&lt;br /&gt;
An EMK file contains the following data:&lt;br /&gt;
&lt;br /&gt;
* EMK Header (extra metadata)&lt;br /&gt;
* NCN Lyrics&lt;br /&gt;
* NCN Cursor&lt;br /&gt;
* MIDI&lt;br /&gt;
&lt;br /&gt;
All EMK files are XOR encrypted with the magic key &amp;lt;code&amp;gt;AFF24C9CE9EA994&amp;lt;/code&amp;gt;, which when decrypted becomes a DEFLATE stream of an archive with 4 chunks containing these files.&lt;br /&gt;
&lt;br /&gt;
Once extracted, it can be played like a normal NCN file, with extra metadata in the headers.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=307</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=307"/>
		<updated>2022-11-29T02:11:41Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats.&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIDI ===&lt;br /&gt;
A standard MIDI file, that accompanies the lyrics and the cursor file.&lt;br /&gt;
&lt;br /&gt;
== eXtreme Karaoke MIDI Archive (.emk) ==&lt;br /&gt;
EMK files are simply an archive of the NCN format, compressed into one single file.&lt;br /&gt;
&lt;br /&gt;
An EMK file contains the following data:&lt;br /&gt;
&lt;br /&gt;
* EMK Header (extra metadata)&lt;br /&gt;
* NCN Lyrics&lt;br /&gt;
* NCN Cursor&lt;br /&gt;
* MIDI&lt;br /&gt;
&lt;br /&gt;
All EMK files are XOR encrypted with the magic key &amp;lt;code&amp;gt;AFF24C9CE9EA994&amp;lt;/code&amp;gt;, which decrypted becomes a DEFLATE stream of an archive with 4 chunks containing these files.&lt;br /&gt;
&lt;br /&gt;
Once extracted, it can be played like a normal NCN file, with extra metadata in the headers.&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=296</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=296"/>
		<updated>2022-11-28T17:11:09Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: changed MIDI tick to NCN tick&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current NCN tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=295</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=295"/>
		<updated>2022-11-28T17:06:17Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current MIDI tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=286</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=286"/>
		<updated>2022-11-28T17:02:52Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current MIDI tick is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C = \frac{\left(\frac{\mathrm{tick}}{\mathrm{resolution}}\right)}{\mathrm{BPM}} \cdot 24 \cdot 60&amp;lt;/math&amp;gt;&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Multimedia]]&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=274</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=274"/>
		<updated>2022-11-28T16:15:55Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current MIDI tick is as follows:&lt;br /&gt;
&lt;br /&gt;
insert latex here&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=273</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=273"/>
		<updated>2022-11-28T15:49:03Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:&lt;br /&gt;
&lt;br /&gt;
== The NCN Format (MIDI, .cur, .lyr) ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Lyrics (.lyr) ===&lt;br /&gt;
The first 4 lines of the lyrics file is metadata, including the title, artist, and key. The fourth line is used as a delimiter.&amp;lt;syntaxhighlight line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Title&lt;br /&gt;
Artist&lt;br /&gt;
Key&lt;br /&gt;
&lt;br /&gt;
Lyrics....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Each character after the fourth line will be scrolled according to the MIDI ticks in the cursor file&lt;br /&gt;
&lt;br /&gt;
=== Cursor file (.cur) ===&lt;br /&gt;
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.&lt;br /&gt;
The formula for figuring out the current MIDI tick is as follows:&lt;br /&gt;
insert latex here&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=272</id>
		<title>RustyKaraoke</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=RustyKaraoke&amp;diff=272"/>
		<updated>2022-11-28T15:13:57Z</updated>

		<summary type="html">&lt;p&gt;CappyIshihara: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;RustyKaraoke&amp;#039;&amp;#039;&amp;#039; 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 format...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RustyKaraoke&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Various reverse-engineering efforts were made to dissect the proprietary Karaoke formats:&lt;/div&gt;</summary>
		<author><name>CappyIshihara</name></author>
	</entry>
</feed>