Neuer OpenSource Sysex Librarian - The KnobKraft Orm

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!

Die allererste Version unterstützt erstmal den Prophet Rev2, aber MKS80, Matrix1000 und OB-6 kommen demnächst, und weitere Synths sind in Arbeit inklusive Virus Access, Korg DW8000, Yamaha Reface DX... Da es Open Source ist, ist natürlich jeder zur Mitarbeit eingeladen ;-)

Ich habe sogar mein allererstes eigenes YouTube Video zugestöpselt, in dem ich die Basis-Funktion vorführe:

https://www.youtube.com/watch?v=lPoFOVpTANM


Ausgangspunkt meiner Überlegungen für die Software:
+ Ich benutze die Synths ausschließlich im Home Studio, daher ist für mich Bank Management nicht wichtig, ich schicke die Patches vom Computer in den Synth
+ Live-tauglichkeit - tatsächlich jamme ich live und benutze dabei die Software. Die UI zielt mittelfristig auf eine Touch Bedienung, und soll mal auf einem Android tablet bzw. iPad laufen, dass ich mir an den Keyboard-Ständer schraube. Daher auch die Idee, die Daten lokal zu halten und nicht im Internet
+ Maximale Unterstützung der Synth-Funktionen, im Gegensatz zu einem generischen Sysex-Tool. So unterstützt bspw. die MKS80 Variante vollen Handshake für schnellen Transfer, und Upper/Lower Tones, beim Rev2 die Layer-Funktion.

Die Features von Version 1.0 im Einzelnen:
+ Unterstützung des Sequential Prophet Rev2
+ Patch download und upload vom Synth, Banks oder Edit Buffer. Speicherung in einer lokalen SQlite Datenbank
+ Patches können als Favorite oder als Hidden markiert werden (analog zu Lightrooms "Pick" und "Hide")
+ Man kann Patches einer oder mehreren Kategorien zuweisen (Pad, Lead, Bass, ...), und schnell nach Patches eines bestimmten Typs filtern
+ Makro-Definitionen, um Funktionen wie next patch, previous patch, hide und favorite mittels vordefinierter Akkorde auf dem Keyboard durchzufürhren - man muss also den Computer nicht anfassen, um sich durch einen Stapel Patches zu hören
+ Auto-Klassifikation der Patches aufgrund von Nameskonventionen - man kann eine Regelmenge (Regex) für die Patchnamen pro Kategorie angeben, dann wird das automatisch gemacht. Z.B. wird alles Lead was mit "LD:" beginnt und so weiter.

Ich habe noch viel mehr Ideen, aber Prio haben erst mal die weiteren Synths, und ich dachte, ich frage mal in die Runde, was ihr davon haltet und ob ihr weitere Ideen habt, was ihr gerne umgesetzt sehen wollt?

Bleibt gesund!
 
Pioneer Toraiz AS-1 wäre fein. Kannst Du Dir zum Testen gerne leihen. Prophet P12 wäre der Nächste auf der Liste.

Bin nicht so krass mit C++ aber ich schau die Tage mal ob ichs für Linux gebaut kriege.
 
Pioneer Toraiz AS-1 wäre fein. Kannst Du Dir zum Testen gerne leihen. Prophet P12 wäre der Nächste auf der Liste.

Bin nicht so krass mit C++ aber ich schau die Tage mal ob ichs für Linux gebaut kriege.
Der Toraiz AS-1 war irgendwie mit dem Prophet 6 verwandt? Ich erinnere was aus dem Laser Mammoth thread. Da ich schon den OB6 fertig habe neben dem Rev2, sollte alles von DSI/Sequential eigentlich kein großer Aufwand sein. Hab mir gerade das Handbuch runtergeladen, das sieht ja sehr ähnlich aus wie der OB6/Prophet 6, das sollte gehen.

Linux build ist vorbereitet, aber hat sicher noch ein paar Macken. Ich habe ein anderes Projekt mit vollständigen Linux CMake Files, da würde ich nachsehen, wenn was klemmt: https://github.com/christofmuc/JammerNetz
 
  • Daumen hoch
M.i.a.u.: khz
Pioneer Toraiz AS-1 wäre fein. Kannst Du Dir zum Testen gerne leihen. Prophet P12 wäre der Nächste auf der Liste.

Bin nicht so krass mit C++ aber ich schau die Tage mal ob ichs für Linux gebaut kriege.
So, ich habe Version 1.1.0 hochgeladen auf github - dieses bietet Support für Matrix 1000, Virus B, Reface DX, OB-6 und Rev2, und - tadaa - ein generisches Modul, in dem man mit einem kleinen Python Skript einen neuen Synth definieren kann. Ich habe als Beispiel mal den Matrix 1000 noch auf diese generische Art implementiert (das konnte ich so testen), das Skript liegt bei. Und ich habe mal ein Skript angelegt für die Toraiz AS-1, das konnte ich aber in Ermangelung des Synths nicht testen, ich bitte um Freiwillige! Linux geht jetzt auch, da muss man nur noch rausfinden, wohin er denn die Python Files gerne hätte (habe keinen Installer gemacht für Linux).

a

Danke dafür! Ich habe den Linux build fertig gemacht und ab jetzt auch einen Appveyor Continuous Integration build dafür, da bleibt er dann hoffentlich auch heil.

Getestet habe ich nur ganz kurz, da ich hier nur eine virtuelle Debian 10 Maschine hatte, aber augenscheinlich startet das Programm und legt auch eine SQLite Datenbank an. Feedback wäre gut, ich habe kein Midi Interface mit Linux-Treibern.
 
  • Daumen hoch
M.i.a.u.: khz
Cool, geht damit auch der Virus Indigo (v1)?
Glaube schon, das war doch einfach ein hübscher Virus B mit Tastatur, so wie der Virus kb nur kleiner? Ich kann auf der Access Seite gar kein spezifisches Handbuch für den Indigo finden, und das MIDI Kapitel unterscheidet da nicht. Könnte höchstens sein, dass der Indigo 1 wie ein Virus A ist, aber das sind kleine Anpassungen, die sollte ich hinbekommen. Probier doch mal aus und geb Bescheid!
 
Werde ich testen! Auf jeden Fall ne super Idee mit dem Opensource, da koennte wirklich was groesseres draus werden, wenn man sich so den Bedarf anschaut nach Librarians fuer diverse Synths.
 
ich hab n Mac, Xcode ist schnell installiert .. würde gern mal versuchen das zu compilen. N Bisschen support währe vermutlich gut.

Nachtrag, ach gibt ja schon ne macOs Beta.
 
Zuletzt bearbeitet:
ich hab n Mac, Xcode ist schnell installiert .. würde gern mal versuchen das zu compilen. N Bisschen support währe vermutlich gut.

Nachtrag, ach gibt ja schon ne macOs Beta.
Ja, ich habs hier auf einem geliehenen MBP mit 10.15 zum Laufen bekommen, und versuche gerade rauszufinden, wie ich vorherige Versionen auch unterstützen kann - derzeit braucht man wohl mindestens 10.14. Teste auch 10.13 gerade, das ist alles ziemlich verwirrend auf dem Mac ;-)
 
Ich dachte ich gebe mal ein Update, da ich die Arbeit nach dem Sommer wieder aufgenommen habe. Es gibt eine neue Version 1.8.0, und die Liste der unterstüzten Synths wächst auch stetig. Kommentare/Wünsche/Anregungen jederzeit willkommen!

Hier der Link zu der neuesten Version, und meine Release Notes dazu in Englisch:

This is a major update with a month full of changes accumulated. The most importnant ones:


  • New synths (untested, please give feedback)
    • Sequential Prophet 5 Rev 4
    • Korg MS2000
    • Behringer Deepmind 12
    • Waldorf Blofeld
  • Now supporting multiple database files - the File menu has open/save and recent file list. Makes testing much easier, and can be used to sort patches by projects
  • Allowing to permanently delete all currently listed patches from the database. This is important for an undo of an import.
  • MIDI USB device plug'n'play support, at least on Windows. Now you can connect or disconnect devices while the software is running, and it tries to do the right thing
  • New and better layout of Setup tab, now that the synth list grows that fast
  • Many bugfixes in Setup tab around manually assigning channels and interfaces, and better unboxing experience to start in the SetupView when no synth has been selected yet
  • Added a quick check for MIDI loop (echo) detection into the Setup tab. The Kawai K3M and the Roland MKS-80 in my setup tend to create those loops, if the filtering in the interface is not setup correctly.
  • Added missing user consent for the Sentry based crash reporting (Windows only). If you build yourself, this is disabled anyway, but the installer files I upload to Github contain crash reporting for me to make better quality software
  • Storing last used synth and opening its library again on startup
  • Switched to JUCE 6
 
Ja, ich habs hier auf einem geliehenen MBP mit 10.15 zum Laufen bekommen, und versuche gerade rauszufinden, wie ich vorherige Versionen auch unterstützen kann - derzeit braucht man wohl mindestens 10.14. Teste auch 10.13 gerade, das ist alles ziemlich verwirrend auf dem Mac ;-)

am rande.

was für den hobbydeveloper hier immer geil ist, sind die diversen angebote auf ebay mit bootfähigen USB sticks, die gleich 8 verschiedene MacOS versionen enthalten. gibt es ab 10 euro, hongkong style.

am besten ist es einen älteren rechner zu haben, der noch kein 64 bit boot EFI kann (ca. OSX 10.9 zeiten), und zu schauen, dass man einen stick bekommt, der neuen macos versionen mit entsprechend gehacktem boot room beinhaltet. damit deckst du circa 15 jahre ab (10.4.11 - 10.14.x)!
 
Zuletzt bearbeitet:
am rande.

was für den hobbydeveloper hier immer geil ist, sind die diversen angebote auf ebay mit bootfähigen USB sticks, die gleich 8 verschiedene MacOS versionen enthalten. gibt es ab 10 euro, hongkong style.

am besten ist es einen älteren rechner zu haben, der noch kein 64 bit boot EFI kann (ca. OSX 10.9 zeiten), und zu schauen, dass man einen stick bekommt, der neuen macos versionen mit entsprechend gehacktem boot room beinhaltet. damit deckst du circa 15 jahre ab (10.4.11 - 10.14.x)!
Danke, wieder was gelernt. Was das alles gibt! Eine schnelle Suche hat nur single Version boot sticks gefunden, vielleicht haben die Verkäufer gemerkt, dass man damit mehr Geld verdienen kann. Leider habe ich keine passende Hardware, hier nur einen MacBook von 2008, das läuft glaube ich mit 10.11. Für den gibt das aber keine aktuellen Compiler, der meinen Code schlucken würde. Das könnte man also mit einem forced Upgrade beheben.

Ich kann ja mit der Apple Welt nicht so viel anfangen, unter Windows und Linux hat man halt die entsprechenden virtuellen Maschinen und fertig.
 
hm, ich wollt dir eins zeigen aber finds jetzt auch nicht mehr, das andere laptop mit dem bookmark von neulich ist leider kaputt. war ebay.de

das war ein 128 gb stick mit 8 betriebssystemen für 23 euro, was dem normalpreis eines leeren sticks entsprach.

man kann wohl so ganz grob sagen, dass es für kleine/nichtkommerzielle projekte auslangt 10.9, 10.11 und 10.14 zu testen.

das, was du unter 10.11 baust, einfach mal unter 10.9 mavericks testen, müsste bei dir noch laufen.

für ganz frische OSe, die ja weiter verbreitet sind, einfach andere leute testen lassen. :)
 
kann man sowas für den jupiter X basteln?
der hat ja so scene, tones, partials usw. ähnlich wie der JDxi damals
Noch nicht, würde ich sagen. Es gibt zwei Wege - in C++, da geht eigentlich alles, und in Python mit den Adaptionen, das ist von den Möglichkeiten noch eingeschränkt. Bspw. ist der Code für den MKS80 in C++, da das Gerät Handshaking braucht bei der Übertragung und auch mit Upper/Lower Tone und so arbeitet. Einfachere Geräte wie ein Matrix 1000 oder jetzt ein Korg MS2000 sind schnell in Python gebaut.

Aber die Schnittstelle für die Adaptionen wächst mit der Zeit, und immer mehr Möglichkeiten aus der Basis-Software stehen dann auch der Adaption zur Verfügung.

Ich denke gerade für mich selber mal nach... zur Zeit nur in C++ implementiert sind:

* Verschiedene Typen von Daten, wie Tones/Partials/Layers/Scales
* Globale Settings Editieren
* Implementation von Handshake Kommunikation
* Verarbeiten von Bankdumps, Python arbeitet immer mit Einzelpatches
* Verarbeiten von Streamdumps, also viele MIDI messages für einen Patch wie bei Yamaha
* Fingerprinting der Patches unter Berücksichtigung von "irrelevanten" Bytes, also z.B. erkennen, dass zwei Patches bei unterschiedlichem Namen trotzdem gleich sind
* Default-Namen Erkennung, damit bei Import eines "besseren" Namens der Defaultname überschrieben wird. Speziell gut für dem Matrix 1000, der die Patchnamen immer löscht
* Hübsche Bank Namen, die den Namen des Synths entsprechen
* Support für Editierung durch BCR2000

Ich kopiere das gerade mal in meine ToDo Liste ;-)
 
wow, C++.
das habe ich vor 20 jahren mal programmiert.....meine compiler sind sicherlich nicht mehr mit win10 kompatibel.

wünsche viel glück.
 
Pioneer Toraiz AS-1 wäre fein. Kannst Du Dir zum Testen gerne leihen. Prophet P12 wäre der Nächste auf der Liste.

Bin nicht so krass mit C++ aber ich schau die Tage mal ob ichs für Linux gebaut kriege.
Hi Noir, nicht sicher, ob du das mitbekommen hattest - sowohl der Toraiz-AS 1 als auch der P12 sind implementiert. Der P12 geht wohl, für den AS1 habe ich noch keine Rückmeldung von einem User. Vielleicht hast Du mal Lust, das auszuprobieren?
 
Wollte hier mal Bescheid geben, dass die Zahl der Synths weiter wächst. Gestern habe ich Version 1.10.4 released, eine Tabelle mit der Unterstützung von diversen Geräten findet sich unter


Wäre sehr interessiert an Feedback durch einen Oberheim OB-8 Besitzer, da ich die Implementation "blind" ohne Gerät gemacht habe. Ich kann auf jeden Fall Bankdumps laden sowohl im factory MIDI als auch im Encore MIDI Format, und die Adaption versucht festzustellen, ob der OB-8 mit Encore oder Factory ausgestattet ist und konvertiert dann auch zwischen den beiden Formaten.
 
Oh, und völlig vergesssen - die Mächtigkeit der Adaptions-Schnittstelle ist jetzt erheblich gewachsen, Lockdown sei dank, mein Ziel ist es, zukünftig alle Synths direkt via Python anzubinden, so dass kein C++ mehr nötig ist. Ich habe für die OB-8 Unterstützung glaube ich nur 90 Minuten gebraucht, und der Code ist relativ gut zu lesen. Die Python-Skripte haben keinerlei Abhängigkeit zu irgendwelchen KnobKraft Klassen, so dass sie auch direkt in der Python Entwicklungsumgebung getestet werden können. Theoretisch könnte man bspw mit Python MIDI und einem Adaptions-File auch direkt mit dem Synth kommunizieren, und braucht den ganzen Librarian gar nicht.

Ich habe mir die Mühe gemacht, einen etwas ausführlicheren Programming Guide zu schreiben, für den Fall, dass jemand für einen bestimmten Synth selber Hand anlegen möchte. Feedback willkommen!

 
Danke für die Arbeit. Funktioniert gut mit meinen Synths bisher. Ev. eine Möglichkeit die Patch Namen zu editieren wäre super da man die Soundnamen am Geräte selber nicht editieren kann. D.h. alle Patches heißen gleich. Bisher gibt es nur den Soundtower Editor aber nach meinen Erfahrungen mit der Evolver Version will ich den nicht verwenden. Danke nochmals
 
Danke für die Arbeit. Funktioniert gut mit meinen Synths bisher. Ev. eine Möglichkeit die Patch Namen zu editieren wäre super da man die Soundnamen am Geräte selber nicht editieren kann. D.h. alle Patches heißen gleich. Bisher gibt es nur den Soundtower Editor aber nach meinen Erfahrungen mit der Evolver Version will ich den nicht verwenden. Danke nochmals
Schönen Dank, freut mich, wenn es nützlich ist!

Patch Namen lassen sich ändern - jedefalls von dem aktuell geladenen Patch, einfach oben auf den Patch Namen klicken, dann kommt ein Rename Dialog. Geht noch nicht be allen Adaptionen, aber das kann ich dann nachliefern wo gewünscht.
 
Hab gerade versucht die neue Version zu laden und jetzt ist die Prophet 5 rev 4 Adaption wieder weg. Bin auf dem Mac und wollte von 1.11 zu 1.13. Die alte Version geht leider nicht mehr. Meldet. : Datenbank neuer
Danke für die tolle Arbeit.
 
@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 :)
 
Hab gerade versucht die neue Version zu laden und jetzt ist die Prophet 5 rev 4 Adaption wieder weg. Bin auf dem Mac und wollte von 1.11 zu 1.13. Die alte Version geht leider nicht mehr. Meldet. : Datenbank neuer
Danke für die tolle Arbeit.
Hm, wahrscheinlich ist das wieder so ein Python Versions-Ding. Du brauchst eine Python 3.8 installation auf dem Mac, damit die Adaptionen gehen. Kannst Du mal ins Log schauen, ob da eventuell eine Fehlermeldung oder Warnung kommt beim Start? Wenn das der Fall ist, Python für Mac am besten von der offiziellen Download-Seite nachinstallieren: https://www.python.org/downloads/release/python-3810/

Ich muss mal auf Python 3.9 updaten, da das mittlerweile automatisch installiert wird.

Die alte Datenbank wurde bei der Migration gesichert, damit Du auf die alte Version zurück kannst. Musst mal in dem Datenbankverzeichnis nachschauen, die heißen dann <basisname>-before-migration.db3 mit dem richtigen Datum. Die kannst Du dann mit der alten Version öffnen.
 
@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 :)
Hi! Ja, kann gut sein! Ich habe mittlweile ein generisches Sequential Modul implementiert, so dass die Sequential Synths alle unterstützt werden. Das Problem bei den Rolands war glaube ich, dass die immer mehrere Sysex Nachrichten pro Patch haben - das kann derzeit zwar der C++ Code, aber nicht der Python/Adaptionscode. Hatte ich im Januar schon mal angefangen auch in Python zu bauen, war dann aber abgelenkt worden ;-) Könnte man mal wieder ran.

Gib mal ruhig die Informationen über das Roland Format - ich kenne nur die ganz alten MKS 80, 70, 50, die sind noch nicht so richtig konsistent.
 
Hm, wahrscheinlich ist das wieder so ein Python Versions-Ding. Du brauchst eine Python 3.8 installation auf dem Mac, damit die Adaptionen gehen. Kannst Du mal ins Log schauen, ob da eventuell eine Fehlermeldung oder Warnung kommt beim Start? Wenn das der Fall ist, Python für Mac am besten von der offiziellen Download-Seite nachinstallieren: https://www.python.org/downloads/release/python-3810/

Ich muss mal auf Python 3.9 updaten, da das mittlerweile automatisch installiert wird.

Die alte Datenbank wurde bei der Migration gesichert, damit Du auf die alte Version zurück kannst. Musst mal in dem Datenbankverzeichnis nachschauen, die heißen dann <basisname>-before-migration.db3 mit dem richtigen Datum. Die kannst Du dann mit der alten Version öffnen.
Danke für die Hilfe. Ich habe nochmal Python 3.8 nachinstalliert und die alte Datenbank umbenannt. Jetzt geht die alte Version 1.11.2 wenigstens wieder. Jetzt habe ich 2 verschiedene Prophet 5 Module: Prophet-5 Rev4 und Sequential Prophet-5. Alles meine Patches sind im Sequential Prophet-5 Modul. Wenn ich jetzt die Version 1.13.3 starte gibt es nur das Modul Prophet-5 Rev4 und alle Patches fehlen.
 
Danke für die Hilfe. Ich habe nochmal Python 3.8 nachinstalliert und die alte Datenbank umbenannt. Jetzt geht die alte Version 1.11.2 wenigstens wieder. Jetzt habe ich 2 verschiedene Prophet 5 Module: Prophet-5 Rev4 und Sequential Prophet-5. Alles meine Patches sind im Sequential Prophet-5 Modul. Wenn ich jetzt die Version 1.13.3 starte gibt es nur das Modul Prophet-5 Rev4 und alle Patches fehlen.
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.
 


News

Zurück
Oben