Intro: Patchfinder - a MIDI SysEx and Control Change Patcher Randomizer
Recently I bought a couple of old/vintage cheap Synths from Roland: a Alpha-Juno and a JX8P (well, a Korg DW8000 too after a short while).
As you probably know, they are not the easyest to create a patch with due to the lack of a "one pot/slider per-function" interface; This is well likely for the 90% why they are so cheap too (so, well... thank you Roland or I would never get one!).
To face the menu-diving problem I decided to realize a simple patcher/randomizer. This creates random patches by setting random values to all the possible MIDI controllable tone parameters and help you gain access to a whole lot of new starting sounds; you can then tweak them at your will in order to obtain nice sounds quickly ... and have a lot of fun :)
PRESS THE BUTTON AND START TWEAKING!
Step 1: How to
Generating new patches is extremely easy with patchfinder: simply connect it to your synth MIDI IN, enable the synth to receive incoming MIDI (SysEx and/or CC) messages and press the button.
MIDI SysEx and Control Change messages are sent on channel 1 by default, so make sure your synth is listening to the correct channel or no Patches will be generated; you can set the output midi channel on the sketch/code, anyway.
By pressing the button, all the parameters (48 SysEx, 118 CC) will be randomized and you will end with a new patch at every button press. One patch over 3 will be a playable sound or a sound effect; the others could be unuseful or not audible patches.
The first steps to turn a possibly interesting patch into a useful one could be:
- approximate to the closer end (i.e. -12 or +0 or +12) the main DCO tuning;
- if the volume is too low, lowers the VCF resonance and/or envelope applied to the filter. If present, lower the VCA dynamics;
- if the sound distorts, lower the FX (chorus or delay or whatever) level;
- create your patches with unison disabled and enable it before "giveing up" with the patch.
Remember: it's very unlikely that the patch automatically generated will be directly usable: it's only a starting point and, depending on your tastes, it will lead to very different results once edited.
Step 2: The Hardware
You are in the need for:
- 1x Arduino Nano (or UNO)
- 1x 5 poles MIDI connector
-1x PSU connector (optional)
- 2x 220 Ohm resistors
-1X ABS box
Some wires, a soldering station, some solder, a dremel ... and a couple of spare hours.
I used a 80x50x35 mm ABS box as enclosure.
In the pic there's a pro micro, but it's not good for this project. Use a UNO or a nano (atmega 328 or 168 will work great) instead.
In my projects I tend to use PSU connectors when the circuit will be enclosed in a box. It's not mandatory anyway and you can use directly the Arduino's USB connector (the box itself is not mandatory: see the proptotype i made in picture).
I have uploaded an image with the wiring: it's extremely easy as you can see. Notice that the MIDI OUT connection is front view!
Step 3: The Software - Arduino Sketch
Here attached is the arduino sketch i wrote. There are notes in the code, but let me puntualize something:
- The sketch will send SysEx MIDI commands to Roland a-Juno (1/2), JX3P, Korg DW8000 and any synth that could accept MIDI Control Change messages as input. I left some code for Juno 106 too but, bet it, I have not a Juno 106 at hand so I coud not test that part of the code.
- You can set how much your patch will be randomized by setting to "0" or "1" the MAXRNDM constant. Setting it to "1" will let all the SysEx messages to be randomized; setting to "0" will keep the randomization under control by (a) applying no LFO nor envelope to the main oscillator, (b) maximizing VCA level, (c) maximizing DCO levels, (d) setting some FX level. This has no effect on CC's sent, but you can tweak the code at your will for your particular synth and pourpouse ;)
Step 4: What's Next?
Next up: a full featured CHEAP SysEx (and CC) programmer for our 80's Roland (and other) machines... stay tuned!