Neuer OpenSource Sysex Librarian - The KnobKraft Orm

kris_
kris_
|
Oha, hat sich da aus Versehen der Synth umbenannt? Was habe ich da denn geraucht, am 5.11.2020 habe ich den Namen geändert. Kann das sein, dass Du einen Vorab-Version des Rev4 Moduls benutzt hattest? Sollte sich aber beheben lassen.

Eine Idee mit Bordmitteln - Du kannst über die Funktion "Export into PIF" (unten in der Buttonleiste) die alte Datenbank in ein "PIF" - patch interchange format - exportieren, also alle Rev4 patches. Das ist eine Textdatei (JSON), da könntest Du mit Bordmitteln Suchen und Ersetzen aus dem "Prophet-5 Rev4" den neuen Namen "Sequential Prophet-5" machen. Diese korrigierte PIF Datei kann dann einfach in eine neue, auch leere, Datenbank importiert werden mittels "Import sysex files from computer".

Falls das zu komplex ist, ping mich mal per PM an, dann kann ich versuchen, Dir die Datenbank zu fixen.
Nee quatsch, Du schreibst ja, ist andersrum - die neue Version nennt das Modul "Prophet-5 Rev4"? Das ist der alte Name, richtig ist Sequential Prophet-5. Schau mal nach im Setup Tab, ob Du ein User Adaptation Dir gewählt hast und ob da eventuell ein altes Modul liegt? Aber selbst wenn, sollte es das eingebaute Sequential Prophet-5 nicht verstecken <kratz am Kopf>.
 
kris_
kris_
|
@kris_ cool, daß Du auch hier bist. Hatten wir eigentlich nebenan auf fb schonmal über das Roland Standardformat gesprochen, welches es sich lohnen würde, als Klasse einzubauen, weil seit dem S-10 einheitlich? Das Einzige, was sich im Laufe der Zeit geändert hat, ist die Bytezahl bei der Geräte ID, die beträgt aktuell 4. Sounddiver hat das Format drin, aber nur bis 2 Byte IDs.
Eine Beschreibung des Formats kann ich gerne verlinken. Das würde die Einbindung von Roland Geräten massiv vereinfachen.

Danke für die Anleitung, die werde ich mir mal zu Gemüte führen, vielleicht kapiere ich ja doch was :)
Fällt mir gerade noch ein, ich hatte Ende letzten Jahres mal eine Demo Implementation von einem D-50 gemacht. Da ich keinen D-50 habe, ist das ein Schuss ins Blaue aber man sieht das Prinzip.

Die Datei ist hier: https://github.com/christofmuc/KnobKraft-orm/blob/master/adaptions/RolandD50.py

Der S-10 ist z.B. fast identisch, man muss bei den Rolands nur rausbekommen, welche Adressen und vor allem Größen von Blöcken für die einzelnen Datenteile verwendet werden. Das sieht man meiner Erfahrung nach am besten, wenn man sich Dateien von dem Gerät im HexEditor anschaut ;-)
 
microbug
microbug
MIDI Inquisator
Der S-10 ist z.B. fast identisch, man muss bei den Rolands nur rausbekommen, welche Adressen und vor allem Größen von Blöcken für die einzelnen Datenteile verwendet werden.

Exakt, und selbst dort gibts einen beinahe festen Aufbau der Adreßbereiche, der meistens bei 10 00 00 00 mit den Systemparametern anfängt und die Speicherplätze für Tones bei 40 00 00 00.

Sounddiver hatte das als Format fest eingebaut, könnte für Deinen Editor auch gehen, wenn man damit zB Funktionen wie setRolandBaseAdress(xxxxxxxx) und setRolandOffset(xxxxxx) bekommt, oder auch SetRolandModelID(<size>,<ID bytes>). Ebenso sind ja die Send und Request Commands immer gleich aufgebaut, also DT1 und DS1, die Bytezahl variiert nur durch die ModelID, die man dann zB 1x zu Beginn setzen müßte und dann aus DT1 und DS1 feste Funktionen machen könnte, bei denen man nur die Adressen und Anzahl der Bytes angeben müßte. Das nur mal als Idee so aus dem Ärmel, ich kann das auch gerne nochmal im Detail brainstormen wenn von Interesse.

Eine Adaption nur nach Doku zu bauen kann übrigens ziemlich schiefgehen, wie man bei MIDIQuest sieht, dort sind welche drin, die nie am Gerät getestet wurden. Nicht nur, daß die Dokus der Hersteller oft von Fehlern nur so strotzen (wenn es denn überhaupt eine Doku gibt), oft sind auch die Firmwares an dieser Stelle buggy - da hab ich zu meiner Sounddiver-Zeit und auch aktuell schon die seltsamsten Dinge erlebt. Aktuellstes Beispiel ist der Roland Fantom, der schon auf den ID Request falsch reagiert, indem er bei der „OMNI“-ID 0x7F auch genau diesen Wert zurückschickt anstatt seine eigene ID zu senden, wie es laut Spec sein soll.
 
Zuletzt bearbeitet:
D
Dr_Sax
...
Nee quatsch, Du schreibst ja, ist andersrum - die neue Version nennt das Modul "Prophet-5 Rev4"? Das ist der alte Name, richtig ist Sequential Prophet-5. Schau mal nach im Setup Tab, ob Du ein User Adaptation Dir gewählt hast und ob da eventuell ein altes Modul liegt? Aber selbst wenn, sollte es das eingebaute Sequential Prophet-5 nicht verstecken <kratz am Kopf>.
Ich habe mal ein screenshot der beiden Versionen des Setup gemacht:
 

Anhänge

  • Bildschirmfoto 2021-09-17 um 14.53.18.png
    Bildschirmfoto 2021-09-17 um 14.53.18.png
    300,1 KB · Aufrufe: 3
  • Bildschirmfoto 2021-09-17 um 14.55.28.png
    Bildschirmfoto 2021-09-17 um 14.55.28.png
    251,9 KB · Aufrufe: 3
kris_
kris_
|
Sounddiver hatte das als Format fest eingebaut, könnte für Deinen Editor auch gehen, wenn man damit zB Funktionen wie setRolandBaseAdress(xxxxxxxx) und setRolandOffset(xxxxxx) bekommt, oder auch SetRolandModelID(<size>,<ID bytes>). Ebenso sind ja die Send und Request Commands immer gleich aufgebaut, also DT1 und DS1, die Bytezahl variiert nur durch die ModelID, die man dann zB 1x zu Beginn setzen müßte und dann aus DT1 und DS1 feste Funktionen machen könnte, bei denen man nur die Adressen und Anzahl der Bytes angeben müßte. Das nur mal als Idee so aus dem Ärmel, ich kann das auch gerne nochmal im Detail brainstormen wenn von Interesse.
Aber das war nicht das SoundDiver Universal Module, sondern SoundDiver hatte ein spezielles Roland-Modul, oder?

Ich habe in Python mal angefangen, das Interface des SoundDiver Universal Modules nachzubauen, damit man solche Adaptionen einfach umziehen kann. Wie das aussehen könnte, kann man bei mir in der Kawai K1 Implementierung sehen. Da gibt es einen Block mit Daten, in dem der Synth konfiguriert wird, und der Code darunter wäre dann für alle Synths gleichbleibend:



Eine Adaption nur nach Doku zu bauen kann übrigens ziemlich schiefgehen, wie man bei MIDIQuest sieht, dort sind welche drin, die nie am Gerät getestet wurden. Nicht nur, daß die Dokus der Hersteller oft von Fehlern nur so strotzen (wenn es denn überhaupt eine Doku gibt), oft sind auch die Firmwares an dieser Stelle buggy - da hab ich zu meiner Sounddiver-Zeit und auch aktuell schon die seltsamsten Dinge erlebt. Aktuellstes Beispiel ist der Roland Fantom, der schon auf den ID Request falsch reagiert, indem er bei der „OMNI“-ID 0x7F auch genau diesen Wert zurückschickt anstatt seine eigene ID zu senden, wie es laut Spec sein soll.
Oh ja, da kann ich ein Lied davon singen! Das betrift leider nicht nur Vintage Synths, sondern z.B. der OB-6 ist richtig zickig, die bauen da mit jeder Firmware-Version neue Bugs ein und fixen ein paar alte, so dass man nicht mal einen Editor bauen kann, der mit jedem OB-6 funktioniert, ohne dass man sämtliche Firmware-Versionen durchprobiert. Ein Alptraum...

Ich mache daher Adaptionen eher auf Anfrage, wenn jemand sich zum Testen bereiterklärt. Den Teststatus gebe ich auf der github Page wieder, die Geräte, die als "Working" markiert sind funktionieren auch tatsächlich bei jemandem ;-)
 
colectivo_triangular
colectivo_triangular
|||||||||
Moin Leute,

Lock-down sei Dank habe ich tatsächlich Zeit gefunden, meinen für mich selbst gebauten Sysex Librarian soweit fertig zu stellen und auf Github hochzuladen (für Windows). Mac OS Version könnte angefertig werden mit Hilfe von jemandem, der einen Mac hat, gerne Kontakt aufnehmen!
Erstmal vielen Dank für deine Mühe! Ich bin tatsächlich unabhängig vom Forum darauf gestoßen und habe bereits mit dem OB-6 gute Erfahrungen gemacht. Was ich echt begrüßen würde, wäre ein Modus, bei dem man Patches ändern kann, ohne den Synth zwingend angeschlossen zu haben.
Konkret: Ich lade ein Sysex-File rein, um etwa die Patches umzubenennen. Das geht mit einem angeschlossenen Synth problemlos. Ohne den Synth geht das leider nicht. Und hier wäre es super, wenn man einfach - sagen wir "Prophet 5" - aus dem Menü auswählt und dann das Sysex-File importiert. Dann macht man alle Änderungen und speichert das File anschließend ab. Später kann man es dann an den Synth übertragen.
 
microbug
microbug
MIDI Inquisator
Aber das war nicht das SoundDiver Universal Module, sondern SoundDiver hatte ein spezielles Roland-Modul, oder?

Nein, das war im Universal Module, siehe Sounddiver Programming Manual. Das würde auch mit aktuellen Rolands gehen, wäre da nicht die maximal mögliche Model ID mit 2 Bytes, denn aktuell ist diese bei 4 Bytes angekommen.

Ich habe in Python mal angefangen, das Interface des SoundDiver Universal Modules nachzubauen, damit man solche Adaptionen einfach umziehen kann.

DAS ist genial, wenn Du das weitermachen könntest, dann ließe sich evtl. sogar ein Konverter bauen. Ich weiß ungefähr noch, wie die Adaptionen codiert sind, zB alle Sysex Strings mit +1 auf allen Bytes, evtl kann ich von Michael Haydn dazu noch Infos bekommen.
Sounddiver hat ja bereits viele Formate für Namen und Übertragungsformate drin, allerdings fehlen auch welche, zB bei den Packed Formaten, wo es eine weitere Variante gibt, die auch aktuell von Geräten genutzt wird, und die fehlende Möglichkeiten eines frei einstellbaren Handshakes - was man ja mit Python erledigen kann.


Apropos Adaptionen: wenn man eine für den Blofeld hat, kann man daraus problemlos eine für den Sledge machen, denn er ist ein Waldorf mit anderer Model ID und weniger Parametern, insbesondere im Multimode.

BTW2: die Novation KS Modelle haben einen Firmwarebug, der es verhindert, daß man alle Bänke per Sysex abfragen kann - Dump am Gerät dagegen geht, und Sounddiver erkennt das auch. Daher funktioniert auch die MIDIQuest Anpassung nicht, die genau das probiert, weil offenbar nie am Gerät getestet.

Falls Du mal was für den Novation Summit machen solltest, kann ich gerne testen. Das Sysex Format wurde ja von einem Forenkollegen analysiert und ist als Google Spreadaheet verfügbar. Ich will mir da mit Sounddiver zumindest einen Librarian bauen.
 

Similar threads

 


News

Oben