Synthesizer Patch Editor and Librarian (Version 34)
By Sean Luke (sean@cs.gmu.edu)
Related projects:
Donations are welcome via Paypal to my email address (sean@cs.gmu.edu).
Version 34 has patch editors for the Waldorf M and Dave Smith Instruments Prophet 12, improvements for the Yamaha DX7 and 4-Op FM families, and improvements for accessibility for the blind.
Stochastic Synthesizer Patch Exploration in Edisyn. Presented at EvoMUSART 2019.
Co-creative Music Synthesizer Patch Exploration. With V. Hoyle. Presented at ICCC 2023.
So You Want to Write a Patch Editor. George Mason University Department of Computer Science Technical Report GMU-CS-TR-2023-1.
Edisyn is a synthesizer patch editor library written in pure Java. It runs on MacOS, Linux, and Windows.
Edisyn is particularly good at exploring the space of patches. It has to my knowledge the most sophisticated set of general-purpose patch-exploration tools of any patch editor available.
Edisyn presently supports:
Edisyn has infinite levels of undo, CC and NRPN mapping and learning, offline modes, per-parameter customization, real-time parameter updates, test notes and chords, Pseudo-MPE support, and lots more. Edisyn also has many specialized tools designed to help you explore new patch possibilities without directly programming them. These include:
Sure! But building a patch editor is a long-term commitment of debugging and maintenance. It can't easily be done with a remote person (you) handling the debugging. So with rare exceptions I only build editors for synths I personally own (I might sell them long after the editor is stable). So if you'd like, say, the Alesis Andromeda to have an editor, all you have to do is gift me an Alesis Andromeda! I'll even pay for shipping.
I have a special interest in hard-to-program synths, either because they have very poor interfaces (or no interface at all), or because their synthesis architecture is difficult to program (FM, Additive). You'll note the high number of 1U rackmounts. :-) Certain other synths (Blofeld, Prophet '08, etc.) are there because I own them and like making stuff for them.
Edisyn has an extensive manual which describes how to run it, and (if you are so inclined) how to make new patch editors.
Edisyn is cross-platform and will run on a variety of platforms (Windows, Linux) but I am personally developing on and for MacOS. I'd appreciate feedback and screenshots of it running on Windows and Linux so I can tweak things.
First install Edisyn from the Edisyn.app.zip file. Sadly, it's a whopping 70MB because it includes the Java VM. :-(
MacOS has lately locked down the ability to run an application that's not from a commercial, paying Apple Developer. And I'm not one. So you will have to instruct MacOS to permit Edisyn to run. Let's try the easy approach first:
On some versions of MacOS, you can CONTROL-Click on Edisyn's App Icon, and while holding Control down, select "Open". Now instead of telling you that Edisyn cannot be opened because it's from an unidentified developer, you'll be given the option to do so. You probably will only have to do this once.
If this isn't working, try the following. Let's assume you stuck Edisyn in the /Applications directory as usual. Now we have to tell Gatekeeper to allow Edisyn to run on your machine:
sudo spctl --add /Applications/Edisyn.app
Now you should be able to run Edisyn. Let me know if this all works.
If you want to use Edisyn in combination with a DAW, see the manual's section on building a MIDI Loopback.
You can also run Edisyn from its jar file from the command line: see "Running from the command line" at end of these instructions.
At present Edisyn only runs under Rosetta on the M1, because its package contains an Intel-only Java VM (because I only own an Intel Mac and am not running Big Sur). It'll work fine. Don't expect things to change until I get an M1. If you have installed Java yourself, you can run Edisyn from the command line (see later below) and it'll probably run natively.
You may have installed the MMJ (MIDI Java) library in the past, which is now obsolete. This library was required by old applications but no longer works properly and should be removed. Look in /Library/Java/Extensions/ or in [Your Home Directory]/Library/Java/Extensions for the files mmj.jar or libmmj.jnilib. If you find them, remove them from the directory and try again.
I believe that the following should work:
If you want to use Edisyn in combination with a DAW, see the manual's section on building a MIDI Loopback.
Windows USB MIDI Java is very flaky, unlike MacOS or Linux. Many devices don't play nicely with it and may not work properly. If a device doesn't respond, try quitting Edisyn, disconnecting and reconnecting the USB cable, and trying again (no, really). In other cases, particularly with devices with non-class-compliant USB, you'll be out of luck (the Novation SL's USB may be a problem for example). Try Linux.
These editors require an unusual quirk of MIDI sysex which is not properly supported by Java under Windows. I have failed to find a workaround for it, and so these editors may not work properly under Windows. Notably the CZ editor will definitely not work right. I'm sorry about that.
I have reports of Java crashing on Windows if you set Edisyn's "Receive From" or "Send To" devices to the same device as the "Controller" or "Controller 2" devices. So don't do that: there is never a need to do so. If you don't have a dedicated controller, you should leave the "Controller" and "Controller 2" devices blank.
I have occasionally seen hard crashing/hanging on Windows if the USB MIDI device is disconnected while Edisyn is attempting to communicate over MIDI. It appears to be a Windows driver issue. So don't do that.
I have had at least one report that Java 8 on Windows has serious problems with some Edisyn patch editors (probably memory). Install something newer.
Java doesn't handle high-resolution displays properly in Windows, especially Windows 10. Be sure to have installed at least Java 11 (otherwise you'll have teeny tiny Edisyn windows). You'll still have font issues on 4K monitors. I am told this can help dealing with it:
Edisyn makes heavy use of Java preferences to store persistant information: what menu option you chose last time, what should be the default synth editor to pop up, and so on. However there is a longstanding Java/Windows bug which makes Java preferences not work out of the box in Windows for earlier versions of Java. I think this is fixed as of Java 11 but you should check and let me know.
When you double-click on a jar file, Windows may not launch Java properly because it has jar files associated with the wrong Java instance. It's easy to fix this using JarFix
I'm told that Edisyn works if you have installed at least Java 8. After this:
If you want to use Edisyn in combination with a DAW, see the manual's section on building a MIDI Loopback.
Some synthesizer devices, such as the Novation SL, have flaky USB which doesn't play nicely with Linux, and you may have problems working with them over their USB ports. I've had much better success using a dedicated USB interface connected to them over 5-pin DIN [I have a Tascam US2x2].
Java doesn't work properly with high-resolution displays in Linux, even recent default versions (like JDK 11). On GNOME machines (such as Ubuntu) you can get around this by first setting the GDK_SCALE parameter, such as:
export GDK_SCALE=2
java -jar edisyn.jar
... or you can (for the moment) run Java with internal scaling, such as:
java -Dsun.java2d.uiScale=2.0 -jar edisyn.jar
(though recent versions of Java are complaining that this is illegal)
Java has compatibility problems with Jack; disabling Jack will often allow Edisyn to communicate with MIDI devices. See issues #33 and #52.
java -jar edisyn.jar