La brodeuse Toyota Expert SP-510 (1986) peut lire des motifs à broder à partir de cassettes audio. L'encodage semble être identique à celui utilisé dans les Datassettes de Commodore. Une cassette peut contenir plusieurs designs et chaque design est constitué de plusieurs sections.
Une cassette de démonstration comprenant 8 motifs (1/letter A; 2/Dancing; 3/ Bouquet; 4/ Pigeon; 5/ Butterfly; 6/ Pisces; 7/ Rosetted ribbon; 8/ Star) a été lue avec un lecteur de cassette USB (Super USB Cassette Capture / Cassette Converter vendu chez Aldi (?)) que Linux voit comme un micro USB (alsamixer(1) et gnome-sound-recorder(1)) et convertie en fichier .mp3. La compression du fichier ne semble pas poser problème (sinon, on pourrait le sauver en .flac). On peut alors analyser le contenu de l'enregistrement avec audacity(1), par exemple.
Via Audacity.Tools->Frequency_analysis, sur un bout d'enregistrement, on peut deviner qu'il s'agit d'un encodage AFSK avec du signal à 1000 et 2000 Hz.
L'ensemble de la bande montre les huit motifs séparés par des silences de 30 secondes.
Un motif particulier étant composé de plusieurs sections. Par exemple, le cinquième motif, qui est un papillon (Butterfly) assez complexe, est composé de nombreuses sections séparées par des silences de 2.5 secondes.
En zoomant encore sur une section, on voit apparaître le signal. Ici, au moment ou une succession de cycles à 1000 Hertz utile à la synchronisation fait place aux données proprement dites.
En zoomant davantage, on voit apparaître l'échantillonnage à 44100 Hertz (standard des CD audio) des signaux à 1000 et 2000 Hertz.
Certaines sections affichent des signaux différents qui ne semble contenir aucune information particulière, c'est juste du remplissage.
Il faut noter que Audacity affiche des valeurs entre +1 et -1 mais quand on transforme le fichier .mp3 en .wav (16 bits signés à 44100 échantillons par seconde) pour pouvoir l'analyser numériquement facilement, on obtient des valeurs entre 32767 et -32768. Avec le module audio de Octave(1), on peut également lire les fichiers audio (en .flac, .wav et .ogg mais pas .mp3).
octave> [y,fs]=audioread('file.ogg'); octave> x = [0:length(y)-1]; octave> plot(x,y) # or octave> fd = fopen('file.wav', 'rb'); octave> y = fread(fd, 'int16'); # ?!should skip the header... octave> x = [0:length(y)-1]; octave> plot(x,y)
mpg123(1) permet de convertir les différents formats. Typiquement, pour lire des données .wav (sans header) en entrée standard de 'mon_programme', on va faire :
linux$ mpg123 -s -0 mp3/butterfly.mp3 | ./mon_programme
Après, il ne restera plus qu'à essayer de deviner ce que contiennent ces sections... Ce n'est pas gagné parce que, curieusement, il existe une masse de formats de fichier propriétaires pour brodeuses alors qu'on aurait pu penser qu'il aurait existé une espèce de G-Code universel ne contenant que des dx et dy entre les piqures. Pour se faire une idée de la matière, on peut analyser comment Ink/Stich, un module pour Inkscape(1), approche le sujet.