Monday, January 25, 2016

Mopho Morphosis



I was lucky to get the DSI Mopho desktop version for a very good price, and admittedly I like this little thing a lot. However, like with everything, there is room for improvement -  so let's improve it a bit...

Note: The tweaks work equally well for the Mopho keyboard



1. Cleaner sound

Depending on the oscillator and filter settings, the Mopho's sonic capacity can be quite - unclean. As Synthbuilder well explains in his post on Gearslutz, this is because the DAC's reference voltage is generated from the, quite noisy, 12V rail. While all oscillator waveforms are equally affected,  this noise is most audible on the pulse wave. To test the practical implications on your own Mopho, completely open the filter and turn the resonance to zero. Also make sure that any modulations (envelopes, LFOs, etc) are turned off and no sub oscillator is active. Turn one oscillator off, and the other to Pulse 50. Instead of a clean pulsewave, it will sound somewhat dirty. Increase the puslewidth, and the dirtiness increases. At Pulse99, when you actually should hear nothing, the noise will be very dominant.

Before (Top) / After (Bottom): Pulse50 - Pulse 60 - Pulse70 -Pulse80 - Pulse90 - Pulse99

Luckily there is an easy fix. Since the noise from the 12V rail goes unfiltered to the DAC, filtering it is enough to clean the sound. A simple 10 µF tantalum capacitor soldered across resistor R52 (next to U12, the DAC) does the trick. Tantalum capacitors are polarised, and the negative pin should be soldered towards the front of the unit as indicated in the picture:




Afterwards, all oscillators will be absolutely clean. Thanks again to Synthbuilder for figuring this out.!




2. USB

Depending on the situation, sometimes I prefer DIN IN/OUT for MIDI communication, sometimes I would go for USB. Unfortunately the Mopho does not offer a USB port, but also this can be changed.

A quick look at the synth's innards reveals a 6N137 - an optocoupler that is regularly used to isolate circuits for MIDI INs. Its location close to the MIDI DIN sockets supports the this usage also in the Mopho, and a quick look at the 6N137's data sheet tells us that the incoming MIDI signal is passed out at pin 6. Meaning: we can easily hijack the circuit here by implement a bidirectional MIDI THRU "port". However, our THRU will not get a physical connection to the outside world, but with a Teensy µprocessor. As the Teensy offers multiple serial lines, TX1 (pink cable) can be used to infuse our own commands into the Mopho,  RX1 (also pink cable) can listen to all incoming MIDI IN messages (let's be aware of everything that is going on in there), and RX2 (blue cable) can sneak on all commands leaving at the MIDI OUT (I do not  eally care about sending things to the Mopho's MIDI OUT, so we'll skip connecting TX2 to that).  Right in front of the DIN sockets is a row of headers from the display connection. The right-most is GND and the one next to it is a 5V rail which we can use to power the Teensy:




Best to use is the Teensy 3.1/3.2, as their pins tolerate the 5V of the Mopho's MIDI implementation. Since I only had an Teensy LC lying around (and the LC comes for half the price - however, its pins are strictly 3.3V) I had to shift the voltage levels down/up. 2N7000 transistors are cheap, abundant, and perfectly suitable for that purpose. As a bonus, they can be used to shift levels both up and down. Together with two 10K resistors, the basic circuit to shift voltage levels between 5V and 3.3V looks as following:




As the MIDI specifications suggest on page 3, we additionally pass the signals for and from our "THRU" port through two logic gates before inducing then into the 6N137. I used a 74HC14N hex inverter for that purpose, and used two of its channels for RX1 and two for TX1. To stabilise the power supply to the hex inverter, we further add a 100nF decoupling capacitor to its GND and Vcc pins. RX2 can be more or less (less because we still need the level shifter) directly connected to the Teensy, like any other receiving MIDI device. An additional optocoupler is not necessary here, since we are anyway connected to the Mopho's GND and 5V, and therefore do not need to isolate our circuit.






However, we need to isolate everything from the power lines on the USB cable, and we do this by cutting the connection between the two tiny Vusb square pads on the back side of the Teensy LC. After assembling everything on a prototyping pub, the final circuit looks like this:






The observant reader will notice two additional resistors, as well well as three cables connecting to the right side of the board - which brings us to...



3. Clock and Note Indicators

I change my setup a lot, and not always does everything work immediately. While troubleshooting, it would be nice to know if the Mopho currently does not receive any MIDI messages, or if the sound path is interrupted. Since we already hijack the MIDI connection, we can easily add several status LEDs as well. I implemented two LEDs, one that displays the clock in 8th note divisions, and one that indicates if a note is currently played. Both are visible in the title image of my post, in the black circles in the upper left corner. The LED for the clock signal is connected via a 220 Ohm resistor with pin 8 of the Teensy, the note LED via a similar resistor with pin 7. I wrote the corresponding software in a way, so that is requests a dump of all global parameters on startup, and by this knows if an internal or external clock will be used, and on which MIDI channel the Mopho listens for notes. Similarly, if either parameter is changed on the Mopho, the Teensy is aware of that by analysing the NRPN messages through RX2 on the MIDI OUT. For everything to work, make sure to upload the firmware (which you find here) to the Teensy as described here, and happily use the USB or DIN ports as you please :)

DSI Software Editor with Mopho connected by USB



4. Optical Polishing

After modifying so much, I thought it would be nice if we also optically improve the Mopho a little bit. I did so by adding dark wooden sides that nicely complement the yellow color:..





Post a Comment