Habe das WSA1 Keyboard (V2) neu und hab mich gleich an Sysex probiert. Motiviert durch die Fragen in diesem Thread.
Anfangs war der Synth bockig und hat nicht mitgespielt, aber jetzt geht vieles.
- Grundsätzlich:
Sysex Befehle mit Address/Size sind vergleichbar mit Roland Sysex.
Ob man einen Bulk Dump oder Individual Data (=Parameter) erhält hängt nicht vom Kommando ab sondern von der Adresse.
- Dumps:
Alles ab 0x20 00 00 sind die 4 Bulk Dumps, die man auch vom WSA1 aus senden kann. (Sound, Panel/MIDI, Combination, Seq)
Es reicht schon aus ein einzelnes Byte anzufordern und man erhält trotzdem den kompletten Dump. Beim Schreiben muss auch der komplette Dump geschickt werden.
Bei Dumps Versucht der Synth ein Handshake auszuhandeln und wartet auf eine Reaktion der Gegenstelle.
Nach 3 Versuchen mit F0 50 21 7E F7 gibt der Synth auf und schickt den Dump ohne Handshake dann doch.
Abgeschlossen wird das Ganze mit F0 50 27 7E F7 und F0 50 28 7E F7.
Um Handshake muss man sich nicht weiter kümmern. Ich konnte den kompletten(!) Dump mit MIDI-OX unter Windows 10 aufzeichnen und wieder an den Synth zurückschicken.
MIDI-OX mach dabei nach jedem Sysex-Befehl eine Pause von 60ms (einstellbar). Denke die Pause ist wichtig.
F0 50 29 7E F7 ist übrigens ERR, eine Fehlermeldung. Es hat bei dem vorhergehenden Befehl etwas nicht gestimmt. Vermutlich falsche Adresse, Size oder Checksumme.
Der Sound Dump scheint genau den Aufbau der ".TM" Floppy Datei zu haben. Eine TM-Datei lässt sich in Sysex umwandeln. Gut wenn das Floppy-Laufwerk kaputt ist.
Combinations, Sequences und Panel/MIDI scheinen komplizierter zu sein.
- Individual Data / Parameter:
(hier gibt es gar keine Handshakes - nur bei Dumps s.o.)
Ab 0x10 00 00 findet man den aktuell gewählten Sound. Die Daten sind im Reference Manual genau beschrieben.
Den aktuellen Sound kann man per MIDI Bank/Program change auswählen.
Während beim kompletten Dump ab 0x20 00 00 nur die beiden User Bänke enthalten sind,
kann man per MIDI Bank/Program change auch die ROM/Extended Sounds auswählen und in den Bereich ab 0x10 00 00 einblenden lassen.
Das ist ein übliches Verfahren das ich auch von anderen Synths kenne.
(Ich empfehle nach einem MIDI Program Change 30 ms zu warten, bevor auf die Daten zugegriffen wird!)
Das gleiche ab 0x18 00 00 für Drum Sets.
Und ab 0x00 10 00 für Combinations.
Ab 0x00 00 00 hat man Zugriff auf grundsätzliche Einstellungen ("System").
Man kann einzelne Parameter oder auch einen Bereich von Parametern lesen und schreiben. Praktisch für einen Soundeditor.
Aber wenn man nur einen Teil eines Parameters anspricht gibts ne Fehlermeldung.
z.B. ein Byte von einem 2Byte Integer
Änderungen die man geschrieben hat befinden sich erstmal im aktuellen temporären Speicher.
Ähnlich wie wenn man am Synth einen Sound editiert.
Der muss anschließend extra im Synth gespeichert werden wenn er nach dem Ausschalten permanent ehalten bleiben soll.
Das Speichern von einzelnen Sounds geht über Sysex. Verrate ich in einer weiteren Folge
Einer Software-Soundverwaltung steht nichts im Wege.
Beispiel:
Name des aktuellen Sounds erfragen.
Adresse= 0x10 00 00; Size= 0x00 00 10
F0 50 2B 04 00 11 10 00 00 00 00 10 00 50 F7
Erklärung...
F0 SOX Start des Sysex Befehls
50 Technics Manufacturer ID; für alles hinter dieser ID bis zum EOX ist alleine Technics verantwortlich; Bytes dürfen aber nach MIDI Standard nur 7 Bit enthalten (max 0x7F)
2B Command ID: DRQ Data Request
04 PC: "WSA"; Technics Product Category; 0x7E is used for Status/ERR Sysexs
00 0=WSA1; 1=WSA1R; scheint egal zu sein; aber WSA1R hat keinen Sequencer
11 Version Number; habe noch nie einen anderen Wert als 0x11 gesehen
10 00 00 Adresse BigEndian MSB first; nur 7Bit pro Byte; maximal 0x7F
00 00 10 Size BigEndian MSB first; 0x10 = 16 Bytes - Namen können 16 ASCII Zeichen lang sein; als Antwort kommen aber 32 Bytes weil dort ein 8Bit Byte in 2x4 Bit (=Nibble) aufgeteilt wird
00 Continue ID; 0= Sysex Block ist komplett, keine weiteren Daten in einem Continue Block
50 Checksumme
F7 EOX
Antwort des Synths...
F0 50 2C 04 00 11 10 00 00 00 00 10 02 00 04 03 07 02 07 09 07 03 07 04 06 01 06 0C 02 00 05 03 07 00 06 01 06 03 06 05 02 00 02 00 00 4F F7
Erklärung...
F0 50 s.o.
2C Command ID: ITR Individual Data
04 s.o.
00 s.o. hier kann bei Euch auch eine 0x01 stehen wenn der Synth ein Rack Gerät ist
11 10 00 00 00 00 10 s.o.
(Daten start 32 4Bit Bytes)
02 00 1. Zeichen in 2x4 Bit: 0x20 + 0x00 = 0x20 = ASCII " "
04 03 2. Zeichen in 2x4 Bit: 0x40 + 0x03 = 0x43 = ASCII "C"
07 02 07 09 07 03 07 04 06 01 06 0C 02 00 05 03 07 00 06 01 06 03 06 05 02 00 02 00 alle 32 Bytes zusammen: " Crystal Space "
(Daten ende)
00 Continue ID; s.o.
4F Checksumme
F7 EOX
Soweit für den Anfang.
Die 7Bit/21/Adressen werde ich in einem späteren Post noch genauer erklären.
P.S.:
Mein WSA1 scheint von sich aus manchmal zum nächsten Sound weiterzuschalten. Kennt jemand dieses Problem?