I don’t usually mix my micro controller obsessions with my music making, but a friend gave me Korg Monotron analogue synth as a present, and I really love the filter it has. However, I want to be able to combine the lovely synth sounds it can produce with a keyboard and arpeggiator. So, how about hooking it up to receive Midi signals through a DIN connector.
Here’s a small audio snippet of a Korg Z1 arpeggiator driving the Monotron via MIDI DIN to give an example of what I was hoping to achieve by midifying the Monotron.
Marc Nostromo has a really good page on how to setup the Teensy to receive Midi signals via USB from a computer.
However, I needed to have the teensy 3 receive the Midi information via a midi DIN connector from other synth equipment, as I didn’t want to use a computer to send the info. Well, it was as straight forward as hooking up the midi connector to the Serial1 port of the Teensy 3, and then read this incoming data out via Marc’s code with some small changes.
Hooking up the Midi connector to the Teensy3 Serial1 pins requires the signal to be sent through an opto-isolator to protect the Teensy circuitry. I did run the input without the opto-isolator, and it survived, but better to be safe than a dead Teensy3.
In my setup, I have decided to keep the micro-USB port of the Teensy3 accessible through the housing so that i can reprogramme the Teensy, and I can power the converter via the USB port using a 5v USB connection either from a wall charger or a computer. The monotron breakout box was used, rather than having fixed connections, so that the converter can use 1/4inch jacks. This means that I can use the box for other equipment, and not just the monotron.
I used the SFH618A-2 optocoupler, as this was easily available. There were some comments from Paul @ PJRC regarding this optocoupler and the time it requires for signals. There is a short discussion about using a better one here: https://forum.pjrc.com/threads/29376-SFH618A-2-opto-coupler
After some testing, I found that a 560ohm resistor was the sort of value to use on the output with a 220ohm on the input. You can use a resistor value calculator to get you in the right ball park. I used this one after being point to it by forum user, it worked. http://www.hobbytronica.eu/led-resistor-calculator-for-dc-and-ac-power-supplies/
The schematic and arduino library is described in this link to PJRC Midi connector page.
The basic setup is:
Midi In -> optoisolator -> Teensy3 Rx (pin0) -> splits signals to Pitch/gate/cutoff.
Marc’s code for converting the incoming USB midi stream can be changed to accept the stream from the Serial1 pins (Rx = pin0) on the Teensy 3, by changing the calls from usbMIDI, to MIDI, and altering as below in setup () and loop():
// Initialise hardware
configuration.audioRate_ = 57600;
configuration.paramRate_ = 1000;
configuration.audioCB_ = onSampleUpdate;
configuration.paramCB_ = onParamUpdate;
bool status = Hardware::SInstance().Init(configuration);
// Initialise midi input callbacks