Playing a CD+MIDI, the CD that contains hidden MIDI

Talking of weird CDs, the CD+MIDI is a special case: it’s rare, obscure, and complicated to read. And it’s been a while since I’ve been trying to find one, so it’s been a little hard to read. Demonstration.

When I did some research on the CD+G a while ago, I came across the CD+MIDI, a standard that even had its own logo. But it was impossible to find a compatible CD (or player). Regularly, I did some research, without much success. One day, just hanging on the CD+G Museum Channel, I came across an example of CD+G with MIDI, featuring explanations on how to read it. I learned that the Commodore CDTV (an Amiga equipped with a CD-ROM drive to place under the TV) could read CD+MIDI. Some searches later, I came across a page indicating that a Mozart CD contained MIDI. CD that I got.

The logo

Mozart’s CD

First step, the CD. In a three CDs box, you can find a disk containing one thing I would try to talk in another post (in french) : a HyperCard program (for Mac) able to control a LaserDisc player with a video version of the opera concerned (The Magic Flute). The CDs contain three things: a data track with a HyperCard program (again) for Mac to be used with the music at the same time, tracks with CD+G (images) and tracks with CD+MIDI, that is to say a MIDI partition (yes, it’s amazing).


Some information on MIDI

The CDs subchannels

An Audio CD contains music but also what we call subchannels. They are basically used for managing tracks but can also contain data such as images (CD+G), text (CD-Text) or, like here, MIDI. The amount of data remains quite low: each sector of a CD (there are 75 per second) contains 2 352 bytes of audio and 96 bytes of various data. In these 96 bytes, 64 bytes are used for subchannels, and in the 64 bytes in question, 16 are used for signaling. Remain 48 bytes of usable data per sector. These are called subchannels R to W (8 bytes each). On a second of music, we can recover 75 x 48 bytes, or 3.6 kB/s. Not much, then.

The Commodore CDTV emulation

First step, the Commodore CDTV emulation. Well, nothing complicated: WinUAE does it easy peasy. It was easier than finding a real Commodore CDTV. In the interface of the CDTV, it is necessary to use the function keys on the front to access the content, which was a little laborious: by default, they are mapped in the emulator on the multimedia keys of the keyboard. Unfortunately, I tried in virtual machine and VMWare Fusion does not connect the keys of my (physical) keyboard to its emulated version. After some research, I finally found how to change the configuration to use another key. And then came the failure: the Mozart CD could not be launched on CD+G in the emulator, while another random CD+G was working.

Do not activate the Turbo

Keys 1 to 3 mapped to physical commands

The interface

The interface playing CD+G / CD+MIDI

A problem of data track

It took a while before I came up with the problem: my CD contains data on track 1 and the Amiga do not like that (CD32 or CDTV). The not-so-delicate solution was to remake the CD without the data track. I made an image of the CD with CloneCD – able to extract subchannels, unlike a lot of other softwares – then changed the image to indicate that the first track contained audio (and not data) and re-wrote the CD. This version of the CD contains a first track that bursts ears (those who have tried to play a PlayStation CD on an Audio CD player will understand) instead of a data track. And suddenly… it works.

CD+G images

Take out the MIDI

Now, let’s recover the MIDI. Good news, the emulator supports MIDI, so I just redirected the stream to a USB to MIDI adapter connected directly to a Roland MT-32. And it works. Now, and the question came back on Twitter, how do you know if the synthesizer correctly interprets the data? No idea. The CD booklet does not indicate which synthesizer to use, just that you have to go through a CD+G player with a MIDI output. The CD was released before the standardization of General MIDI (1991) so I can assume that it does not use this standard. I used the Roland MT-32 because I had one available and because it was a common device in the 80s.

MIDI settings: output on the USB adapter

The entry connected to another software to recover everything

The MIDI track is not equivalent to the contents of the CD, it is more of a kind of accompaniment to the tracks. We can then listen to the tracks without MIDI, and I assume that the majority of customers have never listened to the tracks in question. Here are a few tampered examples. I do not have a mix table, so I recorded both outputs with two audio cards and mixed them up: the CD audio on one side, the MIDI audio on the other, lets you hear what the MIDI adds by playing on the scale. In a standard setup, the idea is to send the output of the MIDI synthesizer on the input of the player to mix CD and MID. Here, MIDI is played by the Roland MT-32.

I also saved a MIDI file. He was simply reassembled to put four tracks in a row.

I summarize: a hacked copy of the CD, a CDTV emulator in a virtual machine, a physical synthesizer, and presto! I can read my CD+MIDI. I suppose that it is also possible to directly recover the data in the subchannels: CloneCD provided me a .sub file of about thirty MB containing all the CD subchannels (images of the first tracks included) . If anyone knows how to interpret the data, I’m interested, and I guess the structure is the same as for the CD+G.

In any case, this CD+MIDI gave me a lot of trouble, but I’m cool: the thing did not resist me.