TonE schrieb:
Ich frage mich, wieso z.B. Spectralis nicht genauso seine Firmware updaten will/kann/sollte? C Programm schreiben, .hex generieren, in .syx umwandeln, senden, fertig. Geht nicht? Ging nicht? Sollte nicht gehen?
Das ist nicht so einfach wie Du Dir das vorstellst. Bei MIDI darfst Du immer nur 7 der 8 Bits für normale Daten benutzen, alle MIDI-Bytes mit gesetztem MSB (Bit 7, also >128) sind Befehls-oder Statusbytes. Somit mußt Du die Firmware beim Umwandeln von Bin/Hex nach syx auch so wandeln, daß jedes Datenbyte nur 7 Bits hat. Dazu gibt's verschiedene Methoden, und jeder Hersteller hat da eine Andere genommen. Siehe entsprechender Abschnitt im Sounddiver Programming Manual auf deepsonic.ch.
Eine der Methoden ist zB daß immer von 7 Bytes das MSB oder LSB rausrotiert und in einem weiteren Byte gespeichert wird, sodaß 8 MIDI-Bytes den Inhalt von 7 Speicherbytes übertragen. Eine Andere überträgt die Bytes als Nibbles, also Hälften, auch da kann man HL oder LH senden.
Diese Bitschiebereien müssen auf der Gegenseite, also vom Firmwarelader in der Firmware bzw dem Bootblock des Flashroms, wieder rückgängig gemacht werden. Außerdem braucht's ja auch einen Zusatzaufwand, denn ein Firmwaeupdate ist ja, wenn über MIDI ladbar, eine Sysex-Datei also mit Header und auch Prüfsumme, wenn nicht sogar Handshake. Auch das muß alles in der Firmware codiert werden bzw gar im normal minimalistischen Bootblock, dessen Speicher oft sehr begrenzt ist.
Wenn man diesen Weg umgehen kann, zB bei vorhandenen Massenspeicher oder USB, dann tut man das auch, es spart einem nämlich dieses Verpacken der Bytes zum Versand über MIDI und auch damit einhergehende Timingprobleme, weil solche Dateien ja von den Meisten via Sequenzer in den Synth geladen werden und nicht mit einem Dump-Tool, welches keine Abspielgeschwindigkeit kennt.