Create Midi Disc To Play On Karaoke Player

Discussion in 'Karaoke Files' started by johnlang, Sep 13, 2004.

  1. kaloi

    kaloi New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Most of this VCD Mini discs are proprietary (as far as I know), they can only be played on their respective players.. Reading them on the PC is not possible.. but copying the entire disk on on another cd is possible.. You can even extract the video using ISOBUSTER but no the audio.. I tried doing it but to no avail.. I believe, the VCD was created using a higher format (S-VCD).. correct me if I'm wrong.
  2. raya

    raya New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Re:

    I've been studying how this work lately coz i wanted to buy one. Lately, I observe that Promac, LG and Hyundai had come up of its own version of DVD Midi Karaoke. from what i observe, MIDI is a different format and not directly attached to DVD. I believe u need to burn a midi file that has a corresponding *.dat file for the lyrics of the song to come up with this Midi Karaoke. i havent look at the files inside the CD. One thing also, base on my inquiry, i learned that you can buy the CD on its service center(that's for promac)...
  3. teduy

    teduy New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    where can i find KARAVISIOn software?

    Where can i find Software for KARAVISION? i already have the disc but it cannot be played in my PC.
  4. nguyen3cmjsc

    nguyen3cmjsc New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    i'm trying to discover midi cd structure. Any body have freetime to help me???
  5. Luiza*Cunha

    Luiza*Cunha Charmed Trainee with Goa'uld inside! Staff Member Super Mod

    Messages:
    4,476
    Likes Received:
    18
    Trophy Points:
    38
    :confused:
    What is it that you want to do? Can you be more specific?
  6. watsup91

    watsup91 New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    hello,
    i own a LG maestro karaoke player with 3000 songs cd,but i can't update the cd coz the supplier never got any new cd for the player so i tried to use a hyundai karaoke cd on my player, but it just read the background of the kara cd when i played it.it only detects the vcd files! i guess the cd's are just compatible with its own brand of players....

    some enlightenment...

    WATSUP91
  7. blackina

    blackina New Member

    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    1
    making a cd karaoke for midi karaoke players

    To all who wants to know about making the cd for karaoke players...
    It is impossible for all of you to know unless you are working with their company...
    they have their own programs in making their cd titles and even the karaoke players....
    *Hint...
    ---The midi files are used and being compressed as a different format...
    ---After converting it will also be compressed as *<dataname>*.dat
    ---And another process is combining of video and compressed mididata and a lot more

    "The only thing you can do if you want to include your favorite songs..."
    Call them and request the song you want to be included for their next release of cd...
    Hope it helps...
    "Have a Goog Day!!! :)
  8. jnatran

    jnatran New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Okay, can you provide some more hints, like what compression method do they use (zlib?), how is the .dat file layout.

    I noticed that there is also a .idx file containing 4-bytes indexes into the .dat file and each entry corresponding to a song number. But then, the indexing does not index the entire .dat file, in fact the distance between each indexes are typically less than 1K bytes. This mean a small part of the compressed song is chopped up and put to the front of the .dat file and there must be a pointer to where in the .dat file the remaining part of the song will reside.

    Knowing how the .dat file is layout and what compression method used one could write a program to extract the midi file out into normal midi file format. Well unless they also use encryption, then it will be much harder to decrypt it :(
  9. crossvixio

    crossvixio New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    hello,

    is anybody can tell me what software to extract *.dat file ? i have hyundai digital player disc (30.000) song in 1 dvd, inside there are 3 files
    Audio Ts
    Mid
    Video Ts

    inside Mid there are 3 *dat files : one is for font, the other two is 565 mb(also dat files), and 1 gb (dat file), i guess the song is inside 1 gb dat files,
    is anybody know how to extract that one file, and convert it to ordinary midi files ?

    im sorry for the bad english,

    Thankyou verry much for your help in advance
  10. blackina

    blackina New Member

    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    1
    create and decrypt midi cd

    Sorry Can't Tell about those above mentioned...
    I Already gave the hints...
    Just check for youself on how to decrypt those files and convert it again to midi file...
    And in making MIDI DISC, "its impossible for all of you to make one"
    There are programs in making MIDI DISC that cannot be shared...
    Only the MIDI Player Provider/Sales have those software...
    ---Just make a request and they will include it for you---
    Or Just PM me...
  11. hdtr6639

    hdtr6639 New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    I have also a Karaoke Huyndai 99 player. I discovered that some people can manage to extract the midi file (lyrics included ) from the CD. So I tried to do it myself. Currently I can manage to extract these files and convert the lyrics to unicode and make a standard karaoke files (.kar) for PC based player. . I will explain the method I use to extract the midi files. On one hand, I hope this will help you to understand your Midi CD and on another hand I can receive your feedbacks in order to complete the updating procedure, i.e. creating your favorite CD from standard midi karaoke files and play on your Midi Karaoke player since the midi sound quality on these player is excellent. Sadly to say, if we cannot add new songs to the CD, we can throw away these players after one year because the update from the manufacturer is too late and not up to date. In the worst case like my players, the CD is not produced any more.

    In my case, this is a CAVS Midi Karaoke containing 749 songs in Vietnamese (including 100 english songs as well). It is running on the Huyndai CDO-99.

    The structure of the CD:

    This is a VCD with Midi extension

    EXT/MUSIC-1.DAT

    After dumping this file, i discovered this file contains all midi karaoke songs.

    STRUCTURE OF THE MIDI FILE

    This is a dump of the first blocks

    55 aa 96 zz zz 00 00 xx XX XX XX XX xx XX XX XX XX...
    where zz zz is the number of songs
    XX XX XX XX is the offset to the 1rst Song Entry ...

    The file is divided into 2 parts:

    PART 1: Number of Songs, Offset to the Song Entries

    55 aa 96 xx xx 00 00 xx XX XX XX XX xx XX XX XX XX...

    3 dummy bytes 55aa96
    1rst block containing the number N of songs (2 bytes),followed by N*Blocks of 5 bytes containing the offsets to the song entries. Please note that this number can be guessed easily if you know the number of songs on you CD.

    Each offset is a block of 5 bytes :
    The offset is 5 bytes xx XX XX XX XX where XX XX XX XX is a the offset, you must read this value in reverse order, for example, ae 0e 00 00 -> 00000eae
    (for internal strorage, unsigned double integer)


    PART 2: Song Entries - The rest is the whole songs

    Size of Lyrics Part
    Song Name
    Writer Name
    Singer Name
    Lyrics
    Midi
    Size of midi
    Midi part

    Each song, accessed by the offset in the part 1, is represented by a variable length block as follows :
    4 first bytes : Offset to the midi or Size of Lyrics Part
    Header (fixed length)
    A string like V 8 x x x where V is the language (C=chinese,V=Vietnamese...)
    x x x is the Song Number
    ...
    Song Name : ....
    Writer Name : ...
    Singer Name : ...

    Lyrics Part : variable length - block of 4 bytes
    Midi Part : variable length

    Lyrics Part : Block of 4 bytes for a character :
    1 rst byte : lyric (from 0-7F is ascii, 7F-FF proprietary font)
    1 byte : like CR/LF - 0d or 00
    2 bytes : number of ticks (where the lyric must be played in the song)
    for example
    48 00 1e 03 : H character
    1e03 = 031e in unsigned integer,
    In term of midi, it will be 798 Meta Text "H"


    Midi Part : variable length

    The 4 first bytes is the Size of Midi Part, follewed by a blocks of 5 bytes that represent the MIDI event.

    Please note that with this way of encoding MIDI events, it takes less space than the standard Midi event, but you can easily transform them to the standard Midi with a rudimentary knowledge of Midi such as Trunk,MThd,MTrk.....

    MIDI EVENTS :

    Block of 5 bytes :
    xx xx xx xx xx
    1rst byte = Delay Time
    2nd byte = Delay Time when the velocity will be 0, this one will generate another midi event with velocity 0 (see above).
    3nd byte = Event, for example 9x : Note On for channel x+1 , cx for PrCh, bx for Par, ex for Pitch Bend....
    4 th byte= Note
    5 th byte= Velocity

    For example

    MIDI EVENT=00ffc011ff -> In term of midi : 0 PrCh ch=1 p=17
    Hint : It's versy to guess the begin of the midi, it always starts with the string 00 ff c
    MIDI EVENT=0001b0075a-> In term of midi : 0 Par ch=1 c=7 v=90
    MIDI EVENT=9008011f64-> In term of midi, there are two events
    144 On ch=2 n=31 v=100
    152 On ch=2 n=31 v=0

    Please note that all useless information are not reprersented in this structure :
    MTrk
    Divison
    Tempo
    Note Off ...

    and there is only one track.

    From these information, you can build a standard karaoke midi file as follows

    MFile 1 3 30 ---> Format 1 3 tracks Division 30
    MTrk
    0 Meta TrkName "Soft Karaoke"
    0 Meta Text "@KMIDI KARAOKE FILE"
    0 Meta Text "@V1.0"
    0 Meta Text "@Iemail info@aaa.org"
    0 Meta TrkEnd
    TrkEnd
    MTrk <---------------------------Meta Track for lyrics
    0 Meta TrkName "Words"
    ...
    798 Meta Text "/H"
    804 Meta Text "\xC3\xB5"
    810 Meta Text "i"
    816 Meta Text " "
    816 Meta Text "\xC4\x91"---> For Unicode
    830 Meta Text "\xC3\xA1


    TrkEnd
    Then the following track for music track

    MTrk
    0 TimeSig 4/4 24 8
    0 Tempo 500000
    0 Meta 0x21 00
    0 PrCh ch=1 p=17
    0 PrCh ch=6 p=61
    0 Par ch=1 c=7 v=90
    0 Par ch=4 c=121 v=0
    144 On ch=2 n=31 v=100 <----------------
    144 On ch=10 n=50 v=108
    144 On ch=4 n=64 v=106
    149 On ch=10 n=50 v=0 <-----byte 2----- velocity 0
    be careful, the delay order must be respected.
    ....
    13920 On ch=10 n=35 v=95
    13920 On ch=3 n=72 v=111
    13922 On ch=6 n=79 v=110
    13966 On ch=3 n=64 v=0
    13966 On ch=3 n=67 v=0
    13967 On ch=6 n=79 v=0
    13968 On ch=2 n=36 v=0
    13968 On ch=3 n=72 v=0
    13968 Meta TrkEnd
    TrkEnd

    Please note that this is a MF2T/T2MF text format for a good understanding of midi format.
    You can easily convert this format to Midi format (format 1)... You can even convert the proprietary font to the standard Unicode (for vietnamese, chinese, korean...)

    Conclusions :

    1) In my case, all information related to the Karaoke Midi Songs are ENTIRELY located in the MUSIC-1.DAT FILE

    2) All information such as the size, length or offset must be read in the reverse order (internal storage - unsigned integer 2 bytes, unsigned double integer 4 bytes)
    For example the offset ae0e0000 must be read as 00000eae
    This is why the file seems to be unreadable!!!

    3) In order to extract these files and converted to standard karaoke midi files, all above information is sufficient. A simple C program or a language script like perl (very powerful for pattern maching thanks to the regular expression) can be written to extract and convert these files. For debugging, I convert everything to MF2T/T2MF text format and using these tools to convert again to Standard Karaoke Midi file .kar) . Please note that there is no loss of quality because they are midi event!!

    4) To be completed :

    - Missing midi information : Division,Tempo. However, there is no problem because i discovered that all midi songs use the same value, i.e. Tempo 500000, Division 30.
    - Some obscur bytes at the beginning of the file, it seems that they are constant for CAVS product :
    3 first starting bytes : 55 aa 96. I found this string from all CD/DVD produced by CAVS. But once again there is no problem for midi extraction.

    5) The structure is slightly different from a manufacturer to anothe one. For example, I have 3 Karaoke Midi Players :
    - CAVS CDO-98
    - Hyundai 99
    - DVD Midi Player

    Even the CDs are produced by CAVS, you cannot play the CAVS CD from CDO-98 on Hyundai 99 and vice versa.
    For the DVD Midi Player (new generation), it seems that the data structure is more complex because of advanced features such as classificaton by theme...but amazingly it seems that it is not even compressed because I find the same midi pattern!!!. Using the same script with a little modification about the starting block, i can extract all midi files. Obviously, the generation of .DAT file is more complex than the CD. In general, in order to understand the content of these CD/DVDs, you must find a song that you know the midi/lyrics content (english song should be easier than asian songs due to the proproetary fonts) and perform some pattern matching.. You can look for some particular information such as file size (offset), song number but be careful, you must use the reverse order. In any case, all players need to have access to a table containing the offset to the songs, the song information, the lyric part and the midi part.


    6) Next step : Customize your own favorite CD/DVD

    Due to lack of time, i didn't write the script to generate the DAT file when new songs are added. I will try to add a new song and generate a new MUSIC-1.DAT file. Knowing the structure of this file, the same C program or the perl script can easily perform the job. Probably I can create a VCD and insert manually this file to the EXT directory.

    7) Last step : knowing the structure of the CD, you can develop a PC based application to play directly the CD with video background like the player with remote control. Moreover, if we can collect information about other manufacturers, this application can be developped as a generic player for all known structures, i.e, you can use it to play Midi CD/DVD from CAVS, Hyundai,LG...if the corresponding Midi structure is known. Otherwise, you can simply use your own Midi Player such as VanBasco to play the standard midi files.

    If you need more details about the structure of my Midi Cds/Dvds I will explain more in the next post.

    Hope this can help you and I will be delighted if you can contribute to this work.
    Last edited: Sep 25, 2006
  12. cheaptrick

    cheaptrick New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Here is what I did to make a Karaoke Video CD using KAR and freeware.

    1. Van Basco karaoke player full screen mode
    2. Cam Studio 2.0 target the van basco window. Create Hot Key for START RECORDING and STOP RECORDING
    . ( I used Alt-Home for Start, and Alt-End for Stop, and these don't conflict with Van basco player )
    3. Start the MIDI / KAR in Van Basco -- hit Start recording "hot key"
    4. use Stop "hot key" when file is finished playing
    5. Save As AVI. Give it a file name etc


    Burn the AVI's to a VCD. I use Nero Express.

    IMPORTANT:
    Make sure your soundcard plays midi OK ( not cheezy sounds )
    Make sure you set your audio record source to MIXED OUTPUT or Synth

    Bonus Features
    1. You can even sing some backing vocals while KAR is playing and you are capturing audio and video.
    2. Why not play REAL guitar instead of relying on MIDI cheesy guitar sounds
  13. fidelio

    fidelio New Member

    Messages:
    180
    Likes Received:
    0
    Trophy Points:
    0
    Hey, that's a neat trick, the Cam Studio method!
    I tried it, and liked what I got.
    Thanks for the Karaoke tip of the year!!!
  14. darkhorses

    darkhorses New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Hi HDTR6639,
    I tried what you've posted but got a problem in converting the hexdump to text file because i am no good in computer languages (c, pearl etc.) maybe you can send me the tool you had made so that i can manage to create my own karaokemidi and play it through my pc...

    here's my e-mail address: midifiler@yahoo.com

    THANK YOU! :)
  15. bigBOSS97

    bigBOSS97 Member

    Messages:
    166
    Likes Received:
    0
    Trophy Points:
    16
    Great job, I'm highly interested in this topic. But can you please post the scripts you have created? I don't want to re-invent the wheel. If you feel that this is not the right place for attaching scripts you can do that in my forum:
    http://launch.groups.yahoo.com/group/softkaraoke

    When I have enough information I will surely contribute to your project. I've done some perl scripts for decoding before:
    http://launch.groups.yahoo.com/group/softkaraoke/files/RealOrche Special/

    thanks
    Phuoc Can HUA


  16. woid

    woid New Member

    Messages:
    12
    Likes Received:
    0
    Trophy Points:
    0
    Thanks for the information about the Midi disc layout. I have recently bougth a Midi Dvd Karaoke Player from California Electronics (Vietnamese). I have experience in C and Perl programming and would be happy to contribute to your scripts. Can you please make you code available or send to me.

    Br,
    woid77@gmail.com
  17. bigBOSS97

    bigBOSS97 Member

    Messages:
    166
    Likes Received:
    0
    Trophy Points:
    16
    I've got a DVD of California Electronics as well. Unforunately, the layout is quite different. There are some HOTDOG*.DAT files. Is that your case?

    I only found one file contains all the song titles and I guess that the largest file (~520MB) contains the song information. But I haven't been able to identify a single sequence of any (English) word. It's very likely that the text is stored in unicode. Eventhough, we should be able to read ASCII characters in unicode.

    I've noticed there are structures in 5 bytes block. It could be (simply guessing) 2 bytes for the event time and 2 bytes for a word (Chinese) in unicode. The last byte is 0x00. Since each Chinese word has exactly one sound it's very rare that 2 words are sung in one note.

    That's all I know, I didn't come very far :-(

    Btw, I'm using HxD (http://mh-nexus.de/hxd/) which can handle large file really well.

    Phuoc Can HUA

  18. woid

    woid New Member

    Messages:
    12
    Likes Received:
    0
    Trophy Points:
    0
    I have the same layout on my DVD disc with the HOTDOG*.dat files. I have the Vol 8 dvd disc from California.

    I have a friend that have an old VCD California player. So first I borrow his disc and tried to decipher it. It seems to be from CAVS but the layout is a little bit different. The first couple of bytes look like this:

    55 AA 96 2B 4A 01 00 00 B4 28 01 00 9F 8F 01 00 BE EC 01 00 AE 76 02 00 54 DA 02 00 B4 76 03 00

    It has the same first 3 bytes, and the next 2 bytes may very well be the number of songs, but then it is a little bit different. I would guess that starting from the 8th byte there are addresses to the beginning of each song in blocks of 4 bytes. I haven't had time to anlyse this futher though.

    Looking at my dvd I find that the format seems to be different, at least the header part. Starting from the 0x200th byte I see something that look like a relative address table in blocks of 4 bytes (different endian though from the vcd disc).

    I also tried to search the dvd for the pattern 00 ff c as sugested above. I get many hits. Could it be the beginning of the midi parts of the songs? I am not so familiar with midi so I havnt had time to decode it yet. A sample look like this:

    00 FF C0 47 FF
    00 FF C5 3D FF
    00 FF C9 00 FF
    00 FF C4 1A FF
    00 FF C3 30 FF
    00 FF C2 30 FF
    00 FF C1 6A FF
    00 01 B0 07 5E
    00 01 B5 07 61
    00 01 B9 07 64
    00 01 B4 07 58
    00 01 B3 07 5F
    00 01 B2 07 6D
    00 01 B1 07 6B
    00 01 B0 0A 40
    00 01 B5 0A 56
    00 01 B9 0A 40
    00 01 B4 0A 40
    00 01 B3 0A 32
    00 01 B2 0A 49
    00 01 B1 0A 38
    29 01 B9 5B 56
    00 01 09 30 63
    1D 01 09 2D 63
    1B 01 09 2B 63
    0E 01 09 31 6C
    01 01 B5 5B 6A
    00 01 B4 5B 50
    00 01 B2 5B 7B

    That is all I had time for right now.

    Later!
  19. bigBOSS97

    bigBOSS97 Member

    Messages:
    166
    Likes Received:
    0
    Trophy Points:
    16
    From the VCD, can you decipher the lyrics as described by hdtr6639 ?

    It´s hard to tell about the MIDI data. MIDI is a protocol.
    So, it does not specify how the data supposed to be stored.

    It´s better to find lyrics first. At least we can decipher text visually.
    To make sense of MIDI data, we need to send a long sequence of MIDI events
    to a MIDI device and listen to it.

    Any other suggestions? Will let you know when I´ve got any progress.

    Phuoc Can HUA


  20. woid

    woid New Member

    Messages:
    12
    Likes Received:
    0
    Trophy Points:
    0
    I think it would more easy to try to find the midi part first. Since it is protocol it ha a well defined syntax which can be verified by a script. For instance, the sample a sent previous countains the 5 byte block:
    29 01 B9 5B 56
    where
    B9 means midi event "Ch10 Control mode change"
    5B means "Undefined on/off"
    56 means ???. Should be either "0=off" or "127=on"!

    Does this mean that this is not a valid midi event and therefor this is not the beginning of a midi part? I dont have so much experience with the midi protocol so I might be wrong about this. Where can I find a description of the midi protocol on the internet?

    I think the lyrics will more difficult to find. If I understand the original post correctly the lyrics is stored letter by letter in data blocks. I will try to decipher the lyric from the VCD later.

Share This Page