Lire un CD+MIDI, le CD qui contient du MIDI caché

Dans les CD bizarres, le CD+MIDI est un cas un peu particulier : c’est rare, obscure, et compliqué à lire. Et ça fait un moment que j’essaye d’en trouver un, donc je me suis un peu acharné pour le lire. Démonstration.

TL;DR : Le CD intègre une partition MIDI cachée dans les sous-canaux.

Quand j’ai fait des recherches sur le CD+G, il y a un moment, j’étais tombé sur le CD+MIDI, une norme qui avait même son logo. Mais impossible de trouver un exemple de CD compatible (ou de lecteur). Régulièrement, je faisais quelques recherches, sans trop de succès. Puis en me promenant sur la chaîne du CD+G Museum, je suis tombé sur un exemple de CD+G avec du MIDI et des explications sur la lecture. J’apprenais donc que le Commodore CDTV (un Amiga équipé d’un lecteur de CD-ROM à placer sous la TV) pouvait lire les CD+MIDI. Quelques recherches plus tard, je tombais sur une page indiquant qu’un CD de Mozart contenait du MIDI. CD que je me suis procuré.

Le logo

Le CD de Mozart

Première étape, le CD. Dans un coffret avec trois CD, on trouve une disquette contenant un truc dont j’essayerais de reparler : un programme en HyperCard (pour Mac, donc) capable de commander un lecteur de LaserDisc avec une version vidéo de l’opéra en question (La flûte enchantée). Les CD contiennent trois choses : une première piste de données avec un programme en HyperCard (encore) pour Mac à utiliser en même temps que la musique, des pistes avec du CD+G (des images, donc) et des pistes avec du CD+MIDI, donc une partition MIDI (oui, c’est étonnant).

CD-ROm, CD+G, CD+MIDI


Quelques informations sur le MIDI

Les sous-canaux des CD

Un CD Audio contient de la musique mais aussi ce qu’on nomme des sous-canaux. Ils servent à la base à la gestion des pistes mais peuvent contenir des données comme des images (CD+G), du texte (CD-Text) ou, ici, du MIDI. La quantité de données reste assez faible : chaque secteur d’un CD (il y en a 75 par secondes) contient 2 352 octets d’audio et 96 octets de données diverses. Dans ces 96 octets, 64 octets servent aux sous-canaux, et dans les 64 octets en question, 16 servent à la signalisation. Il reste donc 48 octets de données utilisables par secteur. Les données en question portent le nom de sous-canaux R à W (8 octets chacun). Sur une seconde de musique, on peut donc récupérer 75 x 48 octets, soit 3,6 ko/s. Pas grand chose, donc.

L’émulation du Commodore CDTV

Première étape, l’émulation du Commodore CDTV. Bon, rien de compliqué : WinUAE le fait sans problèmes. C’était plus simple que de trouver un vrai Commodore CDTV. Dans l’interface du CDTV, il faut utiliser les touches de fonctions en façade pour accéder au contenu, ce qui m’a pris un peu la tête : par défaut, elles sont mappées dans l’émulateur sur les touches multimédia du clavier. Malheureusement, j’ai tenté en machine virtuelle et VMWare Fusion ne relier pas les touches de mon clavier (physique) à sa version émulée. Après quelques recherches, j’ai finalement trouvé comment changer la configuration pour pouvoir utiliser une autre touche. Et je suis tombé sur un os : le CD de Mozart ne se lançait pas en CD+G dans l’émulateur, alors qu’un autre CD+G, lui, fonctionnait.

N’activez pas le Turbo


Les touches 1 à 3 mappées sur les commandes physiques


L’interface


L’interface en lecture de CD+G/CD+MIDI

Un problème de piste de données

J’ai dû chercher un moment avant de comprendre le problème : mon CD contient des données en piste 1 et les Amiga n’aiment pas ça (CD32 ou CDTV, d’ailleurs). La solution un peu bourrine a été de refaire le CD sans la piste de données. Je vous passe les détails, mais j’ai donc fait une image du CD avec CloneCD – capable d’extraire les sous-canaux, contrairement à pas mal d’autres logiciels -, modifié l’image pour indiquer que la première piste contient de l’audio et pas des données, et regravé le CD. Cette version du CD contient donc une première piste qui éclate les oreilles (ceux qui ont essayé de lire un CD de PlayStation sur un lecteur de CD Audio comprendront) au lieu d’une piste de données. Et du coup… ça fonctionne.

Les images en CD+G

Sortir le MIDI

Maintenant, récupérer le MIDI. Bonne nouvelle, l’émulateur prend en charge le MIDI, donc j’ai juste redirigé le flux vers un adaptateur USB vers MIDI relié directement à un Roland MT-32. Et ça fonctionne. Maintenant, et la question est revenue sur Twitter, comment savoir si le synthétiseur interprète correctement les données ? Aucune idée. Le livret du CD n’indique pas quel synthétiseur utiliser, juste qu’il faut passer par un lecteur CD+G avec une sortie MIDI. Le CD date d’avant la standardisation du General MIDI (1991) donc je peux supposer qu’il n’utilise pas cette norme. J’ai utilisé le Roland MT-32 parce que j’en avais un sous la main et parce que c’était un appareil courant dans les années 80.

Les réglages MIDI : sortie sur l’adaptateur USB


L’entrée reliée à un autre logiciel pour récupérer le tout

La piste MIDI n’est pas équivalente au contenu du CD, il s’agit plus d’une sorte d’accompagnement aux pistes. On peut donc écouter les pistes sans le MIDI, et je suppose que la majorité des acheteurs n’a jamais écouté les pistes en question. Je vous propose quelques exemples un peu bidouillé. Je n’ai pas de table de mixage, donc j’ai enregistré les deux sorties avec deux cartes son et mixé de façon bête et méchante : l’audio du CD d’un côté, l’audio MIDI de l’autre, ça permet d’entendre ce que le MIDI ajoute en jouant sur la balance. Dans un setup standard, l’idée est de renvoyer la sortie du synthétiseur MIDI vers l’entrée du lecteur pour mixer CD et MIDI. Ici, le MIDI est joué par le Roland MT-32.

J’ai aussi sauvé un fichier MIDI. Il a été simplement remonté pour mettre quatre “morceaux” à la suite.

Je résume : une copie du CD bidouillée, un émulateur de CDTV dans une machine virtuelle, un synthétiseur physique, et hop : je peux lire mon CD+MIDI. Je suppose qu’il est aussi parfaitement possible de récupérer directement les données dans les sous-canaux : CloneCD m’a fourni un fichier .sub d’une trentaine de Mo avec tous les sous-canaux du CD (images des premières pistes comprises). Si quelqu’un a une idée de comment interpréter les données, ça m’intéresse, et je suppose que la structure est la même que pour le CD+G.

En tout cas, ce CD+MIDI m’aura donné beaucoup de mal, mais je suis content : le truc ne m’aura pas résisté.