Karaoke Formats

Soft Karaoke

The .kar format was originally developed by Tune 1000 for a commercial product (Soft Karaoke, 1993).

The format has some advantages, it contains fields started by @ to enter title author, language that can be easily used by midi karaoke players (standard midi files have not these important text fields, therefore it is not standardized how to enter this information into midi files), it contains simple format characters to break paragraphs and lines (but has bad hidden limitation of max 4 lines per paragraph).The reason for using text meta events instead of lyrics is not clear, there is no advantage,probably was a mistake by format developer.

The format was good but had only one problem for use with keyboards, it was in midi format 1 and many keyboards only support format 0 midi. Therefore Tune1000 developed new format in format 0.

Structure of a typical karaoke (.kar) file:

The first track contains text events that are used to make the file recognizable by Karaoke program as a MIDI Karaoke file. @KMIDI KARAOKE FILE is used to for that purpose. @V0100 is the program version number. Anything starting with @I is any information you want to include in the file.

The second track contains the text events for the lyrics of the song. The first event is @LENGL. It identifies the language the words are in, which is English. The next couple of events start with @T which identifies the title of the songs. You can have up to three events like these. The text of those events will show up in the upper right corner of the Soft Karaoke program window.

The rest of the track contains the words of the song. Each event is the syllable that is supposed to be sung at the time of the event. If the text starts with \, it means to clear the screen and show the words at the top of the screen. If the text starts with /, it means to go to the next line.

Some karaoke programs extract part of this 'header' information. It is a good idea to put the song title on the first @T line, and to put the artist on the second @T line. This way these programs will display the information in the 'Title' and 'Artist' columns in their directory window.

@ tags summary:

Tune1000

Developed by Tune 1000, and also used by Roland for its arrangers (E500, E96, RA800, E68, G800 et G1000), by Technics (KN5000 for example) and some Farfisa keyboards. It is defined as the professional MIDI format. The MIDI file must in format 0, the single track MIDI format. Words are broken down into separate syllables and stored as lyric meta events at the given time they are intended to be sung.

<Syllable>

FF 05 len "text"

Example:

FF 05 len "This "
FF 05 len "is "
FF 05 len "an "
FF 05 len "ex"
FF 05 len "am"
FF 05 len "ple. "

<Carriage Return Event>

FF 05 01 0D

<Line Feed Event>

FF 05 01 0A

<Chord>

Text meta events with the "%" prefix are used to store chords using the standard notation format <A#m7/E> where the first letter is the chord name (capitals letters A-G) , the second is the alteration (#, b or blank), followed by the chord description.

Example:

FF 01 len "%D#/F"
FF 01 len "%B m7" <-- recommended blank space if no prefix (QMidi will check this!)
FF 01 len "%Gbsus4"

CAUTION: Sometimes chords are stored without the % prefix but it may be harder for players to recognize them properly, because text meta event are also used to store lyrics in the SoftKaraoke format.  

Solton

Developed by the Keytron laboratories for Solton and used by some italian MIDI manufacturers (like Charlie Lab's Megabeat One).

The lyric meta event is used to store data and some tags are used to specify the kind of event. The < tag precedes a lyrics line and % precedes chords. The Solton sequencer displays the lyrics in the first line and the chord in the second line of its display. The MIDI controller number 31 ($1F) is sent on channel 1 and tells the Solton sequencer to hilite a number of characters specified by the its value. The controller value 0 unhilites all.

Example:

FF 05 len "<THIS IS AN EXAMPLE"
FF 05 len "%Emin"
B0 1F 04 <-- THIS hilited
B0 1F 07 <-- THIS IS hilited
B0 1F 0A <-- THIS IS AN hilited
B0 1F 10 <-- all text hilited
B0 1F 00 <-- unhilite all
FF 05 len "<THE END" <-- next line
FF 05 len "%Amin"

MidiSoft

The Midisoft format is supported by Charlie Lab's Megabeat One and some other Roland keyboards (G800, G1000). Lyrics and chords are stored as system exclusive messages with manufacturer ID 0x002024. Lyrics are sent by groups of 4 lines of text and special sysex message are sent in sync with the song to handle hilighting. Special tag numbers are defined for every kind of message.

<00 04> 1° line of lyrics
<00 05> 2° line of lyrics
<00 06> 3° line of lyrics
<00 07> 4° line of lyrics

Example:

FO len 00 20 24 00 04 "THIS IS AN EXAMPLE" F7
FO len 00 20 24 00 05 "2° LINE" F7
FO len 00 20 24 00 06 "3° LINE" F7
FO len 00 20 24 00 07 "4° LINE" F7

<00 08> Sync

Example:

FO len 00 20 24 00 08 F7 <-- 1° line is hilighted
FO len 00 20 24 00 08 F7 <-- 2° line is hilighted
FO len 00 20 24 00 08 F7 <-- 3° line is hilighted
FO len 00 20 24 00 08 F7 <-- 4° line is hilighted

<00 01> Chord

Example:

FO len 00 20 24 00 01 "Amin" F7

Yamaha

Chords can also be stored as Yamaha XG format "Chord Control Code" sysexes. MidiKit allows you to view and edit these messages using the following syntax:

NOTE (C, D, E, F, G, A, B)

ACCIDENTAL (b, #)

CHORD TYPE

maj6 maj7 maj7(#11) maj(9) maj7(9) maj6(9) aug    
m m6 m7 m7b5 m(9) m7(9) m7(11) minmaj7 minmaj7(9)
dim dim7              
7 7sus4 7b5 7(9) 7(#11) 7(13) 7(b9) 7(b13) 7(#9)
maj7aug 7aug 1+8 1+5 sus4 1+2+5