Waldorf Wavetable sysex Definition

Hallo,

da ich gerade einen MCU basierenden Synthesizer entwickle, der auch Standard Waldorf Wavetables lesen soll, hätte ich ein paar Fragen bzgl. der Waldorf Sysexdefinition:
Waldorf Wavetable Format
Soweit ich herausfinden konnte, ist das Protokoll (Blofeld) wie folgt:
Index Label Value Description
-----------------------------------------------------------
0 EXC F0h Start of SysEx
1 IDW 3Eh Waldorf Music ID
2 IDE 13h Blofeld ID
3 DEV Device ID
4 IDM 12h WTBD (Wavetable Dump)
5 WT 50h..76h Wavetable number
6 WN 00h..3Fh Wave number
7 00h Format
8-391 WDATA 00h..7Fh Data: triplets with little-endian signed 21-byte numbers
392-405 NAME 20h..7Fh Wavetable name (ASCII)
406 00h Reserved
407 00h Reserved
408 CHK WDATA & 7Fh Checksum (add bytes 7..407 together)
409 EOX F7h End of SysEx
-----------------------------------------------------------
Mir ist so ziemlich alles klar, bis auf die WDATA Sektion: "21-byte numbers" meint wohl 21 Bit Tiefe (3x7) oder? Irgendwie kann ich logisch mit einer 21 Bittiefe nicht viel anfangen, außer dass es sich "halt genau so ausgeht".
Als Code würde ich es so interpretieren:
currentdata=(((daten[c+a+2])+(daten[c+a+1]<<7) + (daten[c+a] <<14))>>BITTIEFE) ;
dabei ist <BITTIEFE> die gewünschte Bittiefe (bei mir 16 Bit, also wäre BITTIEFE =5),
<c> die Wavetable Page (0...63) und
<a> der Wavetable pointer (0...127)

Sehe ich das so richtig?

Danke!
Liebe Grüße
Matthias
 

swissdoc

back on duty
Zuerst einmal:
:hallo:
madias schrieb:
8-391 WDATA 00h..7Fh Data: triplets with little-endian signed 21-byte number
Es muss wohl heissen: "triplets with little-endian signed 21-bit number". Da Midi nur den Transfer von 7-bit Werten erlaubt, werden je 3 davon zu einem 21-bit Wert. Eben "triplets".

Schau Dir auch noch das Microwave V2.0 Sysex Manual an (gibt es auf der Waldorf Page). Dort wird das Thema Wavetable weiter erklärt. Das SysEx-Format ist allerdings anders als beim Blofeld. Prinzip ist aber gleich.
 


Neueste Beiträge

News

Oben