Close

Speaking Parseltongue

A project log for Hacking Yamaha Disklavier Floppies

An effort to decipher MIDI disks from the 1990s

tom-nardiTom Nardi 04/13/2019 at 03:000 Comments

I now have multiple copies of both disk formats, and have started to map out and parse the different parts of each one. This basically boiled down to finding the byte sequences that signify the start of the Table of Contents, and then stepping through the file byte-by-byte to get the appropriate info. Not only are the Smart PianoSoft and PianoSoft Plus totally different from each other, but as it turns out, not even all the Smart PianoSoft disks appear to be the same.

For example, on PianoSoft Plus disks the album name is a 64 byte long ASCII string starting at 0x2ED0. Easy, no problem. But for Smart PianoSoft disks, I have to search for the first appearance of "P.PLAYER" in the file (it's different for each disk), seek forward by 30 bytes, and then finally read the 60 byte title.

With some fiddling, and perhaps more trial and error than I'd like to admit, I now have a Python script that can reliably determine the disk type as well as print a listing of the tracks on the disk:

I'm very happy with the progress made so far, but of course the end goal is getting the actual music off these disks. For that, I should only need to search for the start and end bytes of the different file types which may be on the disks, and then copy those out to external files. I could probably get cute and even give them appropriate track titles, but for my own sanity I'll just dump them to track numbers.

Discussions