M
madias
long time no see - Klicke Reset Passwort
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
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