SysEx Dump decodieren

Hallo,
zur Zeit befasse ich mich mit den Preset-Sounds meines Korg Minilogues. Dabei würde mich bei einigen Sounds sehr interessieren, mit welchen Einstellungen am Synthesizer man diese erreicht. Einige der Sounds klingen für meine Ohren sehr neu und interessant und ich würde gerne verstehen, wie genau man diese Klänge baut.

Da ich leider keine Patch-Sheets oder Ähnliches dazu gefunden habe, habe ich die Funktion des Minilogues benutzt, einen SysEx-Dump an meinen Computer zu schicken. In diesem Dump müssten die Informationen zu dem Programm, die ich suche enthalten sein, oder?

Der Dump ist eine Folge von Bytes (Hex-Notation, siehe unten), die zumindest kein einfacher ASCII Text sind. Meine Frage: Wie kann ich vorgehen, um aus diesem Dump klar leserliche Informationen zu extrahieren? (Also z.B. soetwas wie Wave=Saw, Cutoff=30%, ...).
Oder gibt es eine andere Möglichkeit, an die zu den Preset-Sounds gehörenden Einstellungen zu kommen?

Ich hoffe, Ihr könnt mir helfen. Vielen Dank!

Hier der SysEx Dump eines Preset-Sounds:
Code:
F0 42 30 00 01 2C 40 00 50 52 4F 47 50 6F 6C 00 79 4C 6F 67 75 65 00 00 00 00 00 00 00 00 78 62 00 05 00 14 7D 39 7F 0A 00 7F 00 3C 00 00 00 02 00 7F 00 25 1D 6F 28 3D 45 00 7F 7F 7F 7F 00 38 00 7D 3A 11 22 5B 30 5D 03 30 02 01 3E 00 40 7B 7C 48 0F 4C 7F 7F 77 78 00 5C 4D 79 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 1F 7F 7F 7F 7F 7F 53 45 04 51 44 68 03 02 10 00 78 36 03 00 7F 7F 7F 7F 00 03 31 03 20 01 15 00 7E 00 7F 7F 7F 7F 7F 7F 00 00 00 37 33 30 3A 42 78 4E 4C 63 48 48 48 48 3C 79 02 7F 7F 06 07 00 00 00 37 3C 33 30 48 50 3C 4E 5A 48 48 48 48 02 1E 00 7F 79 07 07 00 00 00 3C 38 33 30 4C 4E 46 1E 54 48 48 48 48 00 00 0F 79 59 07 07 00 00 38 00 3A 33 30 57 57 40 42 4F 48 48 48 48 00 00 59 07 3F 07 07 00 00 33 2C 40 38 3A 32 34 3B 3B 48 67 48 48 48 00 00 3F 28 03 07 07 00 00 33 2C 38 60 3C 37 46 40 50 48 48 73 48 48 00 00 28 15 07 01 07 00 00 37 38 33 2C 70 48 63 57 40 48 48 48 79 48 00 02 15 07 07 07 00 00 00 37 3A 33 2C 48 78 57 40 4E 48 48 48 48 3C 02 27 07 07 07 07 00 00 00 38 3A 29 30 40 4E 3C 34 36 48 48 48 48 27 1E 45 07 07 57 57 00 00 00 30 29 38 3C 3B 37 30 5E 42 48 48 48 48 45 0C 0F 07 0E 57 57 00 00 38 00 30 29 35 2F 3D 3A 3D 7F 48 48 48 48 0C 2D 0E 07 25 57 57 00 00 29 3A 40 37 30 3A 2F 3A 40 48 7F 48 48 48 2D 56 25 3C 03 57 57 00 00 2B 32 37 60 3A 33 2C 2F 40 48 48 7F 48 48 56 7A 3C 55 57 01 57 00 00 33 38 2B 3C 70 2D 2C 34 3A 48 48 48 7F 48 7A 7F 55 79 57 57 00 00 00 2D 40 38 3B 1E 78 33 22 34 48 48 48 48 3F 7F 51 79 7F 57 57 00 00
 

Mr. Roboto

positiv eingestellt
Du benötigst die Midi Spezifikation für Sounddumps. Die kann Dir nur Korg geben. Evtl. steht sie ja im Handbuch bzw. als seperates Dokument zur Verfügung?

Ansonsten schau Dir soch einfach an, wie die Paramter für Deine Lieblingssounds gesetzt wurden. Wo ist das Problem? Geht das beim Minilogue nicht?
 
Mr. Roboto schrieb:
Du benötigst die Midi Spezifikation für Sounddumps. Die kann Dir nur Korg geben. Evtl. steht sie ja im Handbuch bzw. als seperates Dokument zur Verfügung?
Hm okay, auf der Korg Seite habe ich eine txt-Datei dazu gefunden (siehe Anhang). Ist das die Spezifikation, die du gemeint hast? Leider habe ich Schwierigkeiten, die Datei zu kapieren. Weiß jemand, wie man z.B. Einträge, wie diesen zu versehen hat:
Code:
+--------+---------+-------------+-----------------------------------------+
| Status | Second  |   Third     |           Description                   |
| [Hex]  | [H] [D] | [H]   [D]   |                                         |
+--------+---------+-------------+-----------------------------------------+
|   8n   | kk (kk) | 40    (64)  | Note Off                              *1|
Mr. Roboto schrieb:
Ansonsten schau Dir soch einfach an, wie die Paramter für Deine Lieblingssounds gesetzt wurden. Wo ist das Problem? Geht das beim Minilogue nicht?
Ja genau, das würde ich gerne tun. Aber wie meinst du, soll das gehn? Also direkt am Minilogue ins Menü gehen die Einstellungen zu dem Sound suchen? Dort finde ich leider nur Parameter die man nicht über Regler am Synthesizer, sondern nur im Menü festlegen kann, wie "Sequencer Step Length" etc. Cutoff, Wellenform, LFO usw. finde ich dort nicht.
 

Anhänge

Mr. Roboto

positiv eingestellt
Ja, das ist das Dokument. Die Dumpspezifikation ist dort ca. ab der Mitte aufgelistet.

Korg bringt bestimmt bald einen Editor raus. Da kannst Du dann die Details sehen.
 

swissdoc

back on duty
Das sieht nach einem Dump gemäss dieser Spec aus:
Code:
(4) CURRENT PROGRAM DATA DUMP                                    R/T
+----------------+--------------------------------------------------+
|     Byte       |             Description                          |
+----------------+--------------------------------------------------+
| F0,42,3g,      | EXCLUSIVE HEADER                                 |
|    00,01,2c    |                                                  |
| 0100 0000 (40) | CURRENT PROGRAM DATA DUMP              40H       |
| 0ddd dddd (dd) | Data                                  (NOTE 1,3) |
|     :          |  :                                               |
| 1111 0111 (F7) | EOX                                              |
+----------------+--------------------------------------------------+
Hier sind dann die einzelnen Werte erklärt:
Code:
TABLE 2 : PROGRAM PARAMETER
+-------+-------+---------+---------------------------------------------+
| Offset|  Bit  |  Range  |  Description                                |
+-------+-------+---------+---------------------------------------------+
|  0~3  |       |  ASCII  |  'PROG'                                     |
+-------+-------+---------+---------------------------------------------+
|  4~15 |       |  ASCII  |  PROGRAM NAME [12]                          |
+-------+-------+---------+---------------------------------------------+
| 16~19 |       |         |  Reserved                                   |
+-------+-------+---------+---------------------------------------------+
|  20   |  0~7  |         |  VCO 1 PITCH (bit2~9)     	   *note P1,P2 |
+-------+-------+---------+---------------------------------------------+
etc...
 

microbug

*****
Immerhin haben die kein packed Data Format genommen, den Programmnamen solltest Du im Klartext lesen können.
Und sie haben eine Detail-Spec rausgebracht, das ist nicht selbstverständlich. Gehe aber davon aus, daß da Fehler drinstecken, ich hab in den ganzen Jahren seit 1991/92 kaum eine solche Dokumentation erlebt, die keinen Fehler enthielt.
 

swissdoc

back on duty
microbug schrieb:
Immerhin haben die kein packed Data Format genommen, den Programmnamen solltest Du im Klartext lesen können.
Und sie haben eine Detail-Spec rausgebracht, das ist nicht selbstverständlich. Gehe aber davon aus, daß da Fehler drinstecken, ich hab in den ganzen Jahren seit 1991/92 kaum eine solche Dokumentation erlebt, die keinen Fehler enthielt.
Nun, man verpackt aber lustig 10 Bit in 8 Bit hier und 2 Bit dort:

Code:
*note P1
These parameters have the range 0~1023.
The upper 8bits (b2~9) and lower 2bits (b0~1) are stored separately.
Below is a table for each parameter.
+----------------------+-------------+------------------------+
|                      | offset for  | offset for lower 2bits |
|  Description         | upper 8bits +-----------+------------+
|                      |             |    Byte   |    Bit     |
+----------------------+-------------+-----------+------------+
| VCO 1 PITCH          |     20      |     52    |    0~1     |
| VCO 1 SHAPE          |     21      |     52    |    2~3     |
| VCO 2 PITCH          |     22      |     53    |    0~1     |
| VCO 2 SHAPE          |     23      |     53    |    2~3     |
| CROSS MOD DEPTH      |     24      |     54    |    0~1     |
| VCO 2 PITCH EG INT   |     25      |     54    |    2~3     |
| VCO 1 LEVEL          |     26      |     54    |    4~5     |
| VCO 2 LEVEL          |     27      |     54    |    6~7     |
| NOISE LEVEL          |     28      |     55    |    2~3     |
| CUTOFF               |     29      |     55    |    4~5     |
| RESONANCE            |     30      |     55    |    6~7     |
| CUTOFF EG INT        |     31      |     56    |    0~1     |
| AMP EG ATTACK        |     34      |     57    |    0~1     |
| AMP EG DECAY         |     35      |     57    |    2~3     |
| AMP EG SUSTAIN       |     36      |     57    |    4~5     |
| AMP EG RELEASE       |     37      |     57    |    6~7     |
| AMP ATTACK           |     38      |     58    |    0~1     |
| AMP DECAY            |     39      |     58    |    2~3     |
| AMP SUSTAIN          |     40      |     58    |    4~5     |
| AMP RELEASE          |     41      |     59    |    6~7     |
| LFO RATE             |     42      |     60    |    0~1     |
| LFO INT              |     43      |     60    |    2~3     |
| DELAY HI PASS CUTOFF |     49      |     62    |    2~3     |
| DELAY TIME           |     50      |     62    |    4~5     |
| DELAY FEEDBACK       |     51      |     62    |    6~7     |
| VOICE MODE DEPTH     |     70      |     64    |    4~5     |
+----------------------+-------------+-----------+------------+
Und es gibt die allseits beliebte 8x7 in 7x8 Packerei:

Code:
NOTE 3: The dump data conversion

   DATA ( 1Set = 8bit x 7Byte )
   b7     ~      b0   b7     ~      b0   b7   ~~    b0   b7     ~      b0
   +-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+  +-+-+-~~-+-+-+  +-+-+-+-+-+-+-+-+
   | | | | | | | | |  | | | | | | | | |  | | |    | | |  | | | | | | | | |
   +-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+  +-+-+-~~-+-+-+  +-+-+-+-+-+-+-+-+
         7n+0               7n+1          7n+2 ~~ 7n+5         7n+6

    MIDI DATA ( 1Set = 7bit x 8Byte )
      b7b7b7b7b7b7b7     b6    ~     b0     b6 ~~    b0     b6    ~     b0
   +-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+  +-+-+-~~-+-+-+  +-+-+-+-+-+-+-+-+
   |0| | | | | | | |  |0| | | | | | | |  |0| |    | | |  |0| | | | | | | |
   +-+-+-+-+-+-+-+-+  +-+-+-+-+-+-+-+-+  +-+-+-~~-+-+-+  +-+-+-+-+-+-+-+-+
   7n+6,5,4,3,2,1,0         7n+0          7n+1 ~~ 7n+5         7n+6
Das Format ist nichts für Anfänger...
 

microbug

*****
Oh, also doch. Das 8x7 in 7x8 müßte Sounddiver können, dem hatte nur das der GEM S2/S3 gefehlt, welches genau umgekehrt zu den Anderen funktioniert.
Nee, das ist nichts für Anfänger.
 
Okay, vielen Dank für eure Antworten. Die Dumps selbst zu decodieren scheint dann wohl doch zu viel Aufwand zu sein.
Mr. Roboto schrieb:
Korg bringt bestimmt bald einen Editor raus. Da kannst Du dann die Details sehen.
Das wäre natürlich super. Ist denn sowas in Planung bzw. weiß man, wie lange Korg dafür noch braucht?
 
Weiss jemand wie der Moog Voyager Sysex verarbeitet?
Wenn man einen Single Dump macht ist der Patchname aus den Rawdaten nicht gleich zu lesen.
Der Voyager scheint also auch die Daten zwischen 7 und 8 Bits per Byte zu konvertieren.
Ich suche nach einem Algorithmus, der das macht.

Sysex Implementierung ist hier: http://www.moogmusic.de/SysEx.pdf
 

swissdoc

back on duty
solitud schrieb:
Weiss jemand wie der Moog Voyager Sysex verarbeitet?
Wenn man einen Single Dump macht ist der Patchname aus den Rawdaten nicht gleich zu lesen.
Der Voyager scheint also auch die Daten zwischen 7 und 8 Bits per Byte zu konvertieren.
Ich suche nach einem Algorithmus, der das macht.

Sysex Implementierung ist hier: http://www.moogmusic.de/SysEx.pdf
Krass. Man bekommt ein Bitfeld, in dem die einzelnen Bits der verschiedenen Parameter wild verstreut sind. Das ist in Sachen Übertragung sehr schnell, weil maximal gepackt. Zum Auslesen mittels Software dann aber eher übel, weil die Struktur fragmentiert ist.

Man müsste das wohl in ein Bitfeld einlesen und dann Parameter für Parameter, Bit für Bit zusammensuchen.
 

qwave

KnopfVerDreher
Alle Bits der Daten unter der jeweiligen Auslassung des jeweils höchsten Bits eines jedes Bytes hintereinander schreiben und dann "Scheibchenweise" die gewünschten Daten rauslesen.
 
Gast-Stgt-Stammtisch schrieb:
Alle Bits der Daten unter der jeweiligen Auslassung des jeweils höchsten Bits eines jedes Bytes hintereinander schreiben und dann "Scheibchenweise" die gewünschten Daten rauslesen.
Ja, danke, so geht das wohl. Ist dann immer noch leichter gesagt als getan, wenn man ungelernter Amateurprogrammier ist.
Da muss man >> bitshiften & so verrückte Sachen machen, | :)
Aber ich glaube ich krieg das hin..
 

qwave

KnopfVerDreher
Ich bin da auch nur Laie. Aber ich habe mal vor Jahren ein Tool geschieben das die Namen aus einer Sysex Datei lesen konnte und editieren ließ.
Benutzte RealBasic für Mac.
Bin gerade dabei meine Sachen von Mac Carbon auf Cocoa umzustellen.
 

swissdoc

back on duty
Ist leider nicht immer so geordnet, wie Till das beschreibt. Einige Werte sind recht verwürfelt. Was die Entwickler da wohl geraucht haben?
 
swissdoc schrieb:
Ist leider nicht immer so geordnet, wie Till das beschreibt. Einige Werte sind recht verwürfelt. Was die Entwickler da wohl geraucht haben?
Zumindest für die Patchnamen funktioniert es. Da musst du die Tabellen diagonal von rechts oben nach links unten lesen. Wegen der Konvertierung von 8 zu 7 Bit verschiebt sich alles.
 

microbug

*****
swissdoc schrieb:
Krass. Man bekommt ein Bitfeld, in dem die einzelnen Bits der verschiedenen Parameter wild verstreut sind. Das ist in Sachen Übertragung sehr schnell, weil maximal gepackt. Zum Auslesen mittels Software dann aber eher übel, weil die Struktur fragmentiert ist.

Man müsste das wohl in ein Bitfeld einlesen und dann Parameter für Parameter, Bit für Bit zusammensuchen.
Ist das nicht genau die Art und Weise, wie SMS codiert werden?
 

swissdoc

back on duty
Nun bei einer SMS sind im einfachsten Fall 160 x 7 Bit Zeichen in 140 x 8 Bit gepackt. Gemäss GSM 03.38 gibt es drei verschiedene Möglichkeiten, Texte und Daten in einer GSM-Kurznachricht mit einer maximalen Nutzdatenmenge von 1120 Bit zu kodieren:

7 Bit, 160 Zeichen (7 Bit/Zeichen × 160 Zeichen = 1.120 Bit)
8 Bit, 140 Zeichen (8 Bit/Zeichen × 140 Zeichen = 1.120 Bit)
16 Bit, 70 Zeichen (16 Bit/Zeichen × 70 Zeichen = 1.120 Bit)

OK, ich hatte das falsch gelesen, Moog reiht die Bit doch geordnet aneinander an, entweder sind es 8 Bit oder 16 Bit Werte und es gibt auch Werte, die 4 und 4 Bit nutzen. Die ersten 4 Byte sind aber als reine 7 Bit zu interpretieren. Dann ist es wohl etwas leichter machbar, als ich dachte.

Ist also eher anders herum als beim SMS 7 Bit Mode, es werden also immer 7 x 8 Bit in 8 x 7 Bit gesteckt. Und es ist anders sortiert, als beim Minilogue weiter oben.
 


News

Oben