• Stars
    star
    200
  • Rank 195,325 (Top 4 %)
  • Language
    C++
  • License
    GNU Affero Genera...
  • Created almost 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The KnobKraft Orm - The free modern cross-platform MIDI Sysex Librarian

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.

Manufacturer Synth Status Type Kudos
Access Virus A, B, Classic, KB, Indigo works native
Access Virus C beta native Thanks to guavadude@gs
Alesis Andromeda A6 works adaptation Thanks to @markusschloesser
Behringer BCR2000 in progess native
Behringer Deepmind 12 works adaptation
Behringer RD-8 in progress adaptation
Behringer RD-9 in progress adaptation
Black Corporation Kijimi beta adaptation Thanks to @ffont
DSI Evolver beta adaptation
DSI Mopho works adaptation
DSI Mopho X4 works adaptation
DSI Tetra works adaptation
DSI Pro 2 works adaptation
DSI Prophet 8 works adaptation
DSI Tempest alpha adaptation
DSI/Sequential OB-6 works native
DSI/Sequential Prophet Rev2 works native
DSI/Sequential Prophet 12 works adaptation Thanks to @Andy2No
Electra one works adaptation
Ensoniq ESQ-1/SQ-80 works adaptation Contributed by @Mostelin!
John Bowen Solaris beta adaptation Contributed by @conversy!
Kawai K1/K1m/K1r beta adaptation
Kawai K3/K3m works native
Korg 03R/W works adaptation Thanks to Philippe!
Korg DW-6000 works adaptation
Korg DW-8000/EX-8000 works native
Korg Minilogue XD works adaptation Thanks to @andy2no
Korg MS2000/microKORG works adaptation Thanks to @windo
Novation Summit/Peak alpha adaptation
Novation UltraNova works adaptation Thanks to @nezetic
Oberheim Matrix 6/6R works adaptation Thanks to @tsantilis
Oberheim Matrix 1000 works native
Oberheim OB-X (Encore) alpha adaptation
Oberheim OB-Xa (Encore) alpha adaptation
Oberheim OB-8 beta adaptation
Oberheim OB-X8 alpha adaptation help needed!
Pioneer Toraiz AS-1 works adaptation Thanks to @zzort!
Quasimidi Cyber-6 alpha adaptation
Roland JX-8P alpha adaptation
Roland D-50 in progress adaptation
Roland JV-80/880/90/1000 beta adaptation
Roland JV-1080/2080 beta adaptation
Roland MKS-50 alpha native
Roland MKS-70 (Vecoven) beta adaptation Thanks to @markusschloesser!
Roland MKS-80 works native
Roland XV-3080/5080/5050 works adaptation
Sequential Pro 3 works adaptation
Sequential Prophet 5 Rev 4 works adaptation
Sequential Prophet 6 beta adaptation
Sequential Prophet X works adaptation
Sequential Take 5 beta adaptation
Studiologic Sledge beta adaptation
Waldorf Blofeld beta adaptation
Waldorf Kyra alpha adaptation Thanks to Edisyn!
Yamaha DX7 beta adaptation
Yamaha DX7II beta adaptation
Yamaha reface DX works native
Zoom MS Series (50G/60B/70CDR) works adaptation Thanks 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.

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

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.

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:

Name OpenSource OS Languange Looks like it started Driver-Design User-extensible
eMagic's SoundDiver No Win, Mac ? 1995 Data-driven Yes
Universal Manager No Win32 ? 2005 Data-driven Yes
JSynthLib Yes Win, Linux Java 1999 Java code Yes
SyxLibEd No Win32 VisualBasic 1997 Database Yes
EdiSyn Yes Win, Mac, Linux Java 2017 Java code Yes
CTRLR Yes Win, Mac C++ & Lua 2015 Lua code Yes
LaserMammoth Yes Chrome Web Javascript & PHP 2016 Javascript code Yes
MidiManager No Chrome Web ? 2020 JSON data Yes
Opcode Systems Galaxy No Mac ? 1990 ? Yes
MidiSynth No Win, Mac ? 2015 ? No
Unisynth No Win C# .net 1999 ? No
Patch Base No iOS, Mac ? 2020 ? No
ToneTweak No Chrome Web ? 2020 ? No
MidiQuest No Win, 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.

More Repositories

1

JammerNetz

OpenSource internet jam sessions, aka Networked Music Performance software.
C++
50
star
2

juce-utils

C++ classes with functionality I subjectively would have liked to find in JUCE - maybe it can help you?
C++
27
star
3

BCR2000_Master

Small program to make working with the Behringer BCR2000 MIDI controller and its BCL language easier.
C++
12
star
4

juce-widgets

An unsorted bunch of useful widgets build for the JUCE cross-platform library
C++
12
star
5

pytschirp

MIDI synthesizer and synthesizer patch bindings for python - this is synth programming for real!
C++
9
star
6

bcr2000_for_oberheim_matrix1000

This is a Behringer BCR2000 template for the Oberheim Matrix 1000 synthesizer I made
6
star
7

juce-spectroscope19

A JUCE component with a nice spectroscope rendered in pretty OpenGL
C++
6
star
8

MidiKraft-BCR2000

MidiKraft implementation for the Behringer BCR2000 Rotary Controller, a hardware MIDI controller
C++
4
star
9

dw8000_wav2syx

A command line utility to convert tape wav files for the Korg DW8000 synthesizer into SYX format using Python
Python
4
star
10

bcr2000_for_dsi_prophet_rev2

This is a Behringer BCR2000 template for the gated sequencer of the DSI Prophet Rev2 synthesizer I made
3
star
11

PyTschirper

GUI program to demonstrate the pytshirp Python MIDI synthesizer bindings, in particular for the Sequential Prophet Rev 2
C++
3
star
12

juce-spectroscope19-ci

Example stand-alone program for the juce-spectroscope19 library's widget.
C++
3
star
13

MidiKraft-librarian

Implementation of the Patch Librarian function within MidiKraft, for the KnobKraft Orm
C++
3
star
14

MidiKraft-base

Base library used by all Synthesizer and Sequencer implemenations for MidiKraft
C++
2
star
15

lightroombirding

Lightroom Birding Plugin - including eBird export functionality
Lua
2
star
16

MidiKraft-yamaha-refacedx

MidiKraft implementation for the Yamaha Reface DX synthesizer used by the KnobKraft Orm
C++
2
star
17

oszi1994

Turbo Pascal code from 1994-1997 implementing a soundcard oscilloscope and a spectrogram FFT display
Pascal
2
star
18

DW8_to_syx

Just a script converting DW8 files with Korg DW8000 patch banks to SYX format
Python
1
star
19

MidiKraft-korg-dw8000

MidiKraft implementation for the Korg DW8000 synthesizer, as used by the KnobKraft Orm
C++
1
star
20

MidiKraft-oberheim-matrix1000

MidiKraft implementation of the Oberheim Matrix1000 synthesizer, as used by the KnobKraft Orm.
C++
1
star
21

MidiKraft-roland-mks50

MidiKraft implementation for the Roland MKS50 MIDI synthesizer, as used in the KnobKraft Orm.
C++
1
star
22

MidiKraft-behringer-rd8

The implementation of the Midi control for the Behringer RD8 drum machine used by the MidiKraft software
C++
1
star
23

JuceLatency

Based on the jack-delay latency measurement package from Fons Adriaensen (GPL)
C++
1
star
24

MidiKraft-sequential-rev2

MidiKraft implementation for the Sequential Prophet Rev2 (formerly Dave Smith Instruments, DSI)
C++
1
star
25

MidiKraft-database

Database implementation for the MidiKraft software, using SQlite
C++
1
star
26

MidiKraft-access-virus

MidiKraft implementation for the support of the Access Virus B synthesizer in KnobKraft Orm
C++
1
star