DX7-Supercollider

DX7-Supercollider

Aziz Ege Gonul’s accurate Yamaha DX-7 clone. Extended to run on Organelle M/S.

Demo video

Note from Dessertplanet (Dune)

Yes there are already awesome DX7’s out there for Organelle but when I heard that there was this incredibly deep one written in supercollider and I heard that Organelle in theory supported Supercollider I had to have a go at making it work.

The hook here is that this is a DX7 with ALL interesting presets, that you don’t need to program yourself. Just journey into the 16,384 built in presets, save the ones you like, and play :slight_smile:

For the geeks out there, this patch DOES install a different version of SC than the one in the box in OS 4.2 (it adds a second installation, not replacing the one that is there). That is because the one built in doesn’t include Supernova for multithreading but more importantly it is a non-headless build which introduces all kinds of weirdness and performance woes. Ultimately I could support more than 4x as many voices polyphony wise by installing a new version. Those who have icarus installed should note that after installing this, Icarus will run smoother, no more need for the weird VNC dance.

Requirements

  • Organelle M or S
  • Organelle OS 4.2

Features

  • 16-voice DX7 FM synth emulation with 16,384 real DX7 presets from across the internet
  • Presets are very wide ranging in sound and can have large timbral variation based on note velocity
  • Monophonic mode
  • Organelle pedal input support for sustain pedal
  • MIDI input for notes (including velocity), sustain pedal, pitchbend with configurable range, and mod depth
  • MIDI configuration is as simple as plugging in your usb of 3.5mm TRS midi device and relaunching the patch
  • Save presets that you like to your own curated list, persisted for next time you open the patch
  • Easy to use interface

Intro from Aziz’s README

This is a super-exact clone of DX7 in SC environment. This project began with my (Aziz’s) internship at the STEIM during the last year; I was able to get my hands on an original DX7 synth and eventually found out that this instrument has this mystic / unusual sound. So I started fiddling with it and did some experiments with Supercollider. After a while, it became an obsession to play with it and started to copy parts of its synth mechanism just to flex my DSP muscles. Sooner, I found myself in this vast project to clone the entire thing. After 2-3 months of implementing process and lots of sleepless nights. I was able to clone the entire DX7 engine with very high accurate results. Other than the DX7’s vintage sound hiss, it is hard to distinguish between the clone and the original one on the same presets. For my use, I collected some 16384 (2^14) DX7 Sysex bank presets from the internet and converted it to some integer sequences to read it from Supercollider. I am also combining this clone with this 16384 preset package. Have fun!

Installation

Upload the .zop file to your patches directory under the folder you would like to install the patch. Then launch the installer from the organelle UI itself using the screen and encoder. The installer will only work on Organelle M or Organelle S, since multi-core processing is required for this patch. As of version 1.01 an internet connection is not required for installation.

This installation will install the following prerequisites if they are not already present (these are included in the .zop file):

  • Jackd2 (and dependencies) for audio interface purposes
  • Supercollider 3.11.2 (headless installation including Supernova)
  • FM7 Ugen for Supercollider, pulled from the SC3-plugins

Interface

The patch is designed so that instead of programming the patches directly (DX7 was notiriously difficult to program), you navigate through a vast set of presets and choose to save the ones you like for easy access. Controls are enumerated below.

  • Long-press encoder to return to patch menu
  • Aux button acts as shift key, changing knob, encoder, and encoder button behaviors
  • Three ways to navigate through the library of 16384 presets
    1. Encoder cycles through presets one at a time
    2. Aux (shift) + encoder cycles through presets one bank at a time (32 presets at a time)
    3. Knob 1 coarsely scans through all of the preset. preset index 0 at far left, 16383 at far right
  • Pressing encoder button loads the currently displayed preset (Asterisk at the left indicates that currently shown preset is loaded)
  • Aux + Encoder button loads a random preset (this can be done many times in short succession)
  • Knobs adjust the currently shown parameters
  • Velocity parameter only affects organelle accordion key input. (all other parameters affect sounds regardless of internal or external control)
  • Changing the polyphony parameter silences all notes, if you ever encounter a preset that drones forever that you need to silence
  • Aux button shows secondary parameters (aux + knob 1 = pitchbend)
  • Aux + Longpress of the encode launches the save menu
    • In save menu selecting a saved preset with the encode button loads it
    • Long pressing the encoder button in the save menu allows you to delete saved presets from this list (they remain in the main list of presets)

Notes to the synthesist

The names of the patches are often (and sometimes hilariously) incorrect. They are a memory aid for you on your travels to help locate yourself. Aziz mentioned in docs that he had to recompile the preset text file after compiling the pdf doc of preset names that was used to produce the names displayed in this patch.

A few notes about the huge preset list to keep in mind (these only apply to a small minority of what is in there):

  • Some of the presets sound identical
  • Some of the presets that are named the same sound nothing alike
  • Some of the presets make no sound at all
  • Some of the presets have no name at all
  • Some of the presets have no velocity sensitivity and therefore sound the same for all velocities

A few really cool things I have discovered in my own navigation of these presets, very interested in what others find:

  • There are a bunch of different LFO shapes - at least sine, triangle, random step, square, saw…
  • While there are no built-in effects, some presets REALLY sound like they have reverb or delay, I am not 100% sure how that works, perhaps with envelopes and FM feedback??
  • Some presets appear to have key-tracking/splitting where different notes at the same velocity have large differences in timbre
  • Presets have individually configured sensitivities to lfo modulation and velocities so each one responds to these differently in terms of both amplitude and pitch
  • Some of the presets are VERY chaotic by design
  • This claims to be a very accurate emulation- what is more important than accuracy for me is that it scratches all the right nostalgia itches that you would expect for DX7 sounds
  • Don’t sleep on the bass sounds in here. Try monophonic mode in a low octave. You won’t regret it.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE.md file for details

Code link

Acknowledgments

  • Aziz Ege Gonul for the amazing synth model
  • TheTechnoBear for getting things started for Supercollider on Organelle
  • Critter & Guitari for the awesome open-source platform
  • Hat tip to John Chowning
  • STEIM for letting Aziz use their DX7 and espresso machine.
  • and all the anonymous preset makers for the Yamaha DX7 (unsung heroes/angels).
3 Likes

Sounds like a fabulous patch! Unfortunately I don´t have any internet connection to my Organelle, would be cool if there would be an option to install without internet. Why not just make one installationsfile that inclued the three things that is needed from internet?

Ah did you misplace the WiFi-dongle?

The only thing that is downloaded from internet is jackd2- including the files necessary is hard since I am not sure what/where apt-get is installing files for that. Installation happens from a raspbian install catalog.

It is likely much easier to get your organelle online! You just need a compatible WiFi dongle and then you can add your local network from the web server in Access Point (AP) mode.

Let me know if more detailed instructions there would help!

This looks cool! excited to try it out. We are working on a new OS version for the Organelle, mostly updating software and minor tweaks. It would be good to include a proper headless SC install. I’ll take a look at the install script and see if we can incorporate it, unless there are other customizations in addition to Supernova @dessertplanet?

EDIT, just saw your notes about SC on that thread, I’ll get reacquainted with it, just getting back into the OG software stuff…

1 Like

I’m pumped to hear what you think, @oweno!

A few things I did here:

  1. installed jackd2 from apt-get and configure it (check out deploy.sh for how to do the latter)

  2. install supercollider 3.11.2 headless, +supernova to /usr/local/bin (original install is in /usr/bin, I actually submitted a PR to correct MainMenu.cpp here… hence the patch using run.sh instead of main.scd for future proofing :slight_smile: ). I literally copied @thetechnobear’s original SC_Install app for this, correcting the paths and replacing sc with l my own binaries that I built from source on my organelle.

  3. create the extensions dir for SC and copy the FM7 Ugen stuff there. I strongly recommend that if y’all are putting a different SC in that you also add all the sc3-plugins! FM7 is one of many many many. Norns has all of these so it would also help with cross-compat. These can be built from source on the organelle as well- that is how I got FM7.

  4. On first run sclang appears to make some new directories so I found I had to run it once with the file system in rw mode- that is why you see the firstrun.scd dummy script that is run at deploy time. Without this sclang fails later on in ro mode.

  5. Check out my mother.scd! It implements some useful things for any sc patch. I only made subtle changes to it between Icarus and the DX7. It is designed to help folks get started with sc on organelle.

Hope that is helpful!

No, I didn´t lost the dongle, it is here somewhere. But I don´t use it as it really make no sense for me and I didn´t manage to make it work in the beginning. Never tried it again and I really don´t like to bang my head to the wall again and again what seems to be the scenario every time I try to get such things to work…sounds so easy when you write it but there always several hindernes when I try such things. I have all the patches on a tiny USB stick and I just put that in the computer to load patches on it or rearange things on it. Then back to the Organelle. I am also happy about that the Organelle don´t need any internet as it make it to more of an real instrument to me instead of a computer. The Organelle might be the best thing I ever bought by the way, just such a wonderful and amazing thing!

The patch is fun! Wow that is a lot of presets. I like the different ways to navigate them, nice to be able to jump around and discover new sounds so easily.

@hermanadam here is an Organelle disk image (for model M or S) that has the patch already installed. You’ll have to download and burn it on a new SD card (see section 7.1 in manual) which is also kinda a pain, but doesn’t require the Organelle on WiFi at least.

https://cgdiskimages.nyc3.digitaloceanspaces.com/OGM-v4.2-DX7.img.zip

@dessertplanet I noticed a couple presets causing the patch to lock up and respond very slowly if at all, I’ll try to get the number of one for example… did you ever experience this?

1 Like

I thought I encountered that once in testing, couldn’t reproduce it. If you get the preset number then I would love to fix that!

Version 1.01 released! Internet requirement for installation removed

@hermanadam asked and they hath received :slight_smile:

@oweno I discovered doing this that OS 4.2 does have libjack-jackd2-0 installed, but that is insufficient to actually use Jackd. Check out the updated v1.01 deploy.sh- I am upgrading jacklib as well as installing jack, jackd2, qjackctl. Online install was doing this automatically so I didn’t catch it.

Thank you so much, now it was easy to install!! I really like it and I have the feeling that it complement my Organelle really well with the amount of different sounds ready to be used. I don´t know from another patch with that amount of different ready to use sound. Feels like it going to fill a important hole in my patchcollection!

The only thing I would wish right now would be the “bend” control to switch place so that it will come in the first layer so that you can control the bending without pressing the aux button at the same time. F.e it could swap place with the octave control. The bending is cool to be able to control very fast and with good precision to give every second tone some more live to it.

Again, thanks for your work with this really useful patch!!!

1 Like

I experied the same earlier today, quiet some times it happened and first it just was some distored sound on the presets and then everything got locked. Once there also was a tone just sounding all over it…Unfortunately I can´t tell wich presets it was. Cool patch anyway!

Interesting! Seems like the issue is with the details of certain individual presets. I wonder if the presets are truly corrupted or if they just cause spikes in compute requirements… if we can identify the preset numbers then I can hunt down what might be going on.

Regardless remember if you end up with hung notes that aux+knob4 (polyphony setting) silences all notes in a pinch.

@oweno @hermanadam

Version 1.02 out! No more crackles/hanging for patches with long release time: