Sysex, bitte um Erklärung

Dieses Thema im Forum "Controller & MIDI" wurde erstellt von sushiluv, 18. Dezember 2011.

  1. sushiluv

    sushiluv bin angekommen

    Hallo,

    ich bastel gerade an einer Lemur oberfläche für die machinedrum und den octatrack.

    sowiet klappt alles auch schon gut und schön, ich würde mir aber gerne tracknamen udn diverse andere parameter am lemur anzeigen lassen, leider hab ich keine ahnung wie ich sysex formatieren muss, so ein sysexbefehl im md manual sieht folgernermaßen aus:

    SYSEX save kit:
    MIDI Byte | Purpose ------------+----------------------------
    (SYSEX init)|
    $59 | %00aaaaaa | $f7 |
    Save kit ID Save kit to pos %aaaaaa (0 to 63)
    SYSEX end

    wie kann ich das in ein für den lemur sendbares format umwandeln? erwarten würde er in etwa sowas ...
    midiout(0,{0xF0,0x01,0x20,0x01,0x01,0x03,n2, n1,0xF7}

    aber wie komm ich auf diese formatierung.
    ich schwitze blut und wasser, bitte hilfe :)

    danke,sl
     
  2. sushiluv

    sushiluv bin angekommen

    hm, ich bin evtl. einen schritt weiter aber bereits beim nächsten Problem.

    über einen midimonitor sehe ich, dass die datenlänge 8bytes in anspruch nimmt, müssten aber 7 sein, damit die machinedrum das versteht.

    was kann ich hier tun?

    bitte nach wie vor um hilfe, recht dringend sogar :)

    merci.
     
  3. Anonymous

    Anonymous Guest

  4. sushiluv

    sushiluv bin angekommen

    Danke, der Lemur, bzw. die lemur app, fügen den anfang und das ende angeblich selbst ein, hab beides probiert, kein unterschied.
     
  5. automake

    automake Tach

    Nur wenn du im Jazz/Lemur-Editor oben links unter Mapping-Midi-Message Sysex konfigurierst.

    Mit midiout() kannst du die Nachricht komplett selbst definieren.
    Schau dir doch am besten mit einem Midi-Monitor an, was MD/OT so an Sysex rausschickt.
    Dann versuche diese Nachricht für den jeweiligen Zweck mit dem Lemur nachzubauen.

    Kurzer Blick in die MD Sysex Spec lässt vermuten, dass die Nachrichtenlänge schon unterschiedlich sein kann und nicht zwingend auf 7 Byte festgelegt ist.
     
  6. sushiluv

    sushiluv bin angekommen

    ich arbeite mit einer custom Midi message, da benötige ich anfang und ender der sysexnachricht, völlig korrekt.

    das ding ist, das ich mich mit sysex nicht auskenne. Würdest du dir die sysex reference der Machinedrum mal ansehen und mir bitte vielleicht anhand eines dort gegebenen sysex befehls ein beispiel schreiben, wie man so eine nachricht korrekt formatiert?

    das wär ein wahnsinn, der editor ist so weit schon gut gediehen, aber mit sysex senden und empfangen wärs natürlich super. ich möchte über lemur gerne in der lage sein kitnamen anzuzeigen, kit reload und pattern selection, wenn das mal laufen sollte eventuell mehr.

    danke für deine hilfe.

    besten gruß,
    martin
     
  7. automake

    automake Tach

    Also:

    zu erst musst du die MD adressieren. Die Referenz dazu findest du im Anhang auf Seite C1.

    Folgender Block musst also jeder Message vorangestellt werden:

    $f0 | SYSEX Start
    $00 | Europe/USA ID (Hier is bei anderen Beispielen meistens nur ein Byte zb Roland=0x41)
    $20 | Europe ID (Ist das erste Byte 0x00 wird der Herstellercode auf die nächsten beiden Bytes erweitert: 0x20 0x3c = Elektron)
    $3c | Elektron ESI ID
    $02 | Machinedrum ID (Geräte-ID = MD)
    $00 | Base channel (Padding) (Müsste eigentlich der Midi-Kanal sein ;-) )

    Danach kommen die Befehle, die recht unterschiedlich aussehen können.
    Nehmen wir mal was Einfaches:

    (SYSEX init)|
    $57 | Load pattern ID Load pattern
    %0aaaaaaa | %aaaaaaa (0 to 127)
    $f7 | SYSEX end

    Das Lemur Script wäre dann:

    decl midichannel;
    decl pattern;
    midiout(0,{0xF0, 0x00, 0x20, 0x3C, 0x02, $midichannel, 0x57, $pattern, 0xF7});

    Soviel zu Theorie. In der Praxis hängt es dann oft an Kleinigkeiten :)

    Wie gesagt gut ist immer im Midi-Monitor zu schauen ob auch wirklich das verschickt wird was du beabsichtigst.
    Außerdem schadet es nicht den Datenstrom von einer funktionierenden Referenz zb. nen MD-Editor mit deinem zu vergleichen.

    Für den Empfang des Namens wirst du einen OnMIDI Event-Listener einrichten und dort die
    Sysex-Nachricht entsprechend decodieren müssen. Vermute das wird ein wenig komplizierter,
    da hier ja Zeichenketten verschickt werden.
     
  8. sushiluv

    sushiluv bin angekommen

    Halllo,

    tausend dank für diese ausführliche erklärung und das beispiel, echt super! :supi: .

    ich bin jetzt so kurz vor weihnachten recht eingespannt, werde aber so schnell wie möglich versuchen, wie weit ich damit komme und melde mich dann an dieser Stelle nochmal.

    besten gruß,
    martin
     
  9. sushiluv

    sushiluv bin angekommen

    Hallo,

    nochmal danke für deine tolle erklärung. nach ein wenig rumprobieren klappts nun ganz toll. patternladen über den lemur, sehr fein :)

    Wenn der Editor fertig ist poste ich ihn hier mal, sollte nicht mehr all zu lange dauern.

    Danke, besten gruß.
    Martin
     
  10. sushiluv

    sushiluv bin angekommen

    Hi,

    bin nun gut weiter, was den MD Controller für den Lemur betrifft.


    Hier mal ein kleines video.


    src: https://youtu.be/62IIJXD6Ue4


    was geht:

    Kontrolle über alle 16 Filter, Sends für Delay, Reverb und SSR
    CtrlAll Page mit Physics (einstellbare Ranges und CC für jeden Ball) und Presets, das reloaden von Kits geht auch
    Pattern über den Lemur wechseln und kontrolle über alle Effektparameter.

    no musical statement ;-)
     
  11. fairplay

    fairplay Tach

    ...was ich jetzt noch nicht verstehe ist, ob Du die Presets (namentlich) in den Lemur geladen bekommst, oder ob Du einfach generische Befehle zum Presetwechsel sendest?...
     
  12. sushiluv

    sushiluv bin angekommen

    Namentlich halte ich nicht für notwendig, der name ist ja immer A (B C D E F) und die nummer. Wenn du am lemur das pattern b12 wählst, dann lädt die machinedrum natürlich pattern b12. daraufhin wird die kitnummer abgefragt. wenn der lemur diese hat, dann kannst du auf track M1 über den lemur eine Ctrl All machine laden. wenn das ganze zu chaotisch wird gibt es denn kit reload button, der dir das richtige kit mit dem letzten speicherstatus neu lädt und das spiel kann von vorne beginnen.

    wenn du auf der machinedrum das pattern wechselst bekommt der lemur davon noch nichts mit, das muss ich erst einbauen.
     
  13. fairplay

    fairplay Tach

    ...ah! - ok...um diese Richtung ging es mir...ich nutze den Lemur in Verbindung mit einer Reihe von Instrumenten und will damit jetzt auch neben der Steuerung von Elementen in patches auch die patch-Namen von einer G2-Engine übertragen bekommen und auswählen...die haben Namen, und es wäre ganz interessant ein reales Anwendungsbeispiel für das parsen einer SysEx-Antwort im Lemur zu sehen...

    ...dann muß ich mich doch selbst mal hinsetzen ;-) ...
     
  14. sushiluv

    sushiluv bin angekommen

    Das mach ich bei laden des kits, ich schicke der MD einen sysexbefehl GetKit (natürlich der sysex string) daraufhin schickt mir die MD einen sysexstring zurück.
    den fängst du im lemur mit On Midi skripten ab, also

    On Midi Sysex

    Monitor.value=MIDI_ARGS;

    Dein zuvor erzeugtes monitorobjekt zeigt dir nun den string an.

    Den kannst du dann weiter verarbeiten.

    Ob der patchname im G" aber per sysex übertragen wird, das weiß ich nicht, davon wirds dann wohl abhängen.
     
  15. fairplay

    fairplay Tach

    ...vielen Dank für die Info! - bin leider im Moment weit weg von allem, aber sobald ich kann setze ich mich daran - wenn ich was erreiche melde ich hier zurück :cool: ...
     

Diese Seite empfehlen