Behringer Wave SysEx - PPG vs Behringer Wave (mit Excel etc) vergleichen

ok, wer schreibt Hermann an und fragt nach einer Doku oder einem C-Headerfile, falls vorhanden? Am Besten jemand, der ihn persönlich kennt.
 
Die haben aber doch wahrscheinlich auch nur die Doku, die beim V8.x dabei ist und @qwave bereits vorliegt?
 
Ich will Euch aber meine Arbeit von gestern nicht vorenthalten. Es gibt jetzt ein zweites Tab, in das ein beliebiges SysExFile mit 20.000 Byte Länge importiert werden kann. Darin befindet sich zz. Cellos (👍) PPG-Datei zur Analyse. Es können auch längere Dateien importiert werden aber nur die Zeilen bis 20.000 werden geleert, da es bei 100.000 einen Überlauf gab, und die PPG-Datei kleiner als 20.000 ist.
 

Anhänge

  • BWavePatchData 20250220.zip
    333,4 KB · Aufrufe: 0
Im PPG Wave steckt eine Motorola CPU, daher gilt: Big Endian ist die Reihenfolge der Wahl.
Dann müssten die Werte aber zu finden sein. D.h. wenn im Bave-File 36 steht, müsste im PPG-File doch eigentlich 06 03 zu finden sein. Ist aber leider nicht so. Oder, wenn die Bytes zusammengehalten werden, müsste bei PPG 36 00 zu finden sein. Ist aber auch nicht der Fall.
 
Dann müssten die Werte aber zu finden sein. D.h. wenn im Bave-File 36 steht, müsste im PPG-File doch eigentlich 06 03 zu finden sein. Ist aber leider nicht so. Oder, wenn die Bytes zusammengehalten werden, müsste bei PPG 36 00 zu finden sein. Ist aber auch nicht der Fall.
Sind seine Zahlenangaben in Hexadezimal oder Decimal? In beiden stimmt es so nicht.
x36 (hexadezimal) = 54 (dezimal) = 0011 0110

Also die oberen vier Bits sind die ersten vier = (0000)0011 = x03
Die unteren Bits = (0000)0110 = x06
Bei Big Endian also erst x03 dann x06 im PPG Sysex.

Wenn du die 36 dezimal meinst, so wäre das binär = 0010 0100
Also (0000)0010 = x02
und (0000)0100 = x04
Also mit Big Endian als x02 x04 im PPG Sysex.

(0000) sind die für 4 Bit nicht genutzten Stellen im 8 Byte Sysex (das nur die unteren 7 Bit tatsächlich mit Daten nutzen kann, da das oberste Bit für MIDI wie xF0, xF7 und andere Satus Bytes reserviert ist).
 
Tip: Wer öfter Binärdaten am Mac analysieren muß, dem empfehle ich "Synalize It!" (gibts auch als Pro-Version). Dort kann man sogenannte Grammatiken definieren, also Strukturen definieren, die dann vom Programm erkannt werden. Sehr nützliches Tool. Hätte ich gerne in den 90ern gehbt, als ich regelmäßig Sysexdaten reverse engineeren mußte.
 
Dann müssten die Werte aber zu finden sein. D.h. wenn im Bave-File 36 steht, müsste im PPG-File doch eigentlich 06 03 zu finden sein. Ist aber leider nicht so. Oder, wenn die Bytes zusammengehalten werden, müsste bei PPG 36 00 zu finden sein. Ist aber auch nicht der Fall.

Schnellschuss Idee:
Evtl bei zB Wert 36 auch mal nach 72 suchen, nicht das hier auch die 0-127 ausgeschöpft werden.
 
Sind seine Zahlenangaben in Hexadezimal oder Decimal? In beiden stimmt es so nicht.
x36 (hexadezimal) = 54 (dezimal) = 0011 0110

Also die oberen vier Bits sind die ersten vier = (0000)0011 = x03
Die unteren Bits = (0000)0110 = x06
Bei Big Endian also erst x03 dann x06 im PPG Sysex.

Wenn du die 36 dezimal meinst, so wäre das binär = 0010 0100
Also (0000)0010 = x02
und (0000)0100 = x04
Also mit Big Endian als x02 x04 im PPG Sysex.

(0000) sind die für 4 Bit nicht genutzten Stellen im 8 Byte Sysex (das nur die unteren 7 Bit tatsächlich mit Daten nutzen kann, da das oberste Bit für MIDI wie xF0, xF7 und andere Satus Bytes reserviert ist).
Ich meine die 36 natürlich hexadezimal, da das die .syx-Datei binär ist also erst in Dezimalwerte umgewandelt werden muss.

Wenn, wie oben beschrieben, bei Big Endian die höherwertigen Bits am Schluss stehen, muss also bei 0x36 die 3 am Schluss stehen, also 06 03.
 
Ich meine die 36 natürlich hexadezimal, da das die .syx-Datei binär ist also erst in Dezimalwerte umgewandelt werden muss.

Wenn, wie oben beschrieben, bei Big Endian die höherwertigen Bits am Schluss stehen, muss also bei 0x36 die 3 am Schluss stehen, also 06 03.
Falsch.
Wikipedia schrieb:
  • Beim big-endian (wörtlich etwa: „großendigen“, siehe auch Abschnitt „Etymologie“) Format wird das höchstwertige Byte zuerst gespeichert, d. h. an der kleinsten Speicheradresse. Allgemein bedeutet der Begriff, dass bei zusammengesetzten Daten die höchstwertige (höchstrangige) Komponente zuerst genannt wird, wie etwa bei der deutschen Schreibweise der Uhrzeit: Stunde:Minute:Sekunde.
  • Beim little-endian (wörtlich etwa: „kleinendigen“) Format wird dagegen das niedrigstwertige Byte an der Anfangsadresse gespeichert, also die niedrigstwertige Komponente zuerst genannt, wie bei der herkömmlichen deutschen Datumsschreibweise: Tag.Monat.Jahr.
 
Die englische Beschreibung weiter oben sagt genau das Gegenteil. Ist aber auch vollkommen egal, da weder so oder so eine Übereinstimmung gefunden wird.
Welche meinst du? Oben bei Wikipedia? Oder das hier?
Beim letzteren wird bei Nibble HL auch erst die höherwertigeren Bits geschrieben. Deshalb HL = high to low.
Mit "ist egal" werden wir das bestimmt nicht knacken.
 
Es ist aber wirklich egal. Ich habe, wie weiter oben bereits erwähnt, beide Reihenfolgen versucht und sogar Abstände zwischen den beiden zugelassen, bei denen aus 0x36 z.B. 03 00 06 oder 06 00 00 03 wurde. Nichts hat zum Erfolg geführt. Ich habe weiterhin den Verdacht, dass die Werte bitweise positionsabhängig gespeichert sind, was nur mit einer Anleitung der Herren Palm oder Seib zu lösen wäre.
 
Ohne Doku oder zumindest einen „Hint“ von Herrmann ist es wirklich die Suche nach der Stecknadel im Heuhaufen.

Noch eine absolute Laienidee (Habe von den Nibbels, HLs etc null Ahnung)

Wie verhält sich das File wenn man einen einzigen Parameter im PPG um Wert 1 erhöht. Das bringt natürlich noch keine brauchbare Lösung für das Gesamte, man hätte zumindest mal eine Position wo evtl was „passiert“.
 
Wenn viele PPG Parameter nur in 1 Bit sind (beim Behringer teilweise mit mehr Möglichkeiten erweitert), warum ist dann für 105 zu speichernde Werte der Data-Teil eines einzelnen Sounds (mit A & B) insgesamt 204 Bytes lang?

1 Bit Parameter des PPG waves 2.2/2.3:
Tuning Page: MO, MS, EO, ES
Digital Page: UW, MW, MF, ML, TW, TF, TL, TM, VF, VL
= 14 Parameter mit 1 Bit

Und die Attack-Werte des Envelopes 1 und 2 sind z.B. nur in 4 Bit Auflösung gespeichert (mögliche gespeicherte Werte: 0, 4, 8, 16, …).
Andere Parameter haben nur 2 Bit nötig (SW), andere 3 Bit (BD, BI, KW, KF, KL)

Vielleicht hat man die einzelnen Bits der ganzen Daten einfach irgendwie hintereinander mit 4 Bits per Sysex Byte als Dump? Hinten vielleicht mit Nullen aufgefüllt (sind ja auch bisher immer viele Nullen bei einzelnen PPG wave Sysex Dumps).

Und dann stellt sich die Frage, ob ich bei den Dumps den gespeicherten Klang oder den Edit Buffer Inhalt bekomme?
Ich habe bei meinen Keyboards leider keinen PC Arbeitsplatz in der Nähe (arbeite ohne DAWs). Und den PPG wave werde ich nicht transportieren.

Da die Länge des Bank Dumps des PPG waves pro Klang offensichtlich nur halb so viel Bytes braucht, ist da wirklich ein hoher Palm Konfuzius Faktor™ enthalten.

Ich werde daher in der Zeit, statt im dunklen zu stochern, lieber Sounds abtippen.
111110111
 
Wenn viele PPG Parameter nur in 1 Bit sind (beim Behringer teilweise mit mehr Möglichkeiten erweitert), warum ist dann für 105 zu speichernde Werte der Data-Teil eines einzelnen Sounds (mit A & B) insgesamt 204 Bytes lang?
Eine berechtigte Frage.

Möglicherweise enthält jedes Byte oder auch jeder Parameter ein Prüfbit. Wobei Prüfbits bei Ein-Bit-Parametern denkbar unsinnig sind.
 
Es ist und bleibt HEXerei!

Wenn viele PPG Parameter nur in 1 Bit sind (beim Behringer teilweise mit mehr Möglichkeiten erweitert), warum ist dann für 105 zu speichernde Werte der Data-Teil eines einzelnen Sounds (mit A & B) insgesamt 204 Bytes lang?

Als ob die Daten in einer Matrix kodiert werden um (Speicher-)Platz zu sparen.

So in etwa wie ein QR-Code.

Natürlich nur Laien VT meinerseits.
 
Und den gesparten Platz dann doppelt zu verschwenden, indem man jeweils vier Bit nicht nutzt.
Moment. Das mit den Nibbles gilt nur für den Datentransfer über MIDI, weil sonst nur 7bit gingen. Intern wird das Ganze natürlich 8 oder 16 Bit gespeichert. Nibbleweiser Transfer ist natürlich so ziemlich das ineffizienteste, aber einfacher zu implementieren als alle anderen Methoden, die ich weiter vorne anhand eines Screenshots aus dem SoundDiver Handbuch aufgezeigt habe.
Sequential zB nutzt zumindest beim Pro2 Packed 7 Bit, ich weiß nur nimmer ob das Byte mit den höchstwertigen Bits als erstes oder letztes gesendet wird, das müßte ich in meiner SoundDiver Adaption nachschauen, ist aber eher unwichtig.
Dieses Format wird übrigens beim Behringer Wave ebenfalls benutzt, und zwar zum Transfer von Wavetables.
 
Zuletzt bearbeitet:
8 Bit Werte, aus Parametern die max. 6 Bit sind, in 4 Bit Werten des Sysex zu Packen ist schon irgendwie komisch.
Und warum hat man überhaupt die Parameter auf max. 6 Bit begrenzt, wenn man dadurch auch im RAM des PPG waves nichts sparen würde?
 


News

Zurück
Oben