Home

Awesome

<img src="https://user-images.githubusercontent.com/5006524/277113738-73bf9b4f-f089-42b7-bbb2-aa4bf55c1528.png" align="right">

A free MIDI Sysex Librarian - The KnobKraft Orm

release

If you are looking for a modern, free Sysex Librarian for your synth, you have found the right place! This is the place where the KnobKraft Orm is created, a modern cross-platform Sysex Librarian for your MIDI gear.

Questions and help with implementing new synths wanted! Or if you have found a bug, also feel free to report directly here on Github.

ManufacturerSynthStatusTypeKudos
AccessVirus A, B, Classic, KB, Indigoworksnative
AccessVirus CbetanativeThanks to guavadude@gs
AlesisAndromeda A6worksadaptationThanks to @markusschloesser
BehringerBCR2000in progessnative
BehringerDeepmind 12worksadaptation
BehringerRD-8in progressadaptation
BehringerRD-9in progressadaptation
Black CorporationKijimibetaadaptationThanks to @ffont and @markusschlosser
DSIEvolverbetaadaptation
DSIMophoworksadaptation
DSIMopho X4worksadaptation
DSITetraworksadaptation
DSIPro 2worksadaptation
DSIProphet 8worksadaptation
DSITempestalphaadaptation
DSI/SequentialOB-6worksnative
DSI/SequentialProphet Rev2worksnative
DSI/SequentialProphet 12worksadaptationThanks to @Andy2No
Electraoneworksadaptation
EnsoniqESQ-1/SQ-80worksadaptationContributed by @Mostelin!
EnsoniqVFXalphaadaptation
Groove Synthesis3rd Waveworksadaptation
John BowenSolarisbetaadaptationContributed by @conversy!
KawaiK1/K1m/K1rbetaadaptation
KawaiK3/K3mworksnative
KawaiK4alphaadaptation
Korg03R/WworksadaptationThanks to Philippe!
KorgDW-6000worksadaptation
KorgDW-8000/EX-8000worksadaptation
KorgMinilogue XDworksadaptationThanks to @andy2no
KorgMS2000/microKORGworksadaptationThanks to @windo
NovationAStation/KStationbetaadaptationThanks to @thechildofroth
NovationSummit/Peakalphaadaptation
NovationUltraNovaworksadaptationThanks to @nezetic
OberheimMatrix 6/6RworksadaptationThanks to @tsantilis
OberheimMatrix 1000worksnative
OberheimOB-X (Encore)alphaadaptation
OberheimOB-Xa (Encore)alphaadaptation
OberheimOB-8betaadaptation
OberheimOB-X8alphaadaptationhelp needed!
PioneerToraiz AS-1worksadaptationThanks to @zzort!
RolandJX-8Palphaadaptation
RolandJuno-DSin progressadaptation
RolandD-50in progressadaptation
RolandJV-80/880/90/1000betaadaptation
RolandJV-1080/2080betaadaptation
RolandMKS-50alphanative
RolandMKS-70 (Vecoven)betaadaptationThanks to @markusschloesser!
RolandMKS-80worksnative
RolandXV-3080/5080/5050worksadaptation
SequentialPro 3worksadaptation
SequentialProphet 5 Rev 4worksadaptation
SequentialProphet 6betaadaptation
SequentialProphet Xworksadaptation
SequentialTake 5betaadaptation
StudiologicSledgebetaadaptation
WaldorfBlofeldbetaadaptation
WaldorfMicroWave 1betaadaptationThanks to Gerome S!
WaldorfKyraalphaadaptationThanks to Edisyn!
YamahaDX7betaadaptation
YamahaDX7IIbetaadaptation
Yamahareface DXworksadaptation
Yamahareface CPbetaadaptationThanks to @milnak!
YamahaTX7worksadaptationThanks to Gerome S!
YamahaYamaha YC61/YC73/YC88worksadaptationThanks to @milnak!
ZoomMS Series (50G/60B/70CDR)worksadaptationThanks to @nezetic

Please get back to me if you encounter any issues, or also if you successfully test those marked as alpha or beta. The ones "in progress" are already nearly done and not part of the regular build yet, drop me a note if you want to accelerate.

The adaptations are python scripts for a generic module that let's you hook up other MIDI gear yourself, much in the spirit of the good old SoundDiver adaptations - at least, scripting the MIDI. No custom UI currently is possible or planned as of now.

So basically everyone who can read the MIDI spec and can do a little scripting could create new adaptations for more devices!

How does it look?

[Disclaimer]: The video shows version 1.0.0, a lot has happened since then. Especially the version 2.0.0 introduced the most sought after feature - bank management!

I made a video to show you the software and the most basic functionality, checkout the YouTube channel for more examples and advanced features as well

Downloading the software

I provide installer builds for Windows and disk images for macOS, they are hosted here in github. To install, just grab the latest installer executable or DMG file from the following page and run it. The Mac version needs to be installed (drag into application folder after opening the DMG) and then run with the CTRL-Click Open command (to ignore unknown source warning, as I do not sign the installers with a certificate).

https://github.com/christofmuc/KnobKraft-orm/releases

Linux is reported to build and run as well, but due to the multitude of possible installations I suggest you follow the build instructions below, it shouldn't be too hard.

You can always use the source to build it yourself, please read on for more instructions.

Supported platforms

This software is build and run on Windows 10, macOS 10.15, and several Linux distributions. Note that this is not a commercial project, and as I am using Windows mostly expect some hiccups. But I will get back to you if you report a bug and try to resolve it!

Building your own adaptation for a synthesizer

It is possible to create an adaptation for a new synthesizer that is not yet on the supported device list. For that, you'll select an existing adaptation that might be close to what you need (e.g. same manufacturer, same device family), and use a text editor to adapt the Python code controlling how to generate the device specific messages required and what to do with the answers from the synth.

If you're up to that, I have written a whole Programming Guide documenting the required and optional methods to be implemented. To make sure your code works, you can run it through a generic test suite that all adaptations must pass, find more information in the Adaptation Testing Guide, please check it out!)

I know this is not easy, and most importantly new devices also might require capabilities that are not yet part of the Orm, so please don't hesitate to contact me, I'll try to help!

Building the software

Prerequisites

We use CMake 3.18. Make sure to have a recent version of cmake installed, the build process fails if it is too old (normally it will say so).

Downloading

Clone with submodules from github

git clone --recurse-submodules https://github.com/christofmuc/KnobKraft-orm

The recursive clone with submodules is required to retrieve the following additional modules already into the right spot inside the source tree:

  1. We use the magnificent JUCE library to immensly reduce the amount of work we have to do.

  2. The configure step will download (on Windows) the almighty boost library, sorry for the bloat but I simply had no time to remove the dependency yet. All my professional projects of course rely on boost, so it is a natural to incorporate it here as well.

Building on Windows

Using CMake and building is a simple step if the prerequisites are fulfilled. Simply open a command line in the downloaded root directory <KnobKraft-orm> and run

cmake -S . -B builds -G "Visual Studio 15 2017 Win64"

This will generate a solution file for Visual Studio in the builds subdirectory. You can build the software to run it immediately with the command

cmake --build builds --config Release

This will produce the executable in the path builds\The-Orm\Release, namely a file called KnobKraftOrm.exe which you can double click and launch.

Building on Linux

See the azure-pipelines.yml file for some hints how the Ubuntu server is doing it. Mainly, you need to install a long list of prerequisites and development libraries:

sudo apt-get -y update && sudo apt-get install -y libcurl4-openssl-dev pkg-config libtbb-dev libasound2-dev libboost-dev libgtk-3-dev libwebkit2gtk-4.0-dev libglew-dev libjack-dev libicu-dev libpython3-all-dev

and then can use CMake just like on Windows to compile the software:

cmake -D CMAKE_INTERPROCEDURAL_OPTIMIZATION=off -S . -B builds
cmake --build builds

This will produce a single executable builds/The-Orm/KnobKraftOrm that you can run.

The LDFLAGS is required for a certain combination of gcc version/pybind11, else you will run into internal compiler errors. See issue #6 for a discussion.

Building on macOS

If you are inclined to build on Mac, you know what you're doing. I'd recommend to install the build requisites via homebrew like this

brew install gtk+3 glew boost python3 icu4c

and then run CMake to build the software

cmake -S . -B builds/release -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build builds/release

which will produce a launchable application in a folder called KnobKraftOrm.app.

Should you get an error about the required ICU libraries not being found edit the CMakeLists.txt file, where it sets a variable called ´ICU_ROOT´.

Use this to find out the install directory of your ICU library:

ls `brew --prefix icu4c`

The reason for the ICU making problems is that there will be an ICU already shipped with the Mac, but being incomplete. So we need to install a complete SDK and make sure it takes precedence over the system supplied library.

Licensing

As some substantial work has gone into the development of this, I decided to offer a dual license - AGPL, see the LICENSE.md file for the details, for everybody interested in how this works and willing to spend some time her- or himself on this, and a commercial MIT license available from me on request. Thus I can help the OpenSource community without blocking possible commercial applications.

Contributing

All pull requests and issues welcome, I will try to get back to you as soon as I can. Due to the dual licensing please be aware that I will need to request transfer of copyright on accepting a PR.

Acknowledgements

Really big thanks to everybody who contributes and comments on YouTube, here on Github, or any of the other forums out in the Internet to motivate me to continue this work!

Special thanks to @tsantilis for getting the Oberheim Matrix 6/6R adaptation to work with restless tests and trials!

The app icon is courtesy of W07 at the Sequential forums, thanks for your contribution!

For the restless Prophet 12 testing thanks and a medal for most comments on a ticket go to @Andy2No!

Thanks also go to @gnidorah and @dukzcry for reporting bugs with the RefaceDX implementation, which were fixed! Thanks to @GriffReborn for bug reports with the Virus B implementation! Big shout out over to gearslutz' @Behrmoog, who did the first three synth adaptations on his own, brave and fearless! Special thanks to @windo who spent nights testing the Korg MS2000 to make it work, despite me being too stupid to understand a quite clear sysex documentation! Also many thanks to @markusschloesser for great feedback and inquisitive persistence! Many thanks to @Mostelin for contributing the Ensoniq ESQ-1 adaptation.

I am also grateful for all comments and suggestions in the various forums and Facebook groups where the KnobKraft Orm is discussed - thank you all, you know who you are!

For bug reports, thanks to Iulian from the Facebook M1000 group!

Prior Art

This is by far not the first attempt at solving the challenge, I only hope it is the last and this time for good with the help of the community. These are similar projects which I found during my wanderings through the net, some of these still available, some nearly lost in the mist of time. In no particular order:

NameOpenSourceOSLanguangeLooks like it startedDriver-DesignUser-extensible
eMagic's SoundDiverNoWin, Mac?1995Data-drivenYes
Universal ManagerNoWin32?2005Data-drivenYes
JSynthLibYesWin, LinuxJava1999Java codeYes
SyxLibEdNoWin32VisualBasic1997DatabaseYes
EdiSynYesWin, Mac, LinuxJava2017Java codeYes
CTRLRYesWin, MacC++ & Lua2015Lua codeYes
LaserMammothYesChrome WebJavascript & PHP2016Javascript codeYes
MidiManagerNoChrome Web?2020JSON dataYes
Opcode Systems GalaxyNoMac?1990?Yes
MidiSynthNoWin, Mac?2015?No
UnisynthNoWinC# .net1999?No
Patch BaseNoiOS, Mac?2020?No
ToneTweakNoChrome Web?2020?No
MidiQuestNoWin, Mac?2008?No
SoundDiver I think is the one to rule them all, its legacy is what makes me do this.

About the author

Christof is a lifelong software developer having worked in various industries, and can't stop his programming hobby anyway.