Roland Fantom XR und SysEx treibt mich zum Wahnsinn

  • Ersteller Gast 2522
  • Erstellt am
G
Gast 2522
Gesperrter Benutzer
Zuletzt hier
26.10.18
Registriert
19.11.13
Beiträge
135
Kekse
0
Hallo Musiker Board!

Ich werd noch wahnsinnig!

Ich versuche nun schon seit Tagen meinen Roland Fantom XR per SysEx umzuschalten. Aber irgendwie klappt das nicht.

Zwischen-Problem 1: Ich habe zur MIDI Implementation nur das Englische Manual
Zwischen-Problem 2: Mein Englisch ist nicht so gut
Zwischen-Problem 3: In Google werde ich war fündig, aber so direkt werde ich daraus nicht schlauer, außerdem ist das Meiste nur in Englisch zu finden
Zwischen-Problem 4: Ich verstehe SysEx nicht wirklich

Nun zum Wesentlichen: Ich möchte, wie schon erwähnt, die Patches und Performances des Fantom XR via SysEx umschalten. Die Umschaltung der einzelnen Modes (Patch / Performance) klappt auch. Bank Select und Programm Auswahl im Performance Modus klappt auch. Aber nicht im Patch Modus. Und eben DAS treibt mich zum Wahnsinn!

Nehmen wir an, ich möchte auf Performance USER 10 schalten setzt sich der SysEx String so zusammen:
F0
41 10 00 6B 12 (Roland ID, Device ID, Fantom XR ID, Command ID)
01 00 00 00 (Adresse Setup)
01 (Mode Switch Performance)
55 (Bank Select MSB, dezimal 85)
00 (Bank Select LSB, dezimal 0)
09 (ProgramChance, dezimal 10-1)
20 (Checksum)
F7 (EoX)

Berechnung der Checkum:
Adresse+Mode Switch+MSB+LSB+PC = 96 dezimal
96/128=0,75 also "reminder" = 96
128-"reminder" also 128-96=32
32 dezimal = 20 hexadezimal

Also lautet der komplette SysEx String um zu Performance USER 10 zu wechseln:
F0 41 10 00 6B 12 01 00 00 00 01 55 00 09 20 F7

Das funktioniert auch.

Nun möchte ich auf Patch PR-C 35 wechseln. Wenn ich nun wie oben den SysEx String generiere sieht das dann so aus:
F0
41 10 00 6B 12 (Roland ID, Device ID, Fantom XR ID, Command ID)
01 00 00 00 (Adresse Setup)
00 (Mode Switch Patch)
57 (Bank Select MSB, dezimal 87)
42 (Bank Select LSB, dezimal 66)
22 (ProgramChange, dezimal 35-1)
44 (Checksum)
F7

Berechnung der Checksum:
Adresse+Mode Switch+MSB+LSB+PC = 188 dezimal
188/128=1,46875 also "reminder" = 60 dezimal (188-128=60)
128-"reminder" also 128-60=68
68 dezimal = 44 hexadezimal

Also lautet der komplette SysEx String um zu Patch PR-C 35 zu wechseln:
F0 41 10 00 6B 12 01 00 00 00 00 57 42 22 44 F7

Das funktioniert aber nicht. Er wechselt zwar zum Patch Mode, aber kein Bank Select und kein ProgramChange.

Also nun meine Bitte an euch: Könnt ihr mir hier helfen? Was mache ich falsch?

Vielen Dank an euch alle und sorry für den langen Text.


Viele Grüße
kahero
 
Eigenschaft
 
Nur mal so ins Blaue vermutet, weil ich mit einer vergleichbaren Situation mit Yamaha- und Korg-Geräten zu tun hatte: offensichtlich klappt der Wechsel von Performance x auf Patch Y nicht. Klappt es denn von Performance x zu Performance z, also wenn du im Performance-Modus bleibst? Und von Patch a auf Patch b? Könnte es sein, dass der Moduswechsel bei gleichzeitigem Soundwechsel zu viel für das Gerät ist?

Von meinem Triton Rack weiß ich, dass er nach einem Moduswechsel ca. 100ms Zeit braucht, bis er einen Soundwechsel richtig verarbeiten kann.

Harald
 
Hi,

Bist du sicher, dass du überhaupt SysEx benötigst? Wechselt der Modus nicht automatisch entsprechend dem Bankwahl-Befehl?

Ansonsten steht noch zu Bank Select in der Anleitung (Sound- und Parameter-Listen, S. 67): "Not received in Performance Mode when the Receive Bank Select (PERFORM/MIDI) is OFF." Hast du diese Einstellung mal überprüft? Für Program Change gibt es einen ähnlichen Parameter zum Ausschalten des Empfangs dieser Midi-Nachricht im Performance Mode.

Grüsse,
synthos
 
Erstmal danke für eure schnellen Antworten.

Ich habe gerade nochmal getestet. Es klappt der Wechsel von Patch x auf Performance x. Und es klappt der Wechsel von Performance x auf Performance y. Es klappt aber nicht der Wechsel von Performance x auf Patch x und auch nicht der Wechsel von Patch x auf Patch y.

Also wechslen der Performances klappt, wechseln von Patches nicht. Wenn ich von wo auch immer auf ein Patch wechseln möchte (und auch von Patch auf Patch) wird das letzte manuell eingestellte Patch aufgerufen. Also funktioniert der Mode Wechsel, aber nicht der Bank/ Programm Wechsel.

Die Einstellungen im Fantom XR stimmen, denke ich. Im Menü steht alles auf ON bei Rx.

SysEx wird dringend benötigt. Zum Einen kann Roland nicht per reinem Bank Select zwischen Performance und Patch schalten, zum anderen nutze ich einen alten Miditemp PMM88. Der kann Bank Select leider nur als SysEx senden.

Hättet ihr vielleicht noch weitere Tipps?
 
Ich habe glaube ich eine Idee: und zwar sendest du ja nur eine Adresse und dann mehrere Daten-Bytes. Diese werden ausgehend von der Start-Adresse der Reihe nach abgearbeitet. Wenn du jetzt die Reihenfolge der Daten-Bytes in der Anleitung auf S. 253 anschaust, dann ist diese wie folgt:

1. Sound Mode (Patch, Perform, GM1, GM2, GS)
2. Performance Bank Select MSB
3. Performance Bank Select LSB
4. Performance Program Number
5. Patch Bank Select MSB
6. Patch Bank Select LSB
7. Patch Program Number

Die ersten drei Bytes nach dem "Sound Mode"-Byte betreffen also immer Performances, unabhängig vom Modus. Willst du Patches wechseln, dann musst du für diese drei Bytes (also 2., 3. und 4. in der Auflistung oben) irgend einen Dummy-Wert senden (z. B. drei Mal 00) und erst dann kommen die Patchwechsel-Meldungen (5., 6. und 7.). Dein zweites Beispiel müsste daher meiner Meinung nach so aussehen:

F0 41 10 00 6B 12 01 00 00 00 00 00 00 00 57 42 22 44 F7

Jetzt kommen 7 Daten-Bytes nach der Start-Adresse, und die letzten drei beinhalten die Patch-Infos. Die Prüfsumme dürfte sich nicht ändern.

Grüsse,
synthos
 
  • Gefällt mir
Reaktionen: 2 Benutzer
SysEx wird dringend benötigt. Zum Einen kann Roland nicht per reinem Bank Select zwischen Performance und Patch schalten, zum anderen nutze ich einen alten Miditemp PMM88. Der kann Bank Select leider nur als SysEx senden.

Da hast Du offenbar die Bedienungsanleitung des PMM-88 falsch verstanden. Ich nehme an, Du sprichst von der SEND-Funktion, dort wird auf Seite 16 unten ein Beispiel mit Sysex genannt, aber obendrüber gesagt, daß dies nur ein Beispiel ist, aber in dieser Funktion beliebige Datenbytes gesendet werden - lies einfach nochmal nach. Auf Seite 17 wird nämlich als Beispiel ein LocalOff gesendet.

Es ist allerdings richtig, daß viele Geräte einen solchen Moduswechsel ausschließlich via Sysex vornehmen können. Dabei ist Roland aber noch einfach, da man ab den digitalen Synthesizern ein für bisher jedes Roland-Gerät geltendes Standardformat eingeführt hat, was insbesondere die Erstellung von Editorprogrammen deutlich vereinfacht, da die Kommunkation immer in der gleichen Form abläuft. Wenn ich da an andere Hersteller denke, die bei jedem neuen Gerät ein anderes Format benutzen ...

Beim Fantom XR müßte ich mir das mal anschauen. Hast Du einen Link zur Sysex-Doku?

BTW: diese Doku gibts immer nur in englisch und oft kann man froh sein, wenns überhaupt eine gibt oder sie korrekt ist. Die muß ja auch jemand schreiben, und ich hab da schon alles erlebt:
- völlig fehlerhafte Dokumentationen (bei Ensoniq hab ich da am meisten geflucht)
- garkeine Sysex-Doku (zum Ensoniq ASR-X gabs keine, haben wir dann selbst aus der der MR-Serie abgeleitet)
- Befehle, die in der Doku stehen, sind in der Firmware des Gerätes garnicht erst eingebaut
 
Um microbug zu ergänzen: das PMM-88 kann also durchaus Bank Select Befehle mit der SEND-Funktion senden. Du musst dazu allerdings die notwendigen 6 MIDI Bytes genau richtig eingeben (dezimal oder hexadezimal möglich), auch unter Berücksichtigung des MIDI-Kanals.

Die notwendigen Bank Select MSB und LSB Werte sind im Manual auf Seite 270 genau angegeben. Für User Perfomances wären das z.B. MSB = 85, LSB = 0. Nehmen wir an, der Control Channel des Fantom XR ist auf Kanal 4 eingestellt (1-basierte Zählung), musst du folgende Bytes eingeben:

0xB3 0 85
0xB3 32 0

gefolgt von einem Program Change, z.B. für Program No. 034

0xC3 33


Chris
 
Hast du das Problem schon im Griff? Ich schalte meinen Fantom XR auch mit dem PMM um, kreuz und quer dur Patches und Performances - klappt prima.
Sag Bescheid, wenn du die entsprechenden sysex-Dateien brauchst (hab sie im PMM-Editor abgespeichert). Ich kann sie dir dann auch per mail schicken (einfach PN mit deiner Adresse an mich).

Wimsy
 
Danke euch!

Ich habe das Problem gelöst, in dem ich einfach die "single" Sounds über eine Performance fahre und somit nicht zwischen Patch und Performance umschalten brauche.

Aber: Wirklich zufiredenstellend ist das nicht, gerade, weil sich ja bekanntlicherweise der Sound ändert wegen den Effekten. :)

@ strogon14: Hier der Link zur Doku: http://home.roadrunner.com/~jgglatt/tutr/rolsysx.htm

@ Wimsy: PM :)


Danke euch!


Viele Grüße,
kahero
 
sysex-Dateien sind unterwegs. Viel Erfolg! Gib Bescheid, ob´s klappt.

Wimsy
 
Die Listen und auch das Manual habe ich bereits. Trotzdem danke. :)

Aber nein, das hilft mir alles nichts. Ich steig da einfach nicht hinter.

Ich habe mir aber etwas anderes überlegt und werde diesen Thread als gelöst markieren (wenn mir jemand sagt, wie das geht). Werde aber einen neuen Thread eröffnen. :)

Vielen Dank euch.


Viele Grüße,
kahero
 
Wenn Du sagst, wo genau Du nicht hinter steigst, kann man Dir vielleicht helfen. Sysex ist keine Raketenwissenschaft, erfordert aber Grundlagen in Hexadezimalzahlen und ein wenig Geduld. Manchmal hilft auch, das SoundDiver Programming manual von www.deepsonic.ch runterzuladen und dort die Tutorials zu lesen, auch wenn das wieder nur in Englisch ist.
 
Ich versteh das GANZE nicht. :)

Ich will folgnedes machen:
Es soll zwischen Patch- und Performance-Modus geschaltet werden. (das funktioniert auch) Außerdem soll die Bank gewechselt werden und gleichzeitig das Programm. Außerdem kommt hinzu, dass ich die Checksumme wohl nicht richtig berechne.

Ich habe schon SEHR VIEL gelesen und ausprobiert. Aber irgendwie klappt der ganze SysEx Kram nicht. Und meine Englisch ist eher sehr schlecht. :)

Vielleicht wäre es hilfreich, wenn mir mal jemand erklärt, wie man (so dass sie funktioniert) die Checksumme berechnent. Außerdem wäre es vielleicht hilfreich, wenn mir jemand mal zwei oder drei funktionierende SysEx Strings "schreiben" könnte für sagen wir ein oder zwei Patches und ein oder zwei Performances. So könnte ich evtl. verstehen, wie das damit funktioniert.

Habe aber noch ein weiteres Problem, welches der PMM88 definitiv nicht lösen kann. :) FilePlayback. Habe dazu auch noch einen anderen Thread eröffnet. Liebäugle mit einem Miditemp aus der MP Serie.

Die SysEx Sache wäre aber vielleicht trotzdem hilfreich zu verstehen. :) Also, wenn du mir vielleicht doch helfen könntest. :)


Viele Grüße,
kahero
 
Bei Sysex kann ich Dir auf jeden Fall helfen, hab schließlich etliches damit gemacht. Schreib mir ne PN und dann sehen wir weiter :)
 
Ich würde gerne wissen, ob du meinen String aus #5 einmal ausprobiert hast. In #9 hast du nur einen workaround erwähnt, der dann offenbar doch nicht so gut war?
 
Bei Sysex kann ich Dir auf jeden Fall helfen, hab schließlich etliches damit gemacht. Schreib mir ne PN und dann sehen wir weiter :)

Lasst uns das doch hier im Thread bereden, dann profitieren andere in Jahren auch noch davon. Ich denke, hier sind viele Sysex-Kenner versammelt, die des Rätsels Lösung auch gerne wissen würden bzw. zur Lösung beitragen könnten.

Harald
 
... Ich würde gerne wissen, ob du meinen String aus #5 einmal ausprobiert hast. ...

Ja, hatte ich. Der hat auch eigentlich funktioniert. Wenn ich aber selbst einen String erstelle, klappt das irgendwie nicht.

... In #9 hast du nur einen workaround erwähnt, der dann offenbar doch nicht so gut war?...
Das war nur eine Art "Notlösung". So kann ich aber nicht alle Effekte im Patch nutzen und brauche wirklich pro Song eine Performance. Mit denen will ich aber sparen, da ich viele Songs am Start haben muss. :) Meine eigentliche Idee ist, die Performances nur für Splits und Layers zu verwenden und "Singlesounds" ausschließlich über den Patchmode. Auch will ich alle 16 Slots einer Performance ausnutzen. Beispiel: Song 1 belegt Performance Slot 1-5 für Splits und Layers. Song 2 belegt in der selben Performance Slot 6-8. Song 1 wird auf MIDI Kanal 1 eingestellt und Song 2 auf MIDI Kanal 2. Das Kanal-Switching soll dann die Matrix machen. :)

Da der String aus #5 funktioniert, liegt das Problem warscheinlich bei der Berechnung der Checksumme.

Dazu habe ich im Internet schon viel drüber gelesen, aber irgendwie krieg ich das nicht hin. Vielleicht hat jemand eine verständliche Anleitung dazu. :)

Allerdings werde ich wohl wirklich den PMM88 ausrangieren müssen und zu einem Multiplayer wechseln müssen. (siehe anderer Thread, ich brauche wieder BackingTracks) Ich glaube, dass der dann "normal" MSB/LSB senden kann.

Wäre aber trotzdem toll, wenn man diese "SysEx-Raketenwissenschaft" verstehen würde. :)


Viele Grüße,
kahero
 
Lasst uns das doch hier im Thread bereden, dann profitieren andere in Jahren auch noch davon. Ich denke, hier sind viele Sysex-Kenner versammelt, die des Rätsels Lösung auch gerne wissen würden bzw. zur Lösung beitragen könnten.

Von mir aus gerne, dachte nur, daß der ganze Zahlensalat bissl zu speziell sein könnte :)

Was den Player betrifft: MIDITemp MP-88 ist eine PMM-88E mit MIDIplayer und der neuen Bedieneinheit, findet man öfter gebraucht als eine PMM-88.

Am Besten im Handbuch schauen, was das Ding alles kann: http://www.miditemp.de/media/files/downloads/PM88E-Bedienungsanleitung.pdf bzw neuere Modelle mit MIOC: http://www.miditemp.de/media/files/downloads/Multiplayer-Bedienungsanleitung.pdf
 
Ja, hatte ich. Der hat auch eigentlich funktioniert. Wenn ich aber selbst einen String erstelle, klappt das irgendwie nicht.

Da der String aus #5 funktioniert, liegt das Problem warscheinlich bei der Berechnung der Checksumme.
Danke für die Rückmeldung. Es ist gut zu wissen, dass das funktioniert.

Die Prüfsumme bei SysEx-Befehlen von Roland wird so berechnet, dass die Summe aus Adress- und Datenbytes sowie der Prüfsumme ein ganzzahliges Vielfaches von 128 (d. h. ohne Rest durch 128 teilbar) ist. Deswegen musst du zuerst die Summe s der Adress- und Datenbytes berechnen und dann den Rest r dieser Zahl nach Division durch 128: s = 128*n + r, mit r < 128 und n eine ganze Zahl, deren Wert aber uninteressant ist. Die Prüfsumme x muss jetzt erfüllen, dass s + x = 128*m, wobei m eine beliebige ganze Zahl ist. Wenn wir für s den Ausdruck von oben einsetzen, erhalten wir 128*n + r + x = 128*m. Diese Gleichung ist erfüllt, wenn die Prüfsumme x = 128 - r ist.

So wird die Prüfsumme berechnet, und das hast du in deinen Beispielen in #1 schon richtig gemacht.

Grüsse,
synthos

[edit]Beachte noch, dass auch die Prüfsumme x < 128 sein muss. D. h. wenn zufällig schon r = 0 ist, dann ist auch x = 0.[/edit]
 
Zuletzt bearbeitet:

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben