Benötige Hilfe bei der Erstellung von Casio MZX500 SysEx Strings auf Basis der Casio SysEx Dokumentation

Hallo Mitmusiker,
ich möchte einen Hardware MIDI-Controller zur Steuerung bestimmter Parameter für das CASIO MZX500 entwickeln.
Nach meinen bisherigen Erkenntnissen kann ich bereits diese Parameter über MIDI-Commandos (SysEx, RPN und NRPN) Controller steuern (siehe Bild).
Bei manchen Funktionen sendet das MZX500 bei Parameter-Änderungen SysEx-Daten, die ich mit dem MidiOX Tool am PC ansehen kann.
Das hilft dann, um weitere Erkenntnisse zu bekommen.
Es gibt aber verschiedene Bereiche im MZX500, z.B. "TONE", die leider keinerlei Daten senden.
Nach der CASIO SysEx Anleitung soll es aber möglich sein, einzelne Parameter in diesem Bereich abzufragen und zu senden.
Nachdem ich nun schon mehrere Tage erfolglos versucht habe, die entsprechenden SysEx-Kommandos an das MZX500 zu senden, weiß ich nicht mehr weiter.
Es mangelt an der Syntax, also welche Struktur / Abfolge der SysEx-String haben muss, um eine Parameter-Änderung auszulösen.
Soweit ich es verstehe, ist es erforderlich zum Senden von Parametern aus dem Bereich "TONE" verschiedene Bausteine kombinieren.
Es geht konkret um die Seiten von Seite 32 bis 35 in der angehängten Casio SysEx Dokumentation.
Vielleicht habe ich es einfach nicht richtig verstanden und jemand mit mehr Erfahrung, wie man die Angaben interpretiert, kann helfen?
Wie gesagt, die komplette SysEx-Dokumentation von Casio befindet sich (zur Erleuchtung) im Anhang.
Ein paar Beispiele, wie man bestimmte Parameter (in der Dokumentation von Seite 32 bis 35) per SysEx ändert, könnte mich auf den richtigen Weg bringen.
Es wäre toll, wenn ich Hilfe bekommen könnte.

Freundliche Grüsse


Beispiel, was ich gerne steuern würde:
Tone Parameter.jpg

Das kann ich schon steuern:
AETEK MZX500 MIDI Controller Entwurf 0.01 07.Sept.2022 1024x768.jpg
 

Anhänge

  • MIDI Implementation MZX_midi_imple_DE.pdf
    149,7 KB · Aufrufe: 15
Damals beim CZ1000 habe ich mich schon gefragt, was die Casio-Leute wohl geraucht haben. Hier legen sie nochmals eine Schippe drauf. Ich schaue noch mal im Detail, aber einfach ist das nicht.

Gibt es eine bestehende Software, die Du belauschen könntest?
Von wann ist das Gerät? Sprich, gibt es noch Support von Casio?

Immerhin hübsch mit LaTeX gesetzt und Binärformat und Hexformat sowie normalen Midi-Krams nochmal genau erklärt.
 
Hallo,
das MZX500 erschien in Jahr 2016. Von Casio gab es nur ein paar Firmware-Updates, aber keinen Support.
Auch habe ich im Casio Forum schon nach Hilfe gefragt, aber keine Antwort erhalten.
Es gibt keinen Editor, mit dem man am PC Parameter senden kann. Nur der Casio-Sample-Manager ist verfügbar.
Dort kann man am PC Sample-Sounds erstellen und offline Klangparameter einstellen. Dann erzeugt die Software eine verschlüsselte Datei, die per USB-Stick in das MZX500 importiert werden kann. Umgekehrt funktioniert es nicht.
Gestern hatte ich die Idee, mal nach der SysEx Implementation des Vorgängers (MZ2000, Erscheinungsjahr 2001) zu suchen. Ich hatte noch nicht genug Zeit, um mich intensiv damit zu beschäftigen. Es sieht so aus, als ob Casio dieses Verfahren von damals übernommen hat und nur Anpassungen an die neuere MZX500-Hardware stattgefunden hat. Auch scheint die MZ2000 SysEx Beschreibung etwas mehr Informationsgehalt zu haben. Ich habe die SyseEx Implementation des alten MZ2000 mal hier angehängt, weil sie ein wenig mehr Informationen bereitstellt.
 

Anhänge

  • CASIO MZ2000 MIDI Implementation.pdf
    163,5 KB · Aufrufe: 3
Dort sind ein paar Beispiele drinnen, vielleicht hilft es was. Ich schaue mal, erwarte aber keine Wunder.
 
Nö, das MZ2000 Format ist komplett anders und das vom MZX500 verstehe ich nicht. Wahrscheinlich müsste man es ins Japanische übersetzen und dann versteht man vielleicht etwas. Aber was dort mit Parameter Set und Block und Array etc. gemeint ist. Sorry.
 
Ich habe inzwischen die MIDI Implementationen verschiedener CASIO Instrumente der letzten 20 Jahre angesehen und festgestellt, dass alle das gleiche, komplizierte System bei SysEx verwenden. Wahrscheinlich findet man im Netz auch deshalb keine Informationen von Anwendern, weil sich das niemand zumutet. So ist das halt bei CASIO. Es hätte ja sein können, dass schon jemand das System verstanden hat und in eine verständlichere Form gebracht hätte. Na dann werde ich mal weiter versuchen dahinter zu kommen...
 
Hast Du irgendwelche Beispiele gesehen? Oder Editoren, die Du belauschen könntest? Vielleicht gibt der Support doch Hinweise. Was z.B. meinen sie mit 55-0:0 oder in den anderen Zeilen mit diesen zwei Punkten. Viel Erfolg auf jeden Fall.

Das Format zwischen MZ2000 und MZX500 ist aber nicht gleich. Es hat gewisse Ähnlichkeiten, aber sonst ist anders.
 
Lad dir midimonitor runter und fang damit die Daten ab und schick dann den String zurück, damit solltest du dich Stück für Stück vorarbeiten können. So hab ich es bei meinen Geräten gemacht, allerdings nicht für Casio.
 
Was das MZX500 sendet, habe ich mit schon mit MidiOX aufgefangen und das kann ich auch zurücksenden.
Leider sendet das Instrument in dem Bereich, in dem die Parameter für die einzelnen Parts / Midi-Kanäle sind, leider gar nichts, was ich aufzeichnen könnte. In der Parameterliste steht aber, dass praktisch alle Parameter gesendet werden können.
Ich habe jetzt noch zwei Tage verbracht, den Aufbau der betreffenden SysEx Meldungen anhand der Dokumentation zusammenzustellen.
Heute habe ich dann verschiedene Sysex Strings an das MZX500 gesendet, um den Effekt auf einem Part umzuschalten.
Leider hat das MZX500 meine Bemühungen bislang ignoriert :sad:
Ich kann aber mal meine aktuellen Muster hier reinstellen, falls jemand Spaß hat den Fehler in der Denksportaufgabe zu finden.
 
Achtung! Die folgende Interpretation der MIDI Implementation funktioniert so noch nicht!

a) Mein Versuch, die Informationen zu bündeln und zu strukturieren:
Die MZX500 Sysex-Daten für den Bereich "TONE" (Part / MIDI Kanal) bestehen aus einem Header, der immer gleich bleibt und einem "Body", der variiert:
Header: Device-ID: $7F bedeutet akzeptiere alle (einstellungsunabhängig)
Body: "cat" Category, hier 03 für den Bereich "TONE", "mem" immer 1, "pset" Numer Parameter Set in LSB und MSB, "blk" Block Number (Angabe des Parts / Midi Kanals) oder bei HexLayer des Layers, "prm" Parameter-ID wie in der Liste ab Seite 32 aufgeführt, "idx" Data Index Number: Sende-Startposition im Array als LSB und MSB, "len" Länge der Daten im Feld "data" (Bitbreite) gemäß Angabe in der Parameter Liste (Seite 32), "data" Variable Daten (angabe auf welchen Wert der gewünschte Parameter gesetzt wird).

MZX500 01.jpg

b) Versuch aus den Erkenntnissen einen SysEx String zu bauen, der einen zuvor auf Part1 eingestellten DSP Effekt <> Default Wert auf den Default Wert = 0 zurücksetzt.
Noch nicht sicher bin ich bei "blk" Block Number, "idx" Arry Index.
Data Block Parameter Value LSB=0 und MSB=0
MZX500 02.jpg

c) Versuch, die Informationen der Parameter-Liste übersichtlicher darzustellen:
MZX500 03.jpg

Irgendwas habe ich falsch gemacht. Beim Senden des SysEx Strings erfolgt noch keine Reaktion.
Umgekehrt habe ich einen SysEx String eines anderen Parameters, der automatisch gesendet wurde, erfolgreich an das MZX500 zurücksenden können. Der Parameter stellte sich dann entsprechend ein. Einen Hardware- oder Softwarefehler kann ich somit ausschließen.

Von Casio gibt es (leider) keinen Support.
Das Casio Forum besteht aus durchschnittlichen Anwendern, von denen bedauerlicherweise auch keiner Erfahrung mit Casio SysEx hat.
Scheinbar interessiert sich niemand dafür, weil die meisten Anwender die Kiste als Arranger nutzen, was nicht meine Anwendung ist.
Die Synth Preset Sounds taugen nicht viel, können aber durch eigene Samples ersetzt werden. Die Effekte sind auch von guter Qualität.
Interessant ist die gebotene Ausstattung, die einzigartig und umfangreich daherkommt und extrem viele Optionen bietet.
 
Zuletzt bearbeitet:
Das hatte ich Dienstag auch so auf dem Notepad. Unklar einfach, was bei den "spannenden" Paramtern eingetragen werden muss. Auch gibt es scheinbar zwei Arten des SysEx und es nicht konsistent in der Anleitung.

Umgekehrt habe ich einen SysEx String eines anderen Parameters, der automatisch gesendet wurde, erfolgreich an das MZX500 zurücksenden können.
Stell den doch mal hier rein. Einfach als Datei aus MidiOX. Dazu noch die Details, was das genau am Gerät war. Ich konnte z.B. in der Anleitung kein Mapping zu "Blöcken" herstellen.
 
Ja, es gibt sogar 3 SysEx Varianten. Was ich empfangen / senden konnte entspricht aber 12.2 (unten).

Die Paramtergruppe, die mich interessiert wird in 12.3 (unten) genannt. Diese Parameter sendet das MZX500 nur auf Anfrage, wozu man aber den passenden SysEx String benötigt. Das heisst, wenn man den Parameter anfordern kann, dann weiss man auch, wie er gesendet wird.

12.1 Universal Real Time System Exclusive Message
Message Format: F0H 7FH ddH....F7H
dd: Device ID
12.1.1 Master Volume
Message Format: F0H 7FH ddH 04H 01H llH mmH F7H
dd: Device ID
ll: LSB Value(Receive:Ignored)
mm: MSB Value

12.2 Universal Non Real Time System Exclusive Message
Message Format: F0H 7EH ddH....F7H
dd: Device ID
12.2.1 GM System On
Message Format: F0H 7EH ddH 09H 01H F7H
dd: Device ID

12.3 Instrument-Specific System Exclusive Message
Message Format: F0H 44H ... F7H
This message can be used to send the Instrument memory status, for two-way transfer of special
operation commands and user data, to perform sound source parameter operations, etc. For more

information, see “IV Instrument-Specific System Exclusive Messages”.
 
Die Reihenfolge von MSB und LSB ist nicht einheitlich in den verschiedenen Sektionen der Anleitung.

Bei 13.3.8 widersprechen sich die Angaben sogar, bei Format steht zuerst LSB und weiter unten in der Sequenz ist das LSB dann am Ende der Binärsequenz:

LSB: 0nnnnnnnB
MSB: 0mmmmmmmB

Direkt danach heißt es dagegen dann 'mmmmmmmnnnnnnnB'.

Ich würde das mit der Reihenfolge jetzt erst mal systematisch an allen fraglichen Stellen durchtesten und nicht davon ausgehen, dass die Dokumentation stimmt. In dieser ändert sich auch die Schreibweise für Hexadezimalzahlen (7FH vs 0x7f) implizit, was nicht gerade für besondere Sorgfalt steht.
 
Ich glaube nicht, dass es ein Fehler ist, weil ich in einer ähnlichen CASIO MIDI Dokumentation (ein PX310) das gleiche gefunden habe:
casio mn.jpg
 
Die Beschreibung im Dokument ist so grauenhaft schlecht, man weiss einfach nicht, was nun wo und wie hingehört, dass das mit der Endianness eher das geringste Problem ist.
Oder versteht jemand, was pset, blk und idx bedeuten (abseits von dem Geschriebenen) und wie sie zum Instrument mappen?
Was soll Block 55-0:0 oder 6-0:Key # bedeuten.
 
Ohje, der Klassiker.

Sysex Dokumentationen sind zu 99% fehlerhaft, das kann ich aus langjähriger Erfahrung und Erstellung etlicher Adaptionen für SoundDiver sagen. MSB und LSB sind eigentlich immer einheitlich und oft vom verwendeten Prozessor (siehe Big und little Endian) abhängig, das wechselt normal nicht innerhalb des gleichen Gerätes.

Wenn Du Dir Grundlagen für die Sysex-Verwaltung anschauen willst, dann schau mal in das SoundDiver Programming manual rein, das gibts auf deepsonic.ch (nicht das normale Handbuch, es muß das Programming manual sein), dort wird viel im Detail erklärt, auch über Transferformate, Prüfsummen etc., das hilft evtl beim Verständnis.

Und: Sysex ist NIE einfach (außer vielleicht das vom STVC, das weder Parameter Changes noch Requests hat ...)

Ich schau mir das evtl auch mal an wenn ich Zeit finde ...

Sende dem Ding doch mal das hier:

F0 7E 7F 06 01 F7 (Universal MIDI Device Inquiry) und gucke, was zurückkommt, falls nicht eh schon beschrieben. Das Format der Antwort ist standardisiert und ebenfalls im Sounddiver Programming manual beschrieben.
 
Zuletzt bearbeitet:
Ich habe das hier gefunden (für Modell PX310) und versuche über das gezeigte Beispiel hinter den Aufbau des SysEx Strings zu kommen.
Geschmunzelt habe ich bei dem Parameter "Octave Shit".
PX310.jpg
 
Auf der Suche nach möglichen Hilfen fand ich dies hier (Nicht für MZX500 aber CASIO):
A hex editor and tone editing tool for Casio keyboards. "Real-time" parameter control works on all Casio CT-X keyboards, and upload/download of User Tones is possible with keyboards which have User Tone memory (e.g. CT-X3000 or X5000).
ToneTyrant
Demo Video
Also ein User hat es scheinbar hinbekommen mit dem CASIO Sysex.
 
Sende dem Ding doch mal das hier:

F0 7E 7F 06 01 F7 (Universal MIDI Device Inquiry) und gucke, was zurückkommt, falls nicht eh schon beschrieben. Das Format der Antwort ist standardisiert und ebenfalls im Sounddiver Programming manual beschrieben.
Casio Test 1.jpg
 
Hallo Mitmusiker,
inzwischen habe ich eine angepasste MIDI-Implementation eines Users für das Casio WK6600 gefunden. Dort hat der freundliche Anwender für das WK6600 einige Beispiele zum Senden und Abfragen einzelner Parameter hinzugefügt. Auf dieser Basis habe ich versucht, eine Übersetzung der SysEx Befehle für mein MZX500 zu erstellen. Dies hat mich tatsächlich ein bisschen weiter gebracht. Ich kann jetzt Parameter abfragen und senden. Leider verstehe ich immer noch nicht, wie Casio die einzelnen Instrumenten Parts/Kanäle adressiert. Das führt dazu, dass ich zwar Parameter ändern kann, aber ohne zu wissen, wie man den Parameter Offset angibt. Frage ich den betreffenden Parameter ab, dann sehe ich aber den zuvor gesendeten Wert. Ist der angeforderte Sysex String des gewünschten Parameters falsch, erhält man keine Rückantwort vom MZX500.

1v2
MZX500 Format 1 of 2.jpg
2v2
MZX500 Format 2 of 2.jpg
Example Set Octave Shift Parameter.jpg
Am MZX500 bemerke ich keine Änderung nach dem Senden eines Parameters. Das liegt bestimmt daran, dass ich immer noch nicht verstanden habe, wie Casio den Parameter Offset berechnet und über welche Parameter man ihn definiert. Beim WK6600 gibt es anscheinend im Feld "Block Number" ein Byte, über welches man den Zielpart (1...16) definiert. Dies funktioniert bei meinem MZX500 leider nicht so. Weil ich den Offset nicht korrekt angeben kann, kann ich die gewünschten Parameter nicht adressieren. Ich verstehe immer noch nicht die Parameter "pset" (Parameter Set), "Block-Number" und "idx".


Auf den beigefügten Fotos der MZX500 Midi Implementation habe ich die für mich unklaren Bereiche gelb markiert. Was meint Casio mit Block 55-0:0 oder ↑ beziehungsweise Block 6-0:Key # ?Tone Parameter Block - Array.jpgTone Block Parameter.jpg
BASIC Parameter.jpg
Data Index Number.jpg
Parameter Set Number.jpg
 
Du hast also einen IPR, den der MZ500 mit einem IPS beantwortet. Wenn Du einen IPS mit anderen Werten sendest und dann wieder mit einem IPR abfragst, dann kommt ein IPS mit dem geänderten Wert zurück. Das ist doch schon mal etwas.

inzwischen habe ich eine angepasste MIDI-Implementation eines Users für das Casio WK6600 gefunden
Kannst Du das bitte verlinken?

Hat denn der MZ500 eine nach Aussen sichtbare Speicherstruktur. Ich hatte mal das Handbuch gescreent, aber das war too much information. Vielleicht hast Du diese Info ja im Kopf und kannst im Handbuch die Seite(n) benennen.

Klappt das mit dem IPR/IPS denn mit unterschiedlichen Adressen? Also, wenn Du einfach eher Zufällig da mal was an den vielen Nullen änderst? Funktioniert es auch für eine andere Anzahl an Bytes, also mal 00h 00h einfügen oder weglassen?
 
Was meint Casio mit Block 55-0:0 oder ↑ beziehungsweise Block 6-0:Key # ?

1663515506646.png


Der erklärt zumindest mal, WAS das ist. Leider hilft das beim WIE nicht weiter. Ich denke, dass da ganze Tabellen mit notwendigen Infos in dem Handbuch schlicht und einfach fehlen. Bei "55-0:0" mutmaße ich, dass das Bitfeld 56 Bit breit ist und die Start-Info eben bei "0" liegt. MSB ist links, LSB rechts; das würde ich anhand der Reihenfolge einfach mal so interpretieren. Die Blockgröße von 4 x 14 Bit = 56 scheint auch ziemlich passgenau mit dem Abschnitt über die Arrays zu korrespondieren.

1663515668492.png

Für Tests mittels IPS/IPR bietet sich IMHO der Parameter "Name" an. Zum einen braucht man sich wegen der Startadresse keine Gedanken machen, weil "0000". Da sollten 16 (Array: 0x10 = 16!) Buchstaben bei raus kommen und man muss an dieser Stelle auch noch keine 7-Bit/8-Bit-Konversionen ausführen, was ich an Size "7" mal einfach so rauslesen würde...
1663516300963.png

Der Pfeil nach oben bedeutet IMO, dass das der darüber liegende Wert ist. Im Falle aller Tone-Parameter eben "55-0:0". "Block 6-0:Key" würde ich da erstmal ignorieren. Das kommt im gesamten Abschnitt über "Tone" nicht vor, sondern erst später bei den Drums.
 
Du hast also einen IPR, den der MZ500 mit einem IPS beantwortet. Wenn Du einen IPS mit anderen Werten sendest und dann wieder mit einem IPR abfragst, dann kommt ein IPS mit dem geänderten Wert zurück. Das ist doch schon mal etwas.
Ja, ich kann mir einen Parameter aussuchen und mit der angegebenen Parameter-ID abfragen, neuen Wert senden und zur Kontrolle wieder abfragen. Soweit ein Fortschritt.
Hat denn der MZ500 eine nach Aussen sichtbare Speicherstruktur. Ich hatte mal das Handbuch gescreent, aber das war too much information. Vielleicht hast Du diese Info ja im Kopf und kannst im Handbuch die Seite(n) benennen.
Also das Casio Handbuch ist eine Katastrophe. Nach einem Jahr Studium und vielen Experimenten habe ich letztendlich meine eigene Bedienungsanleitung für das MZX500 geschrieben, um bei Bedarf was nachsehen zu können. Also eine Speicherstruktur habe ich im Handbuch nicht gesehen.
Klappt das mit dem IPR/IPS denn mit unterschiedlichen Adressen?
Ja.
Also, wenn Du einfach eher Zufällig da mal was an den vielen Nullen änderst?
Hab schon alles Mögliche ausprobiert, andert aber beim Block Parameter nichts. Bei den anderen gibt es meist keine Rückantwort, wenn ich da was anderes wie 00 sende.
Funktioniert es auch für eine andere Anzahl an Bytes, also mal 00h 00h einfügen oder weglassen?
Nein, das geht nicht. Sende ich weniger Bytes, z.B. beim Block-Parameter statt 8 nur 6 oder 4 kommt keine Antwort zurück.
 
Anhang anzeigen 152701


Der erklärt zumindest mal, WAS das ist. Leider hilft das beim WIE nicht weiter. Ich denke, dass da ganze Tabellen mit notwendigen Infos in dem Handbuch schlicht und einfach fehlen. Bei "55-0:0" mutmaße ich, dass das Bitfeld 56 Bit breit ist und die Start-Info eben bei "0" liegt. MSB ist links, LSB rechts; das würde ich anhand der Reihenfolge einfach mal so interpretieren. Die Blockgröße von 4 x 14 Bit = 56 scheint auch ziemlich passgenau mit dem Abschnitt über die Arrays zu korrespondieren.

Anhang anzeigen 152702
Der Block Bereich dient nach den vorhandenen Informationen zur Unterscheidung der Parts / Kanäle:
Block Number.jpg
Für Tests mittels IPS/IPR bietet sich IMHO der Parameter "Name" an. Zum einen braucht man sich wegen der Startadresse keine Gedanken machen, weil "0000". Da sollten 16 (Array: 0x10 = 16!) Buchstaben bei raus kommen und man muss an dieser Stelle auch noch keine 7-Bit/8-Bit-Konversionen ausführen, was ich an Size "7" mal einfach so rauslesen würde...
Anhang anzeigen 152703
Ich bin nicht sicher, ob Parameter-Änderungen vom MZX500 immer im Display angezeigt werden.
So eine Idee hatte ich auch schon, aber ich konnte keine Änderung im Namen sehen.
Der Pfeil nach oben bedeutet IMO, dass das der darüber liegende Wert ist. Im Falle aller Tone-Parameter eben "55-0:0". "Block 6-0:Key" würde ich da erstmal ignorieren. Das kommt im gesamten Abschnitt über "Tone" nicht vor, sondern erst später bei den Drums.
Das wäre ja dann mal ausnahmsweise einfach :)
 
Ich bin nicht sicher, ob Parameter-Änderungen vom MZX500 immer im Display angezeigt werden.
So eine Idee hatte ich auch schon, aber ich konnte keine Änderung im Namen sehen.

Meine Idee war eher, den aktuell eingestellten Tone-Namen einfach auszulesen und die Sysex-Message darauf hin zu zerlegen. ASCII-Buchstaben sind ja ne vergleichsweise einfache Nummer. Im Display muss halt einfach stehen, wie der aktuelle Tone im Zwischenspeicher heißt und laut Anleitung gehe ich mal davon aus, dass dieser eben 16 Buchstaben lang sein darf, aber nicht muss.
 
Meine Idee war eher, den aktuell eingestellten Tone-Namen einfach auszulesen und die Sysex-Message darauf hin zu zerlegen.
Das war auch immer meine Vorgehensweise. Dann habe ich einzelne Parameter geändert und geschaut, wo sich wie etwas ändert, wenn keine Doku vorhanden.

Es gibt an dieser Stelle aber einen Fallstrick, wenn das Übertragungsformat nicht linear, sondern irgendwie komprimiert wurde, und bei den Methoden, 8 und mehr gespeicherte Bits in 7 gesendete Bits zu packen, waren die Programmierer immer sehr kreativ im Erfinden immer neuer Varianten.

Auch hier empfehle ich als Grundlagenlektüre das schon erwähne Sounddiver Programming Manual.

Faustregel: wenn der Name im Hexdump nicht lesbar ist, handelt es sich entweder um einen nicht-ASCII-Zeichensatz (heute eher ungewöhnlich) oder um ein entweder komprimiertes oder genibbletes Transferformat.
 
Im Sounddiver Programming Manual steht leider nicht drinnen, wie die Casio Dokumentation zu verstehen ist. Komisch ist einfach, dass man eine Parameter ID und eine Adresse im Speicher gleichzeitig angeben muss. Wie genau, ist nicht offensichtlich und es passt nicht zur obendrein unklaren Organisation im Synth selber.
 
Hallo,
ich habe mich mit den aktuellen Erkenntnissen noch einmal mit dem "NAME" Parameter befasst und dieses Ergebnis erhalten:
  • Länge $01 ergab einen Antwort String mit 1 Byte als Namen im Datenteil
  • Länge $10 keine Antwort
  • Länge $0F ($10-$01=$0F), weil "len"-1 Byte ergab eine Zeichenkette
Casio Name Game Scr.jpg
Vor dem Anfordern des "Name" Parameters stellte ich alle 16 Parts auf verschiedene Namen ein, um eventuell herauszufinden, auf auf welchen Part sich die Antort bezieht.
Nach der Konvertierung von Hex nach Ascii erhalte ich "GrPnoConcert" -> Grand Piano Konzert
Dann habe ich gesucht, wo der Name im Display erscheint:

Main Screen (4 Namen) Parts 1...4
Main Screen.jpg

Mixer Parts 1...4:
Part 01-04.jpg

Mixer Parts 5...8:
Part 05-08.jpg
Mixer Parts 9...12:
Part 09-12.jpg
Mixer Parts 13...16:
Part 13-16.jpg
Ergebnis: Der Name erscheint nirgends.
Dann habe ich mich erinnert, dass das MZX500 eigentlich 3 Synthesizer a 16 Parts hat.
Zum Umschalten des Sythesizers ist der Button "Port" zuständig.
Ports MZX.jpg

Nach dem Umschalten auf "Port B" sah ich den Namen "GrPnoConcert" als Default Einstellung.
Port C hatte andere Namen.
Daraus folgere ich: Mit "Block" Wert "00 00 00 00 00 00 00 00" erhält man Werte von "Port B".
Soweit bin ich aktuell....
 


News

Zurück
Oben