Interfacing the DSP-G1 to an Arduino

INTRODUCTION

Looking at the number of synthesizer projects on the web it does not take much to realise a lot of people share the dream with me to create their own synths. As there is Jan Östman, who started a project on Indiegogo called the DSP-G1.

I had just finished the HAWK800 conversion on my Korg Poly 800 and was thinking about making a MIDI controller board for the Poly but then I stumbled on this project via Synthopia which  made me divert this plan a bit.

The smart thing about this DSP-G1 is that it accepts MIDI messages to control the sound. Not only the notes, but also the envelopes, filter, lfo, etc. This, together with the low power it consumes enables it to plug the DSP-G1 immediately to your MIDI output and start playing around like this:

…or…

Use the serial output on your Arduino to make a 5 channel paraphonic synth without the headache of programming the synthesizer algorithm! I’ll get to that later…

CONTROLLING THE DSP-G1

To get to know the DSP-G1 I first made a javascript web-MIDI-editor (since the available editor is only for Windows and I use a Mac). If you have a DSP-G1 hooked up you can try it out here.

Since WebMIDI is still in development and only supported in Chrome Canary (at the moment), I decided to use the Jazz-soft MIDI plugin to merge midi ports and add the controller messages to it.

Here’s a manual from the DSP-G1 which the editor uses. The manual shows you which MIDI controller-parameters you have to choose to edit the DSP-G1.

HARDWARE

Now, in my opinion, the only way to really tweak away on a 18dB lowpass filter is to have a real knob! Combined with the MIDI-controller idea form the Poly I hooked up the DSP-G1 to the Arduino in order to make a device which accepts messages on MIDI-in and merges the data with onboard potentiometers.

I made some circuits for you if you want to do the same thing. I’ve taken the base circuit from Jan’s site and adapted it for a breadboard and PCB.

G1_schema DSP-G1_bb dsp_g1_pcb

(Click to enlarge)

Note that I’ve taken the schematics which incorporate the anti-aliasing filter (R1 & C4 combo). I’ve also tried it without but it was a bit too noisy for my taste. If you want to use this without the filter, just leave out C4 and use a wire where you should place R1.

In this example you have an Arduino Uno, to get the Uno to react to MIDI you also need an Optocoupler circuit. There are a lot of circuits available online to do this, I chose this one from the Arduino forum:

midi-schem

By the way: If you use this on a Teensy – this neat little device can act as a MIDI port on the computer, which means you just plug it to the computer and it will be recognised as a MIDI port.

On the Arduino, you upload this sketch and you can also play away:

ADDING MORE HARDWARE

Great. So now we have the same functionality as what we would have if we would just plug the DSP-G1 to a MIDI port. Yes, but wait: Putting the Arduino in between now we can add hardware control to it. Hooking up a single potmeter is fun, but you’ll soon notice that you want more. Below some examples about how to hookup a potmeter to the arduino. ( I took this schematics from the Arduino and Teensy website.)

graph-circuit3IO-Expander mine

(Click to enlarge)

I made a design (3rd photo) based on the 4051 Multiplexer. I used the Teensy 3.1 but wanted to have a real MIDI-in port so I added the Optocoupler circuit as well. You can decide which one to start with.

You’ll notice I don’t have as much potmeters as I should have controlling all parameters of the DSP-G1. I added a switch to the circuit which changes ‘banks’. When low, the 8 potmeters are controlling filters, LFO, wave parameters. When high, the ADSR parameters of the DCA and DCF are under the control of the potmeters.

MIDI MERGING

I’m now switching to my own project, this might be a big step if you decided you want to start with a single potmeter because it incoorperates the bankselect and 4051 inputs.

You can’t just send data to the DSP-G1 when it also receives something, you need to cleanly merge it with the possible MIDI data from e.g. a sequencer otherwise it will screw up the MIDI format.

This code I made to achieve this is fairly good commented. It’s all still in a development stage (as always?) but works very nicely. Song position and timing commands are ignored but apart from that all merges pretty well.

I did not use any MIDI or Bounce library because looking at it, the structure of those libraries did not really fit my programming loop. Maybe I’m just too pigheaded to learn another way of coding…

 

CONCLUSION

It’s great fun playing away with the DSP-G1. Jan’s idea of developing a standalone IC which just needs MIDI and works straight away is just perfectly simple. I hope He’ll consider developing algorithms which can emulate other synths like basslines.  Would make a nice addition to the range.

 

Share
adminInterfacing the DSP-G1 to an Arduino

Comments 1

  1. Randy Ferrell

    Love what you’ve done now how about help adding a usb host shield to your design so you can use a usb midi keyboard/ sequencer to get midi data rather than the old style midi. I design custom electronics but am not a big coder. I would even be interested in doing a PCB for this project and would gladly send you 1 for your help.

Leave a Reply

Your email address will not be published. Required fields are marked *


6 × = eighteen