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: 5
  • Bildschirmfoto 2021-09-17 um 14.55.28.png
    Bildschirmfoto 2021-09-17 um 14.55.28.png
    251,9 KB · Aufrufe: 5
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.
 
kris_
kris_
|
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.
Die Idee wäre, das man einfach aus dem SoundDiver UI für die Adaptionen-Erstellung "abschreiben" kann, also aus dem Adaptionen Editor eines laufenden SoundDivers, denn es gibt ja diverse Synths, die da gut unterstützt sind. Leider ist das Adaptionen Format von SoundDiver binärer Kram, den man wohl nicht ernsthaft wird lesen können. Das Handbuch zum Adaptionen programmieren kenne ich, findet sich ja irgendwo im Netz.

Zur Zeit klemmt es beim KnobKraft Orm daran, dass ich mal die Unterstützung für mehrere Datentypen pro Synth auch in das Python Interface ziehen muss. In C++ geht das (bspw. hat meine Rev2 Unterstützung direkten Support für die Skalen-Files), aber das Python Interface ist noch nicht so mächtig wie der C++ Code. Trotzdem programmieren sich die Synths in Python viel einfacher, und man hat auch eine klarere Trennung. Man kann ja generell eher datengetrieben arbeiten oder Code-getrieben für so eine Adaption. Datengetrieben sieht immer einfacher aus, bis auf diesen Sonderfall stößt, der dann wieder Code-Änderungen nach sich zieht. Mit Code ist man mächtiger, hat aber mehr Arbeit wenn die Synths dann am Ende doch alle gleich sind (siehe mein Universal-Sequential Modul). Also braucht man wohl irgendwie beides.

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.
Danke, ist notiert!

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.
Oh Mann, davon gibt das überall so ein Krams. KnobKraft hat irgendwann mal einen "Receive Manual Dump" Knopf bekommen (ich glaube für den Roland JX8P), damit man auch solche Dinge abfrühstücken kann.

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.
Ist auch notiert! Wenn Du irgendwo den Link hast, kann ich mir das bei Gelenheit mal ansehen.

Ich finde es schade - viele Hersteller haben mittlerweile vergessen, dass MIDI mal als offener Standard gedacht war und die Veröffentlichung der Infos ihren Geräten eventuell mal eine bessere Unterstützung und vor allem ein längeres Leben bescheren kann. Ich habe ASM angeschrieben wegen Infos zu Hydrasynth, nicht mal ne Info. Von UDO zum Super 6 immerhin die Ankündigung, dass sie das machen wollen. Ist aber schon 6 Monate überfällig. Waldorf angeschrieben wegen Sysex vom Kyra, Antwort: Geben wir nicht raus. Frag mich, ob die sich damit wirklich einen Gefallen tun. Das lobe ich mir Sequential, da ist alles im Handbuch dokumentiert und wenn man lieb nachfragt bekommt man sogar das genaue Sysexformat mit allen Parametern.
 
kris_
kris_
|
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.
Ah, ja, macht Sinn! Ich schreibe mir das mal in meine Ideenliste auf Github, sollte kein großes Ding sein, das zu implementieren. Schwieriger ist die Frage, in welcher Weise die Datei gespeichert werden soll.

Man kann ja einzelne Patches speichern als Edit Buffer Dumps, oder ganze Bänke mit Programmspeicherplatz - das zweite macht wahrscheinlich mehr Sinn, ist aber noch nicht implementiert.

Was auf jeden Fall schnell ginge, wäre einfach ein umbenennen von Patches ohne angeschalteten Synth. Das ist auch unabhängig vom Speicherformat sinnvoll!
 
microbug
microbug
MIDI Inquisator
Leider ist das Adaptionen Format von SoundDiver binärer Kram, den man wohl nicht ernsthaft wird lesen können.

Doch, kann man, wie schon geschrieben werden die Sysex Strings mit +1 in den Bytes gespeichert, also F1 statt F0 und F8 statt F7. Evtl kann ich sogar mehr Info bekommen.


Waldorf angeschrieben wegen Sysex vom Kyra, Antwort: Geben wir nicht raus.

Der Kyra ist keine Entwicklung von Waldorf, da müßtest Du Manuel Caballhero anschreiben, den Kontakt könnte ich evtl herstellen bei Interesse.

Der Link zum Sysex des Summit befindet sich im Thread zum Summit, müßte ich selbst suchen.

Was UDO angeht, so dürfte George grad mit der Fertigstellung des Super 6 Desktop sehr eingespannt gewesen sein.
 
Zuletzt bearbeitet:
kris_
kris_
|
Doch, kann man, wie schon geschrieben werden die Sysex Strings mit +1 in den Bytes gespeichert, also F1 statt F0 und F8 statt F7. Evtl kann ich sogar mehr Info bekommen.
Ah, aber ist es nicht einfacher, einfach SoundDiver zu starten, den Adaption Editor zu öffnen und die Strings abzuschreiben ;-)?

Der Kyra ist keine Entwicklung von Waldorf, da müßtest Du Manuel Caballhero anschreiben, den Kontakt könnte ich evtl herstellen bei Interesse.
Gerne, aber ich habe mir dann keinen gekauft. Also wenn jemand anders danach fragt, könnten wir das mal machen. Ich schaue derzeit eher auf dem M - das wäre was!
Der Link zum Sysex des Summit befindet sich im Thread zum Summit, müßte ich selbst suchen.
Ok, auch nicht dringend, ich habe im Schnellsuchverfahren noch nichts gefunden.
Was UDO angeht, so dürfte George grad mit der Fertigstellung des Super 6 Desktop sehr eingespannt gewesen sein.
:cool:
 
Nordlicht
Nordlicht
|
@kris_ : Habe deinen Editor gerade mit dem neuen Take 5 getestet - und soweit ich das sehe, funktioniert alles einwandfrei! Tolle Arbeit!

Frage: Gibt es irgendwo eine "Anleitung" / Tutorial, in dem die wichtigsten Funktionen erklärt werden? Was ich z.B. noch nicht geschafft habe, ist Patches vom PC zum Synth zu schicken. Danke vorab!
 
kris_
kris_
|
@kris_ : Habe deinen Editor gerade mit dem neuen Take 5 getestet - und soweit ich das sehe, funktioniert alles einwandfrei! Tolle Arbeit!

Frage: Gibt es irgendwo eine "Anleitung" / Tutorial, in dem die wichtigsten Funktionen erklärt werden? Was ich z.B. noch nicht geschafft habe, ist Patches vom PC zum Synth zu schicken. Danke vorab!
Danke für's Feedback! Wie drüber geschrieben habe ich leider derzeit nur das eine Video tutorial, das auch von github verlinkt ist.

Was schon gehen sollte, auch mit dem Take 5, ist das "Auditioning". Ein Klick auf einen Patch sendet ihn in den Edit Buffer des Synths, damit den Patch spielen kann. Dazu muss der Synth aber korrekt detektiert worden sein, was man an der grünen Leiste unter dem Namen des Synths findet in der oberen Leiste. Falls das nicht geht, ist eventuell in der Detektierung noch ein Fehler? Probier mal MIDI Menü, Menüpunkt "auto detect".
 
Nordlicht
Nordlicht
|
Danke für's Feedback! Wie drüber geschrieben habe ich leider derzeit nur das eine Video tutorial, das auch von github verlinkt ist.

Was schon gehen sollte, auch mit dem Take 5, ist das "Auditioning". Ein Klick auf einen Patch sendet ihn in den Edit Buffer des Synths, damit den Patch spielen kann. Dazu muss der Synth aber korrekt detektiert worden sein, was man an der grünen Leiste unter dem Namen des Synths findet in der oberen Leiste. Falls das nicht geht, ist eventuell in der Detektierung noch ein Fehler? Probier mal MIDI Menü, Menüpunkt "auto detect".
Vielen Dank für das schnelle Feedback! Wie schon im Sequential-Forum geantwortet, funktioniert alles soweit einwandfrei, Import vom Synth und der Export des jeweils angewählten Sounds zum Take 5. Ich dachte, es gäbe vielleicht noch einen Export ganzer Bänke oder so.
Alles gut, ich finde die Möglichkeiten schon deutlich komfortabler als "von Hand" mittels Sysex-Tools.
 
D
Dr_Sax
...
@Dr_Sax Ich habe am Sonntag eine neue Version gemacht, die hoffentlich das "generic Sequential not found" Problem behebt. Kannst vielleicht bei Gelegenheit mal ausprobieren, Release 1.13.4.
Alles funktioniert soweit sehr gut. Danke! Jetzt wäre noch ein Modul für den Ensoniq VFX super. Hatte vor langer Zeit mal was in Hypercard gemacht.
 

Similar threads

 


News

Oben