codec K7 vers WAV exelvision

Pour pouvoir tester en live diverses choses (dont la routine de musique), il faut pouvoir alimenter cette bestiole avec des K7 audio (ou relire sur PC un fichier audio qui servira de magnéto digital).

Le seul outil existant n’étant pas diffusé, il faudra en coder un nouveau. Le but est de créer un codeur K7 vers WAV. Mais pour bien comprendre le format, il faut aussi savoir faire l’inverse, la première étape est donc un codeur wav vers K7.

La sortie K7 de l’exelvision est une porte TTL avec un filtrage sommaire, les signaux enregistrés sont donc carrés comme pour pratiquement tous les 8bits.

En regardant de plus près la forme des signaux, on retrouve rapidement le codage, à savoir 2 périodes (4 phases) à 1.25KHz ou 2 périodes à 2.5Khz. Chacun code respectivement le 1 et le 0 (ou l’inverse… faut que je me relise)…

En début de bloc un grand nombre de 1 et de 0 s’alternent, pour assurer la synchronisation. puis un octet à 0x70 puis le type de bloc et enfin les adresses de fin et de début pour l’implantation mémoire.

 Le décodeur

On utilise un algo relativement classique pour effectuer cette opération, on détermine la fréquence de 4 phases successives en comptant le nombre de sample entre chaque passage par le « 0 » (en fait le presque 127 puisque le décodeur est limité à 8bits non signé (et 44100Hz)). La valeur est choisie légerement au dessus pour ne pas se déclencher avec un bruit de fond lors des phases de silence.

Le principe est alors d’attendre la synchro, puis l’octet à 0x70 (en fait ce sont les 2 bits consécutifs à 1 qui sont détectés). Puis on lit des octets, dans lesquels on retrouve les nom, type et adresses pour déterminer la taille.

L’outil reprend la structure de l’outil wav2k5 pour thomson MO5  d’ E. Forler aka Fool.

Les sources sont au milieu des sources de exl100, plus précisement ici : http://exl100.cvs.sourceforge.net/viewvc/exl100/exl100_cvs/tools/exlwav2k7/main.c?revision=1.1&view=markup

C’est un utilitaire en mode ligne de commande, à utiliser avec comme argument le nom du fichier wav (qui doit donc être en 8bits à 44100Hz (au besoin utiliser un éditeur de sample pour resampler, sans utiliser de filtre)).

 Version binaire pour windows ici

Le codeur

C’est encore l’outil d’Edouard qui est dérivé en un outil pour exl. Pas besoin de réinventer la roue, pas besoin non plus de traiter 10000 formats différents, les outils de travail du son sont là pour cela (ex: le minimaliste wavosaur).

Le codeur est brut (conçu pour recoder les fichiers .k7), avec une temporisation entre chaque bloc de 2 secondes par défaut. (5 sec en début de K7)

Le code source est ici http://exl100.cvs.sourceforge.net/viewvc/exl100/exl100_cvs/tools/exlk72wav/main.c?revision=1.2&view=markup

Version binaire EXLK72WAV.EXE pour win32.