CHD-EL TR-808 MIDI Kit/SysEx Problem

Dieses Thema im Forum "mit Sequencer" wurde erstellt von sähkö, 30. Mai 2015.

  1. sähkö

    sähkö Tach

    Sers,

    in meiner 808 werkelt ein MIDI Kit von CHD Elektroservis Prag. Bis auf folgend beschriebenes Problem sind alle Funktionen gegeben. Per sysex String lassen sich die Parameter wie MIDI Kanal und Instrumentenzuordnung verändern, beides habe ich vor. Auf der CHD Website lässt sich auch ein HTML basierter Generator laden, der die nötigen sysex Strings generiert. Leider werden die nicht vom Interface akzepiert. Der bisher einzige String, auf den das Interface reagiert, ist jener, der alle Parameter auf Werksvoreinstellung zurücksetzt. Die Byte-Länge der Strings für z.B. Werksreset und MIDI Kanal Zuweisung ist identisch. Das Verhalten ist zu 100% unter OS X/Win 7 mit unterschiedlicher Software reproduzierbar, auch nach Kabeltausch oder direkter Anbindung an's MIDI Interface.

    Die Version meines CHD Kit ist 3.10 aus 06/2010, meines Wissens nach der letzte Stand.

    Hat hierzu wer Erfahrungen? Die Antwort aus Prag steht noch aus, Tante Gugel weist keine relevanten Einträge auf. Kommentare zur Notwendigkeit von MIDI bitte an /dev/null richten, und ja: ich kann die 8 recht gut programmieren, danke für die Nachfrage.

    S.
     
  2. sähkö

    sähkö Tach

    Meine leise Vermutung ist weniger, dass hier ein allgemeines techn. Problem mit der sysex Verarbeitung vorliegt, kommunikationsbedingt schon gar nicht (Werksreset wird immer akzeptiert), sondern ein Fehler im sysex Generator von CHD.

    Das Interface erwartet folgende sysex Struktur:
    F0 (Start sysex)
    00 20 21 (Manufacturer ID)
    7F (Device ID)
    62 (Model ID)
    cc (Command)
    aa (Address)
    dd … dd (Data)
    xx Checksum (seven-bit checksum of Model ID to Checksum bytes)
    F7 (End sysex)

    Die Checksum xx wird wie folgt generiert: Checksum xx is created by standard method — seven-bit sum of bytes from "Model ID" to "Checksum" must be equal to zero. SysEx Msg is invalid and it is ignored by the device if this condition isn't satisfied.

    Der funktionierende Factory Reset sysex String: F0 00 20 21 7F 62 20 0D 7F 72 F7
    Der nicht-funktionierende String für MIDI Kanal 4: F0 00 20 21 7F 62 30 00 03 6B F7
    Der nicht-funktionierende String für ein alternatives Mapping der BassDrum: F0 00 20 21 7F 62 50 23 01 00 7F 2B F7

    In Fett steht die jeweilige Checksum. Was CHD hier mit seven-bit sum of bytes from "Model ID" to "Checksum" must be equal to zero meint, erschliesst sich mir nicht und macht angesichts der o.a. Strings wenig Sinn. Was ist denn eine Sieben-Bit Prüfsumme einer auf Null ausgehenden Addition der benannten Bytes?! Kann das wer mal erklären? :selfhammer:

    Im Anhang findet sich der java-basierte sysex Generator von CHD.
     

    Anhänge:

  3. swissdoc

    swissdoc back on duty

    Ich kann Dir leider nicht erklären, warum die vom SysEx-Generator erzeugten Strings nicht funktionieren, aber das mit der Prüfsumme ist recht einfach.
    Die Summe aller Bytes inclusive der Prüfsumme auf 7bit maskiert muss 00 ergeben.
    So gerechnet stimmen die jeweiligen Prüfsummen auch.

    In Hex gerechnet für den ersten String f0 00 20 21 7f 62 20 0d 7f 72 f7:

    Prüfsumme ausrechnen:
    sum (62;20;0d;7f) = 10E
    10E and 7f = 0E (7f in binär ist 01111111, mit dem and wird markiert)
    80 - 0E = 72

    Prüfsumme überprüfen:
    sum (62;20;0d;7f;72) = 180
    180 and 7f = 00
     
  4. sähkö

    sähkö Tach

    Hr. Doktor,

    danke dir! Warum 0E von 80 (woher kommt die?) subtrahiert wird und die Summe mit 7F ge-AND-et wird, war/ist mir nicht klar, aber den Weg kann ich nun gehen und nachrechnen. Stimmt alles. Wie der Entwickler Jan David heute aufklärte, war mein Fehler der, dass entgegen dem Factory-Reset via SysEx, alle anderen Parameteränderungen via SysEx NICHT mit blinkender LED quittiert werden. Alles ist gut :supi:

    Mein Dank geht heute in die Tschechei und in die Schweiz!
    S. ;-)
     
  5. swissdoc

    swissdoc back on duty

    Wenn Du MIDI ein wenig genauer kennen würdest, so wäre Dir das alles klar ;-)
    Die Daten im Sysex sind immer im Format 0*** **** binär, das höchstwertige Bit ist also immer 0. Daher die Maskierung mit 0111 1111 oder 7f.

    Im Code werden nun alle relevanten Bytes incl. der Prüsumme aufsummiert, das macht jeder Prozessor mit links, dann noch eben die Maskierung und abschliessen der Test auf Gleichheit mit 0, auch das in Assembler ein Standardbefehl.

    Man muss nun die Gleichung ((SUMME DER BYTES) and 7f) + PRÜFSUMME = 0 auflösen. Das gibt dann PRÜFSUMME = 0 - ((SUMME DER BYTES) and 7f) nur leider wird es nun etwas unschön mit negativen Zahlen in Hex etc.
    Wenn man aber rechnet PRÜFSUMME = 80 - ((SUMME DER BYTES) and 7f), dann kommt es hin und auch der Windowstaschenrechner bekommt es gewuppt.

    Wie man es in Assembler schreiben würde, so dass es eine CPU versteht ist ja nebensächlich, das Prinzip sollte nun aber klar sein.
     
  6. sähkö

    sähkö Tach

    Ich kenn' mich nur mit den Arrangements in meinen MIDI Dateien aus :floet: Danke sehr für die nähere Erläuterung, von der andere hoffentlich ebenso profitieren werden. Zum MIDI Kit und der Zuweisung der Noten sei noch gesagt, dass Doubletten (Instrument erklingt an mehreren MIDI Noten) entsprechen 00 (also "none") zugewiesen bekommen sollten. Dann liegen alle 11 Instrumente schön als Singletons auf den MPC Pads (oder sonstwo) parat :D .
     
  7. tom f

    tom f Moderator

    hallo,


    ich reaktiviere mal den thread weil ich das problem habe dass auch bei mir der aktuelle editor nicht funktioniert - alsoi nichts ändert.


    ich habe wenn ich nicht irre die zweite revision des interfaces und wenn ich mit dem aktuellen editor eine sysexmessage generiere und diese dann hier

    http://support.codeandcopper.com/txt-to-syx/

    in .syx umwandle und das mit dem sysex librarian an die 808 schocke tut sich nichts.


    oder soll ich das verlinbket utility gar nicht verwenden ??? also gleich den hex code in einem texteditor als .syx rüberschicken ?


    gibrt es irgendwo einen alten editor zu laden ?

    bzw. was muss ich machen ? ...die erklärungen oben sind mir zu kompliziert - sorry :)
     
  8. sähkö

    sähkö Tach

    Man nehme den im Eingangspost angehängten Sysex-Generator, generiert damit ein Setting je String. Den String setzt du in einem Hexeditor, z.B. für dich als Mac User Hex Fiend, speicherst den als .syx, sendest dies an deine 808. So arbeitest du alles sequentiell ab, bis alles drin ist. Es gibt kein visuelles Feedback, ob die 808 den String akzeptiert, ausser beim Factory Reset (eignet sich gut, um die Sache grundsätzlich zu testen).
     
  9. tom f

    tom f Moderator

    also ich hatte dem gerät mal einen anderen midikanal eingestellt - nur reagiert die 808 nicht darauf und bleibt auf der werkseinstellung - kann das an dem von mir verlinktem tool liegen?

    danke
     
  10. tom f

    tom f Moderator

    habe es jetzt mit dem von dir empfohlenen editor probiert und der generiert genau das gleiche file wie der online converter.

    lediglich meine 808 will nicht
     
  11. sähkö

    sähkö Tach

    Blinkt deine Kontrollleuchte nach dem Factory Reset? Wenn nicht, machst du was falsch oder hast einen Fehler in der MIDI Kette. Falls es noch nicht der Fall war, gehe von deiner MIDI Karte direkt an die 8. Wenn das nicht hilft, dann bestimmt der wirklich freundliche Support bei CHD-EL. Wenn du mir den MIDI Kanal nennst, hänge ich dir gerne eine .syx Datei an.
     
  12. tom f

    tom f Moderator


    danke sehr nett - grundsättzlich sollte ich keine fehler gemacht haben - aber den factory reset probiere ich noch - dann würde ich mich gegebenen falls noch melden

    :supi:
     
  13. tom f

    tom f Moderator

    ach die kiste tut nichts auch nicht bei dem factory reset - egal ob per sysex und dem sysex librarian oder per midi via logic...

    auch wenn die note on/off normal spielt.


    dann hab ich wohl ein halbschrott interface - super


    ps: programchanges nimmt es aber auch normal - also im prinzip kann ich damit eh die jeweil nötigen modi abrufen, aber natürlich geht es mir auf den sack wenn ein teil nicht funktioniert.
     

Diese Seite empfehlen