Wednesday, 30 November 2016

DIY Arduino String Synth

DIY Arduino String Synth With Analogue Filter

***Updates at bottom of page - Easy to read Schematics etc****

Just like the Arduino Drum Machine, this is another build based on the amazing work of Jan Ostman, who is generous enough to share the code over on his website;

The suggested $3 dollar donation is quite simply amazing value for money, so if you use this, don't forget to tip!

On top of Jan's work, I've added a 12db filter with resonance (based on this design) to add a bit more sound sculpting to the synth.  Filters are a massive part of synthesis to me (mainly because I can't play but can quite happily turn knob) and an analogue filter really adds to the warmth 'wobble' of the synth.

The filter has a separate on/off switch and bypass switch.  Looking back it would've been better to build that into one switch, and also to move the output further to the right.  Ahhh the power of hindsight.

I wanted the synth to look very Minimoog-ish or Prophet 5-ish, which I think I achieved, but building the case was by far and away the hardest part of the build (due to my own inexperience/stupidity).

Total build time was spread over 3 months and probably took about 20 hours (most of that time was spent staring at nothing trying to think what to do next).  If I were to make it again I think I could get it down to about ten hours, if luck was on my side.

Here's a quick video of it in action;


The total cost of parts came to about €60, with most of that going on the MIDITECH midi keyboard. I used a cheap Chinese Arduino Nano clone to keep the cost down (around €2), then a few pots and resistors etc again from China. Also high quality plywood from Modulor for €2.90 (I think it was 6.5cmx250x500). The perspex was also from Modulor. Obviously if you don't already own wood stain and glue etc your cost will be significantly higher. For the panels I used my banggood laser engraver, which I think adds massively to the look of the synth.  If you don't have one of these you could use a label printer.


Jan's website documents the build process pretty well, so go check there for schematics etc.  I did manage to draw up the wiring diagram which may save somebody a bit of time when hooking up the keys (find it somewhere below).

I started by taking apart the MIDITECH and unplugging the ribbon cables;

You won't need this part any longer so remove it to save some space;

I soldered the Arduino Nano to some perfboard to make it easier to handle (and to screw down to the chassis later on).

Then using some ribbon cables I began to figure out how to connect the keyboards out's with the Arduino's In's.

Eventually I figured out what went where and soldered it all down and covered the connectors with heat-shrink. You'll probably save a bit of time if you use this;

That's the majority of the synth finished!  From the nano's output I added a bypass switch and then the 12db filter.  I forgot to take any pictures of that though until it was already attached - sorry!  But it all fitted onto another small perf-board;

The Case

I started by cutting some cheap board and securing the key-bed onto it.  This gave me an idea of the final size of the synth to which I based my design around.  I kept the bottom plastic of the MIDITECH (always capitals!) keyboard because it would secure down easier (using it's screw holes) and also because it would probably be a pain to try and re-construct it any other way.  I also added some 'feet' at this point.


With bottom panel size known,  I sketched out the rest of the case...

The side panels;

All the parts have been cut here (the other bit of perspex with the dials on was temporary just to make sure it was still working);

Notice the pencil with my name written on it.  That's mine it is.

Then using my old friend Ponal Wood glue I started sticking everything together (including fingers, clothes and everything else);

Then it was time to design the front panel and the laser engrave it onto perspex.  The smell was awful (and toxic)...  I stayed in the room long enough to feel faint.  I did sleep well that night though.

Running a test on card;


After it was engraved I filled it in with white acrylic paint;

 With the panels and case completed it was time to stain the wood.  I used a mahogany brown stain, using two or three coats.  The trick here is not to use to0 much and to keep it moving when it's been applied, otherwise you'll get an uneven finish.

 Once this had dried it was time to add the varnish.  Like with the stain, I find it's best to use only a tiny amount and spread it out as much as possible to get the best finish (you can always add another layer later).  With this synth I found one layer to be enough;

Once this has dried you can now put it all together.  For extra security I also used some hot glue to do this (and it's not fallen apart yet)

I added screws to secure the perspex panel but can't find a picture of that. But I'm sure you can imagine what it looks like.


Overall I'm pretty happy with how it turned out, with only a few gaps in the wood caused by my rubbish cutting/maths skills.  Should I make it again I'd move the output over to the far-right as I've noticed it's possible to knock the cable when going mad on the filter (you should only touch a synthesisers knobs as if they are really hot, otherwise you're not a real synthesist).

I've been learning C for a while, but it's a massive mountain to climb.  From here though I've bought the following book;

When I eventually get around to reading it, it should give me a better idea of what's going on in the code, then I'd like to attempt a version 2 using maybe an Arduino Due and add some more controls.



Below is a simplified schematic for the string synth...  Sorry it's not the best quality I'll try and take a better picture later, but hopefully this should be of help those of you new to schematics that want to try and build this synth.

The connections where it says 'goes to keyboard', you can see elsewhere in this blog for another detailed diagram of where and how these can be wired up to the keys.   As for the potentiometers, I *think* I've drawn them the correct way (if you make this and the pots are working the opposite as you'd expect, swap around the ground and 5v connections on each pot).  If the drawing is incorrect, let me know and I'll re-do it. Even if this version is wrong, nothing will break & it'll still work OK (just the pots will work in reverse).

You can see where the pots 5volt and ground connections need to go in the diagram, I didn't join them in the picture because the wires would start overlapping and become confusing.  It's pretty obvious what to do though.

Also drawn is the audio out headphone socket, with the positive voltage/audio signal coming from the output D11, which then goes through the resister/capacitor (which acts as a filter to reduce some of the noise from the Arduino).  The other side of the audio goes to the ground signal.  If you don't know how to wire up a audio jack, maybe google 'audio jack pin-out' or 'audio socket wiring diagram'.

If you plan on adding the analogue filter, you'd leave off the audio jack and have the previously mention positive wire go into the input of the filter.  You'll have to learn to read the schematic for that I'm afraid, as I couldn't really simplify it without it becoming more complicated than a normal schematic.  Give me a shout if you get stuck though.

Good luck!


I'll draw a simplified schematic for the Arduino drum machine soon.

****UPDATE PART 2******

Below is a wiring diagram to add a bypass switch to the filter;

...And if you were struggling to figure out how to wire up the Pots for the filter, I've drawn out a simple picture showing how (I've had to do this whilst away traveling, so it's partly drawn from memory but I'm pretty certain it's correct)...

Obviously the drawing only shows how the pots are wired and not the full schematic.  Go look at the proper schematic for the rest of the plans, but this will give you a good idea of how to wire up the pots.

Powering the filter from a 9v Battery will give it it a bit more 'oomph', so if you'd like to do that, the below illustration will give you an idea.  Further, should you want an LED indicator showing if the filter is switched on or not, see the chequered box;

I only had SPDT switches available when I built the synth, so that's why there's separate switches for both the on/off & bypass, but you could easily just use one 2PDT to save space.  You could even add an audio in jack at the start of the filter to process other audio.

Good luck!

***UPDATE Arduino Drum Machine****
Simplified Schematic

Ok, so this 'simplified' schematic might not actually make things any simpler!  But some people have asked for it, so maybe it'll help clear somethings up a little bit - especially how to wire up the audio output and pots/switches.  This was drawn from memory so I hope it's correct - give me a shout if not and I'll update (the pots might work in reverse, but they'll still work).  I'd also urge you to look at the schematic on Jan Ostman's website for more help;



  1. Hi i m realtà interesting in build one!but i ve no skills in C++ lenguage!could you help me with info at you

    1. All the code has been written already, you just need to upload it to an Arduino. You can find the files here;

  2. This is amazing! I want to build one of my self! But can you explain, where The Sound goes out of the Andurino? And where on the andurino the Potis connect!? thanks alot

    1. Hi du kommst ja aus dem Lande, Wahnsinns Teil, klingt auch noch echt klasse!
      und sieht aus wie ein Moog! ;-) Super Arbeit. Sag mal, du erklärst in deinem Diagramm super, wo die Tastatur dran kommt, aber ich frage mich wo die 3 Potis an den Arduino kommen, und wo der Soundoutput drauf gelegt wird. Ist es viel Arbeit mir das darzustellen? Würde mich über eine Antwort riesig freuen! Will das Teil für meinen besten Kumpel zum Geburtstag bauen! Grüße

    2. Hi!
      Ja, die beiden Sachen würden mich auch interessieren. Ich werde aus dem Schema bei janostman nicht ganz schlau.

    3. Hallochen! Leider mein Deutsche ist nicht Super (bin Ausländer im Deutschland!), aber ich habe google translate! Morgan oder uber-Morgan ich kann schreiben/zeichnung ein einfach-freundlich schematic für dich. Danke!

    4. That would be fantastic. I'm also studying your project and would like to make one for myself. Thank you very much in advance.

    5. And for those you who are interested in nice front panels (especially people from europe). There is programm called "Frontplatten Design" where you can create your front panels. You can even send it directly to production. The price will be calculated in advance.

      Für all die, welche passgenaue und schöne Frontplatten haben möchten. Es gibt ein Programm genannt "Frontplatten Design". Dort kann man eine Frontplatte nach Wunsch designen und direkt bestellen.

    6. I've just updated the blog with an easy to read picture: hopefully this should be all you need to make the synth. Look for the last picture for a full write up. Will draw a simplified drum machine schematic soon. Thanks!

    7. wow, thank you a lot! very helpful!

    8. I also think the scheme on is very clear, but what I do not understand is exactly where Potis for Cutoff and Resonance come. Would you be so good at least to give us a little better illustration. Thank you very much

    9. It also does not open up to me where or how I build the bypass switch between

    10. I'm away at the moment, but I'll draw it out as soon as I get a chance. Thanks!

    11. You are the best man! Thank you a lot!

    12. I've updated the page with a few other drawings and things showing the pots and bypass switches etc. Good luck! Let me know how it goes!

    13. Hi Hi, thank you soooo much! :D

  3. Hey folks, I made a MIDI module version using the 28-pin PDIP version of the 328. The only needed change is using analog MUX channels 1 to 3 instead of 5 to 7 as channels 6 and 7 are only on the 32-pin device. Also, it might help solve some noise issues if you use A/D input weighting to stabilize the pot values, here is my main loop as an example:

    void loop() {
    digitalWriteFast(4,TRIG); //GATE jack
    digitalWriteFast(5,TRIG); //GATE LED
    //--------------- ADC block -------------------------------------
    while (bit_is_set(ADCSRA, ADSC)) ; //Wait for ADC EOC
    // Truncate A/D results to 8 bits and use exponentially-weighted sample averaging
    ADsample[MUX] += (((ADCL+(ADCH<<8))>>2) - ADsample[MUX])>>2; //
    if (MUX==3) PHASERMIX=ADsample[MUX]; //Ensemble
    if (MUX==2) {
    if (MUX==1) {
    ENVELOPE=ADsample[MUX]>>3; //Contour is a 32 element pair of tables
    if (RELEASE==255) GATED=0;
    if (RELEASE!=255) GATED=1;
    if (DETUNE!=olddetune) {
    for (uint8_t i=0; i<4; i++) {
    if (FREQ[i<<1]) {
    if (MUX>3) MUX=1;
    ADMUX = 64 | MUX; //Select MUX
    sbi(ADCSRA, ADSC); //start next conversation

    Just be sure to put a uint8_t ADsample[4] = {0,128,128,128}; up in the variables list

    Scott Rider

    1. Thanks Scott - I'm planning on building a module version at some point, will keep this in mind

  4. That's cool! How about to adding /GATE signal for gating external ADSR envelope for filter? Excuse me for my english, but my english very bad...

    1. I think if you look on Jan's original schematics, there's a CV out from/near one of the pots, which could then be used to further control modules. I didn't use it in my version, but it would be very easy to add

  5. Hello,
    My congrats for the synth.
    I tried this, but the octaves give all the same notes, it's the same octave all keyboard.
    Anyone else with this problem?
    Thank you

    1. Are you using the same keyboard as I used to build the string synth? If so, double check the simplified wiring diagram I posted. Or do you mean clicking the physical octave buttons on the back of the keyboard doesn't change the octave? These octave functions will no longer work once the Arduino is hooked up. Jan also posted code to make this unit controllable via MIDI, maybe upload this code & see if you can control it OK using an external controller?

    2. Thank you for your response :) I explain better: In the physical octaves, when I press the key for example, the G, any octave sound the same note. In your video doesn't work like that, it's perfect :) Another thing is, when I press the same key, it changes the pitch random, like diferent notes in the same key. I changed the code so it works on Arduino Mega ADK, and the keyboard is diferent, but as also 8 col, 5 rows. I have working hard on this project, made a button to control or not the phaser, make it work on MEGA ADK, this is killing me :) and I'm using a LCD for fun. I will post my progress, maybe people get some ideas :) But still with that problems. Thank you so much and my congrats :)

    3. And i alredy know the schematics from memory, triple checked averything :) I'm getting an overdose :D I'm dreaming with this :) well, I keep trying to see what I get and will tell. Thank you again :)

    4. I've not used an ARDUINO Mega, but I think it has more analogue/digital pinouts? Maybe the pins are assigned to different numbers? Or maybe the code needs to be changed to reflect these differences? Sorry, I can't really be much more help than that :-( it might be worth getting hold of an ARDUINO nano and getting it to work on that first, then troubleshooting between the two?

    5. Yes, Mega has more digital pins. I assigned to the numbers it should, I will keep trying, I was checking if somebody has the same problem. Thank you so much anyway :)

    6. No worries! Best of luck to you!

    7. Hello, I got it. It doesn't work with another boards. I'm using a chinese NANO, the pins are burning, it's normal? LOL This is a Rammstein synth. Thank you all :D

    8. Forget, now it's just normal. No rammstein. working so cool

  6. Hi, would you be so nice and tell me, because I don't get it, how to connect the stereo Pot in the Filter schematics. I've tried my best here:

    1. Drawing it in a schematic program? Hmmm, I guess you'd either use a dual-pot in the footprint library (which you might have to create yourself), or maybe two single pots? Here's the original schematic from the electro-music forums, it might be easier to use this as a reference;
      Are you planning on making a PCB? I'd suggest making it up on a breadboard first for reference incase you find a fault. I think if I were to make it again, I'd use a DPDT switch for the filter bypass, with one side switching the input to/from the filter/arduino (as the SPST does in the version I posted), and the other half of the switch switching the output from the filter/arduino. On my original version the outputs were joined and I'm not sure if part of the filter was leaking into the 'pure' Arduino output... a DPDT switch would fix this though.

    2. Hi, which Pots are you using for Ensemble, Contour and Modulation?

    3. Sorry for the delay, I'm using standard 10k pots

  7. This comment has been removed by the author.

  8. OK, Thank you very much. I firstly wanted to do a PCB, because it seems to be a lot easier. One more question, does the Arduino has to be powered by a second battery, oer via the USB Port, or via the Battery of the Filter?

    1. You have a few options;
      1. Power everything over USB (have one of the nano's 5v output pins connect to the power supply of the filter). This option would be simplest, but the filter might not sound as good. You could perhaps step-up the voltage for the filter to 9v, but you'd need to look into this.
      2. Power it with both a battery and usb, like in my example
      3. Power everything from the 9v battery... I've not looked into this, so you'll need to do a little research; I don't know if the Nano can except more than the 5v, so you may have to add a simple 7805 power regulation circuit into (I think) pin 30 (?!?) of the nano?

      There are probably other ways to!

      If you're making a PCB you might also consider ditching the Nano and using the raw components for that instead (you'll need a 7805 power circuit here anyway). I've just got some PCB's back for my drum machine & luckily it worked first time, but I did breadboard it before-hand, so I'd definitely advise on doing that and seeing which circuit works out for you best!

      I've been listening to your soundcloud music while typing this - nice! - just sent you a friend request (or whatever it's called on soundcloud)

  9. hi there! greetings from Greece!
    i have a question i would like to ask!
    i uploaded the code on a cheap CH340xx arduino nano v3, upload went just fine!
    i used a multimeter device to determine columns & rows on an old EMU Xboard25, ok with this too!
    connecting clavier on arduino, ok!
    i didnt connected the pots thou but ove my enthousiasm i powerd up the arduino, hit the keys no sound came oute... are Pots essensial for the output signal??? i can hear my speaker making a short pulsy noise as i plug in the power, but thats it!
    thanks in advance

    1. Hey Ganesh in Greece! If you want any control over the sound you'll need to get some pots, but if you don't mind it staying at a constant you could always swap them out for some resistors? If you're only bread-boarding it, you can pick up some trim-pot resistors for almost nothing;

    2. This comment has been removed by the author.

  10. Hey Blog! thanks for your quick reply! seems you're still active rather than Jan... he never answers man! :/
    well! i do have pots, res, caps n stuff... i made a bill of materials as soon as i decided that i was going to start this project!
    the reasson im asking is because on my breadbord at this very very moment there are only 2 things... the arduino & the keybort wires, but as soon as i plug the power on arduino and hit a key, nothing comes out from the output... thats why i asked you if the pots are essential or relative to the output signal... because im not getting any output signal! well, not with my current set up at least

    1. Sorry I don't have it breadboarded anymore to check :-( I think Jan posted the code to make it MIDI controllable, so you could try that version, then see if you can control it from another MIDI keyboard. That would at least tell you if it's a problem with your keys. Also, if you're using a cheap nano clone you should double check the pin-outs match with a normal nano. And have you verified that the nano is working? I'd run a quick blink sketch to double check. That's all the things I can think of off the top of my head. Good luck!

  11. i did verified the board! i found the same code somewhere else online and they implemented some serial commands trough the serial monitor option of arduino IDE.
    so... output works fine, but i think it must be something with my keys... in your version of the synth, hiting keys will give you variables of 10010000/10000000 in Serial Monitoring???
    i ll check again my keys due to their 8x8x4 wiring matrix, i mean my keyboard has 20wires instead of typical 8x4

  12. >>so... output works fine, but i think it must be something with my keys... in your version of the synth, hiting keys will give you variables of 10010000/10000000 in Serial Monitoring???

    Sorry, I don't have it hooked up anymore to test for you :-( Maybe this video might be some help to verify the keyboard wiring (skip to 1min30sec);

  13. Thanks Gary! for all of your help! ^^
    i did follow the procedure to find out my matrix! but still no sound... :/
    i read somewhere that if i short circuit the A0 pin with D5 pin the arduino will play a note...
    im only asking that because i did tried to do that bu still no sound and im starting to think that maybe theres some modification that need to be applied on the source code ^^
    Thanks again!

  14. I ll like to build somethig like this but without keyboard, with a midi in instead

  15. The code is out there to make this!

  16. I just got the parts to build this! Thanks for such a great information!
    I'm doing gate out / no filter so I can hook it up to my modular (built a cool ms20 clone recently). Also gunna hook the Nano up to a 9v in (with toggle and LED) so I can power it with a standard wall wart.
    I hope it comes out looking as professional as yours!

    Pot values really don't matter? Gunna breadboard it with b100ks and see how that works first.
    Thanks again!

    1. I can't remember the exact pot values - it was either 5 or 10k. I think 100k will work, but you might find only a small turn will cause a large change, and then a large portion will do nothing. Best of luck though, and it'll be easy to swap out if not. Maybe post pictures somewhere?! :-)

    2. I can't wait to build a case for it and share it!

      I have it on breadboard now but the Arduino code keeps getting error messages when I try to verify and tbh I don't know all the much about software. I'm using a Nano knockoff from Tayda, but I got the LED tester experiment running so I think it's connected correctly. I asked the muffwiggler forum post about it, but every Arduino question seems the same: "how do I make this work here's almost no information about MY problem HELP"

      I guess this is going to be a long term project.. but I needed a good reason to learn Arduino formatting so maybe its a good thing...

    3. Hey Anders! The arduino from Tayda is probably ok, try running the blink sketch and see if the LED on the board flashes, then you'll know the arduino is working ok (if you don't know how to do this, there's bound to be a YouTube video). What error messages are you getting when you run the string synth code? Have you copied everything ok? If you're missing the end bracket it won't run! Also, make sure you're browser doesn't copy any extra spaces (they might even be invisible indented-blank spaces). When you get the error messages, it'll usually have a line number where the error is present take a look and see if anything looks different to the code you copied. Also, double check the arduino software is set up for the nano and not the Uno (which is it's default setting).

    4. Thanks for all the help!

      The code issues were just spaces that shouldn't have been there. It works fine except three notes (middle G and two in the upper octave), but I'll double check the code later and can hopefully work it out.

      I tried to power it with a 9v power supply to the Vin and G but it added a lot of noise. USB sounded fine. Might eventually add a regulator to use the 9v power supply later, who knows.

      I'll send some photos when its done for sure!

    5. Awesome - Glad you're underway!

  17. Hey man, really cool version! i'm about to start building one myself and i wanted to know if it was possible to use it as a module, like with 5 pin MIDI ports.

    1. Hi Martin, See the comment from Scott Rider above for some help with this. Also, Jan Ostman talks about it in this post;


Say something...