Suche informationen zu Midi Sysex und co.

citric acid

||||||||||
Ich bin auf der Suche nach möglichst Deutscher Lektüre\ Links etc zuThema Sysex.
Es geht mir darum mal endlich tiefer in die Programmierung von Midi Templates für div Synths zu steigen.
Das was ich bis dato gemacht habe war nur Midi CC basierend , weil es so simpel ist.

Ich habe div. Apps wie Touch Osc und co. hier kann man prima mit arbeiten. Wenn man weiss wovon da genau gesprochen wird. :selfhammer:

Klar CC und co ist kein Problem, spätestens mit div SysEx Strings hört es aber auf. Meine unwissenheit nerft mich. In den Manuals zu den Apps steht natürlich nur was zu den apps und keine Basics.

Ich habe hier soviele tolle synths die sysEx verstehen und wo ich gerne div. Templates basteln möchte. Diese natürlich auch weiter gebe , wie ich das für den MAQ auch schon gemacht habe.


Wikipedia war bei meiner suche leider nicht sehr hilfreich.

Bin über Links und Tips sehr dankbar. Wenn Ihr mir helfen könnt / wollt, bin ich sehr froh.
 
Sysex ist ja total simpel. Es kommt ja auf die Details an und die sind nun einmal für jeden Hersteller und für jedes Gerät unterschiedlich. Du brauchst also für jedes Gerät die detailierte Auflistung der SysEx Implementation und die stellen immer weniger Herateller zur Verfügung.
Wenn Du mal sehen willst wie eine komplexe SysEx Implementation aussieht such mal nach der für den E-MU Proteus 2000.
Nützt Dir dann aber für konkrete Templateerstellung wenig, wenn Du solch ein Gerät auch hast.
 
also von den geräten die ich habe, habe ich die sysex listen. was ich machen möchte sind templates für zb yamaha fb01 , roland jv880 etc.. da habe ich die docu zu ;-) anbei mal ein pic von der tb midi app hier muss sys ex eingegeben werden.
 

Anhänge

  • image.jpg
    image.jpg
    200,6 KB · Aufrufe: 156
Ja, dann leg los.
Message eintragen, Variable definieren und ab dafür.
 
Ich möchte mir einen iPad-Editor für meinen Korg DS-8 basteln und habe das gleiche Problem. Dummerweise komme ich mit
Message eintragen, Variable definieren und ab dafür.
nicht weiter, was schlicht und einfach daran liegt, dass ich aus der Implementation-Chart nicht schlau werde. Dort finde ich unter "Parameter-Change":

Byte Status
1111 0000 Exclusive Status
0100 0010 Korg ID 42H
0011 nnnn Format ID 3nH (n=ch)
0001 0011 DS-8 ID 13H
0100 0010 Parameter Change 41H
0ddd dddd Parameter No.
0ddd dddd Parameter Value LSB
0000 000d Parameter Value MSB
1111 0111 ECX

Ich finde nirgendwo eine Liste der Parameter-Nummern. Aber selbst wenn irgendwo eine solche Liste wäre, wüsste ich nicht, wie ich daraus eine gültige Sysex-Message bastele, um z.B. Regler X dazu zu bewegen, Parameter Y zu beeinflussen. Klar, Sysex beginnt und endet mit F0 bzw. F7, und dazwischen setze ich die Message, über deren Zusammensetzung ich mir aber überhaupt nicht klar werde.

Am Ende stelle ich mir einen schnieken Editor vor (die Oberfläche habe ich schon gebastelt), der die aktuellen Werte des DS-8 ausliest (keine Ahnung, wie ich das veranstalte) und die von mir im iPad eingegebenen Paramateränderungen zum Gerät überträgt. Ganz einfach. Wenn man sich ein bisschen besser auskennt als ich. :floet:

Dass ich dazu keine Ahnung habe, wie ich den von mir nicht gewünschten Glitch-Mode vermeide (http://soundprogramming.net/synthesizer ... korg-ds-8/) bin ich ein wenig genervt - vor allem natürlich von meinem eigenen Unwissen, deshalb kann ich den Ausgangsbeitrag dieses Threads sehr gut nachvollziehen. Wenn also hier noch jemand Anlesetipps für Basiswissen hat, bin ich auch dafür dankbar.
 
Henk Reisen schrieb:
Ich finde nirgendwo eine Liste der Parameter-Nummern. Aber selbst wenn irgendwo eine solche Liste wäre, wüsste ich nicht, wie ich daraus eine gültige Sysex-Message bastele, um z.B. Regler X dazu zu bewegen, Parameter Y zu beeinflussen. Klar, Sysex beginnt und endet mit F0 bzw. F7, und dazwischen setze ich die Message, über deren Zusammensetzung ich mir aber überhaupt nicht klar werde.

Der Beispielcode aus dem DS-8-Manual:

#: Byte Status
A: 1111 0000 Exclusive Status
B: 0100 0010 Korg ID 42H
C: 0011 nnnn Format ID 3nH (n=ch)
D: 0001 0011 DS-8 ID 13H
E: 0100 0001 Parameter Change 41H
F: 0ddd dddd Parameter No.
G: 0ddd dddd Parameter Value LSB
H: 0000 000d Parameter Value MSB
I: 1111 0111 EOX

Zeile A: "1111 0000" ist Binärcode. Übersetzt man diesen in Hexadezimalcode, dann kommt dabei "F0" bei raus. Es handelt sich hier also um den Beginn der Sysex-Message an den DS-8.

Zeile B: "0100 0010" entspricht der Korg-Hersteller-ID "42"

Zeile C: "0011 nnnn" entspricht dem Midi-Kanal, der hier von "0011 0000" bis "0011 1111" (Hex: "30" bis "3F") reicht. Man sieht, dass hier nur die RECHTEN vier Ziffern der Binärzahl Variablen sind. Diese vier Ziffern bilden zusammen eine Zahl, die von 0 bis 15 reicht und somit Auskunft über den zu verwendenden Midi-Kanal geben, der hier benutzt werden soll. Es könnte ja sein, dass du mehrere Geräte von Korg in deinem Midi-Setup hast und du über die Kanäle unterschiedliche Geräte ansprechen willst. Es ist also entscheidend, was im DS-8 eingestellt ist und auf welchem Kanal das Teil lauscht und auf Midi-Befehle wartet.

Zeile D: "0001 0011" entspricht der DS-8-Geräte-ID, hier "13".

Zeile E: "0100 0001" entspricht "41" und weist den DS-8 dazu an, auf eine Parametereinstellung (Zeilen F bis H) zu warten.

Zeile F: "0ddd dddd" kennzeichnet den Parameter, der zu manipulieren ist. Die Spannweite reicht von "0000 0000" bis "0111 1111" (Hex: "00" bis "7F"); in normalen Zahlen ausgedrückt: Es gibt bis zu 127 verschiedene Parameter, die beeinflusst werden können.

Zeile G: Selber Wertebereich wie bei "F", nur dass es hier eben um den Inhalt des in "F" bestimmten Parameters geht.

Zeile H: "0000 000d" stellt zusammen mit "G" ein zusätzliches Bit dar, erweitert den Wertebereich nach Bedarf also von 0-127 (-64 bis +63) auf 0-255 (-128 bis +127).

Zeile I: "1111 0111" entspricht "F7" und bedeutet das Ende der Sysex-Botschaft.

====================================================================================

1. Die rot markierten Bereiche müssen durch sinnvollen Inhalt ersetzt werden, den der DS-8 verstehen kann.
2. Parallel zur Erläuterung der einzelnen Zeilen bitte diesen Link hier benutzen und mal ein paar Werte eingeben.

3. Wie zählt man?
Binär - Hexadezimal - Dezimal
0000 - 0 - 0
0001 - 1 - 1
0010 - 2 - 2
0011 - 3 - 3
0100 - 4 - 4
0101 - 5 - 5
0110 - 6 - 6
0111 - 7 - 7
1000 - 8 - 8
1001 - 9 - 9
1010 - A - 10
1011 - B - 11
1100 - C - 12
1101 - D - 13
1110 - E - 14
1111 - F - 15

====================================================================================

In Hex-Schreibweise lässt sich dieser Anweisungsblock wie folgt zusammenfassen: F0 42 30 13 41 00 00 00 F7

Das wäre ein gültiger Sysex-String, wie ihn der DS-8 sowohl AUSSPUCKT als auch EMPFÄNGT.
Es gibt vermutlich deswegen keine Liste der Parameternummern, weil eine Live-Manipulation dieser Parameter offensichtlich nicht vorgesehen war und nur den Zweck hatte, ein Backup eines Presets bzw. ein Wiedereinspielen dieses Backups per Sysex zu ermöglichen. Logischerweise umfasst ein komplettes DS-8-Preset aber bis zu 127 verschiedene Sysex-Strings, damit eben alle Parameter mit ihren jeweiligen Werten abgedeckt werden. Welcher Parameter jetzt aber wofür verantwortlich ist, ist vermutlich mit einem ausdauerndem Ratespiel verbunden.

Das sollte als grundsätzliche Orientierung hoffentlich erst mal ausreichend sein.

Hier noch die DS-8-Anleitung als PDF: http://www.cyborgstudio.com/synthmp3s/k ... manual.pdf
Ab Seite 25 geht es mit dem Sysex-Zeugs los.
 
Alles ja schön und gut, aber die netten Herren von Korg haben es doch echt vergessen, die einzelnen Parameter mit ihrer ID und dem Wertebereich zu listen.
Wenn man Glück hat, ist die Reihenfolge so, wie im Manual ab Seite 10 beschrieben, oder auch am Ende auf Seite 35.

Henk Reisen schrieb:
Am Ende stelle ich mir einen schnieken Editor vor (die Oberfläche habe ich schon gebastelt), der die aktuellen Werte des DS-8 ausliest (keine Ahnung, wie ich das veranstalte)
Dafür kannst Du einen 1 Voice Dump Request schicken und die Daten dann auseinanderbröseln. Ein Sound kommt als 80 Bytes, wie die nun strukturiert sind, verschweigt Korg allerdings auch.
Da kann man dann einen Sound dumpen, einen Wert ändern und wieder dumpen, den Dump anschauen und das bis zum bitteren Ende wiederholen.
 
@DerGanner: Deine Antwort ist unglaublich viel hilfreicher, als ich sie mir überhaupt erhofft hätte! Ich habe jede Teil deiner Erläuterungen kapiert. Wie es so oft ist, wenn man etwas gut erklärt bekommt, fragt man sich nachher, wie man das nicht selbst verstehen konnte (z.B. binär vs. hexadezimal -> Mann, da hätte ich aber auch mal selbst schalten können). Aber eine so einfache, klare und gleichzeitig ausführliche Erklärung auf einen für mich unzugänglichen und undurchdringlichen Fragenkomplex habe ich noch nirgendwo gefunden. Das ist wirklich großartig! Vielen, vielen Dank!

@swissdoc: Ich hoffe, mir das Hin- und Herdumpen dadurch sparen zu können, dass ich einen anderen bearbeitbaren DS-8-Editor finde, den ich auslesen kann. (Bevor die naheliegende Frage aufkommt, warum ich dann nicht gleich einen existierenden Editor nehme: Ich hätte den Editor aus ergonomischen Gründen gerne auf dem iPad, nicht auf dem PC). Für Ctrlr gibt es ein DS-8-Panel, das ich mal testen werde.

@mink99: Jetzt, wo DerGanner mir das Sysex-Basiswissen zur Verfügung gestellt hat, habe ich davor keine all zu großen Sorgen mehr. Ich weiß natürlich nicht genau, was den Overrun auslöst, und ob dazu vielleicht ein falsch eingestellter Wertebereich eines virtuellen Reglers genügt (was sicherlich leicht vorkommt), aber ich würde den DS-8 schon gerne mit einem Editor betreiben. Im schlimmsten Fall habe ich einen ziemlich abgefahrenen Synth. :phat: - was ich aber wirklich nicht hoffe.
 
Cool, was mich echt wundert: Warum gibt Korg alles an, bis auf die Parameterdetails. Sehr nett ist das ja nicht.
 
Man kann da tatsächlich nur vermuten, aber ich finde die Erklärung von DerGanner auch in diesem Punkt nachvollziehbar: Die Korg-Leute haben das wahrscheinlich einfach noch nicht auf dem Schirm gehabt, das das jemand ensthaft macht. Eine andere Erklärung fällt mir nicht ein.
 
Henk Reisen schrieb:
@DerGanner: Deine Antwort ist unglaublich viel hilfreicher, als ich sie mir überhaupt erhofft hätte! Ich habe jede Teil deiner Erläuterungen kapiert. Wie es so oft ist, wenn man etwas gut erklärt bekommt, fragt man sich nachher, wie man das nicht selbst verstehen konnte (z.B. binär vs. hexadezimal -> Mann, da hätte ich aber auch mal selbst schalten können). Aber eine so einfache, klare und gleichzeitig ausführliche Erklärung auf einen für mich unzugänglichen und undurchdringlichen Fragenkomplex habe ich noch nirgendwo gefunden. Das ist wirklich großartig! Vielen, vielen Dank!

Freut mich, dass du meine Antwort nützlich fandest. :D

Hab noch ein paar Kleinigkeiten verbessert, inkl. eines Tippfehlers im Binärcode in Zeile E, den du (und ich von dir) aus der Anleitung abgetippt hast. Das spricht, neben den fehlenden Parameterbeschreibungen, wirklich nicht gerade für die Sorgfalt, die Korg bei der Dokumentation dieses Synthesizers hat walten lassen.

Das hat Roland beim JV880 insgesamt besser hinbekommen. Roland hat zum Beispiel klipp und klar in die Anleitung rein geschrieben, dass zwischen zwei Sysex-Messages mindestens (!) 20 Millisekunden Pause einzuhalten ist. Ich könnte mir vorstellen, dass man dies auch beim DS-8 machen sollte, weil womöglich sonst ein Speicher überläuft oder gar schon neu beschrieben wird, während der Synth noch versucht, die vorhergehende Message fertig zu verarbeiten. -> Glitch Mode.
 
Henk Reisen schrieb:
@DerGanner: Deine Antwort ist unglaublich viel hilfreicher, als ich sie mir überhaupt erhofft hätte! Ich habe jede Teil deiner Erläuterungen kapiert. Wie es so oft ist, wenn man etwas gut erklärt bekommt, fragt man sich nachher, wie man das nicht selbst verstehen konnte (z.B. binär vs. hexadezimal -> Mann, da hätte ich aber auch mal selbst schalten können). Aber eine so einfache, klare und gleichzeitig ausführliche Erklärung auf einen für mich unzugänglichen und undurchdringlichen Fragenkomplex habe ich noch nirgendwo gefunden. Das ist wirklich großartig! Vielen, vielen Dank!

@swissdoc: Ich hoffe, mir das Hin- und Herdumpen dadurch sparen zu können, dass ich einen anderen bearbeitbaren DS-8-Editor finde, den ich auslesen kann. (Bevor die naheliegende Frage aufkommt, warum ich dann nicht gleich einen existierenden Editor nehme: Ich hätte den Editor aus ergonomischen Gründen gerne auf dem iPad, nicht auf dem PC). Für Ctrlr gibt es ein DS-8-Panel, das ich mal testen werde.

@mink99: Jetzt, wo DerGanner mir das Sysex-Basiswissen zur Verfügung gestellt hat, habe ich davor keine all zu großen Sorgen mehr. Ich weiß natürlich nicht genau, was den Overrun auslöst, und ob dazu vielleicht ein falsch eingestellter Wertebereich eines virtuellen Reglers genügt (was sicherlich leicht vorkommt), aber ich würde den DS-8 schon gerne mit einem Editor betreiben. Im schlimmsten Fall habe ich einen ziemlich abgefahrenen Synth. :phat: - was ich aber wirklich nicht hoffe.

Ich hoffe du kannst deinen ds8 ipad editor fertigstellen ;-) würde ihn sogar testen ;-) oder kaufen ;-) mein ds8 würde sich freuen ;-)
 
DerGanner schrieb:
Es gibt vermutlich deswegen keine Liste der Parameternummern, weil eine Live-Manipulation dieser Parameter offensichtlich nicht vorgesehen war und nur den Zweck hatte, ein Backup eines Presets bzw. ein Wiedereinspielen dieses Backups per Sysex zu ermöglichen. Logischerweise umfasst ein komplettes DS-8-Preset aber bis zu 127 verschiedene Sysex-Strings, damit eben alle Parameter mit ihren jeweiligen Werten abgedeckt werden. Welcher Parameter jetzt aber wofür verantwortlich ist, ist vermutlich mit einem ausdauerndem Ratespiel verbunden.

Es gibt ja einen 1 Voice Dump und All Voice Dump und dann den Parameter Change, die beiden Dumps sind zum Backup gedacht, der Paramter Change zum Ändern eines Parameters. Die Parameter nicht zu listen, ist wohl Schlamperei. Ein Preset umfasst sicher keine 127 Parameter, ich bin beim Zählen in den Sound-Sheets auf 62 oder so gekommen.

Spannend 1: in der englischen Docu steht was von 80 Bytes "Payload" pro 1 Voice Dump, in der deutschen steht was von 96.
Spannend 2: ein All Voice Dump hat 7544 Bytes "Payload", was aber mit den 100 Presets und obiger Zahl nicht so recht zusammenpasst.
Spannend 3: im Handbuch zum Brüderchen, dem Korg 707 steht dann noch was einer 7x8 zu 8x7 Packung
Spannend 4: Auf Seite 24 des englischen Handbuches beschreibt Korg auf einmal etwas zum DW8000. Das ist ohne Review in den Druck gegangen.

Klingt nach richtig viel Arbeit.
 
swissdoc schrieb:
Ein Preset umfasst sicher keine 127 Parameter, ich bin beim Zählen in den Sound-Sheets auf 62 oder so gekommen.

Das war nur ins Blaue geraten. ;-)
Ich bin nur deswegen bei dieser Zahl gelandet, weil Korg laut Anleitung ja sieben Bit (zwei hoch sieben = 128) an Parameterplätzen vorsieht.
Diese sieben Bit bräuchte man aber ja schon auch dann, wenn man gerade mal 65 (zwei hoch sechs plus eins) Parameter abdecken müsste. Vielleicht sind es auch tatsächlich nur 62 Parameter und wir haben es mit einem übersorgfältigen Ingenieur und seinem oberfaulen Doku-Assistenten bei Korg zu tun. 8)
 
Nun, in einem Midi-Byte kann man eben max 7 Bit unterbringen. Die Dokumentation sagt eigentlich nur aus, dass die Paramter ID in einem solchen Byte steckt und die Werte eben in 2 Bytes. Nicht aber wieviele Werte es gibt.

Hier ein Snippet aus der Microwave V2.0 Sysex Dokumentation, dort ist es anders herum, 2 Byte zum Adressieren der Parameter, aber nur 1 Byte für den jeweiligen Wert. Freue Dich, dass Du keine Prüfsumme im DS-8 hast oder gar Handshake...

Code:
Byte    #       Value

        0       F0h     (EXC)
        1       IDW
        2       IDE
        3       DEV
        4       IDM

                Data:
        5       Instrument No. (0...7)
       6,7      BPR parameter no. (0...179) in format BYTE
                Unused parameters shouldn't be changed.
                A change of the valid-flag will be ignored.
                See BPRD for reference of parameters to
                parameter numbers.
        8       Parameter value (0...127). See BPRD for reference.

        9       CHKSUM over databytes 5...8
       10       F7h     (EOX)
 
@mink99: Jetzt, wo DerGanner mir das Sysex-Basiswissen zur Verfügung gestellt hat, habe ich davor keine all zu großen Sorgen mehr. Ich weiß natürlich nicht genau, was den Overrun auslöst,(...)
DerGanner schrieb:
(...) Roland hat zum Beispiel klipp und klar in die Anleitung rein geschrieben, dass zwischen zwei Sysex-Messages mindestens (!) 20 Millisekunden Pause einzuhalten ist. Ich könnte mir vorstellen, dass man dies auch beim DS-8 machen sollte, weil womöglich sonst ein Speicher überläuft oder gar schon neu beschrieben wird, während der Synth noch versucht, die vorhergehende Message fertig zu verarbeiten. -> Glitch Mode.
Manches fällt einem erst mit etwas Abstand auf: Keine Ahnung und gleichzeitig keine Sorgen. Dann ist man entweder weise oder sehr, sehr dämlich. In diesem Fall kann man sich leiocht ausrechnen, was zutrifft. Die Mischung aus Nix-Checkung und ungehemmtem Enthusiasmus ist regelmäßig äußerst gefährlich, egal auf welchem Gebiet. Schön, sich selbst bei einem so krassen Beispiel zu erwischen!

So bin ich euch sehr dankbar, dass ihr meine Mischung aus Bruder-Leichtfuß-Mentalität und unerträglicher Arroganz nonchalant übergangen habt, statt mich bleiern zu tadeln oder einfach auszulachen. Ich hätte natürlich allen Grund, mir Sorge vor meiner Bastelei zu machen. Wenn wir - nur als Beispiel - mal die 20ms Pause annehmen: Weiß ich denn, in welchem Abstand Reglerbewegungen Sysex-Meldungen auslösen? Natürlich nicht. Kann es also sein, dass ich selbst mit einem perfekt designten und befehlszugeordneten Editor einen Glitch auslöse? Vielleicht! Ich wäre ein astreiner Kandidat dafür, den DS-8 in den Tod zu jagen.

@citric acid: Ich glaube, solange ich nicht wirklich weiß, wie ich den Overrun vermeiden kann, muss ich es sein lassen. Ansonsten hätte ich dat Dingen natürlich dir und jedem anderen zur Verfügung gestellt. Kaufen wäre zwar nicht möglich, aber geschenkt hättest du ihn haben können. Man kann ja nicht hier kostenlose Tipps und Schulungen abstauben, um damit etwas zu basteln, mit dem man Geld verdienen will. Kann man schon, ist dann aber ein bissken asozial. Wenn es noch etwas wird, dann werde ich hier in jedem Fall einen Downloadlink posten.

Für den Moment habe ich erst einmal viel gelernt und bin euch auch dafür sehr dankbar. Wenn ihr oder sonst jemand noch einen Tipp hat, wie ich sicher stellen kann, keinen Glitch auszulösen, dann würde ich mich darüber sehr freuen. Der Editor ist fertig designt und muss nur noch mit Sysex-Befehlen gefüttert werden. Ich teste es auch gerne an meinem Gerät, wenn ich zumindest das Gefühl habe, die Risiken einigermaßen überschauen zu können. Oder bin ich jetzt wiederum zu schissig? Ach, wat weiß denn ich.
 


Zurück
Oben