Instructables

Turn your Arduino into a 4 voice wavetable synth with only a few components...

Featured
Picture of Turn your Arduino into a 4 voice wavetable synth with only a few components...
Multiple synthesizer projects have been done for the Arduino, but few have been able to utilize the full power of the Arduino processor. DZL from GeekPhysical wrote a 4 voice wavetable synthesizer that is one of the more advanced software based synths for the Arduino.  It has wavetables included (sine, saw, square and triangle) and envelopes to create beats.

This instructable will show you how to make a simple sequencer that plays a little melody. You can hear how it sounds here:



It is up to you to modify the code to do many other things. Possible examples could be a midi controlled synth (sample code included), it could be a strange noise machine like this one:



Or you could detect touch and convert it into sound patterns:

 


 
Remove these adsRemove these ads by Signing Up

Step 1: Parts

Picture of Parts
You should use the following parts:

  • Arduino board
  • BreadBoard
  • Wires
  • 2.2k Resistor
  • 100n Capacitor
  • 100u Capacitor
  • Jack where left and right channel has one wire and one wire to ground
  • A pair of computer speakers

  • Don't worry if you don't have the exact values. It will probably work, but might be with lower sound quality. The Arduino is not powerful enough to drive a pair of headphones so you will need some kind of preamp for that - e.g. a headphone preamp like this one.

    Step 2: Add the components to your breadboard

    Picture of Add the components to your breadboard
    DSC_0656 copy.JPG
    diagram.png
    Start out with adding the components to the breadboard as the picture depicts. If you want diagram based instructions look at the third slide in this step.
    skeblik3 months ago

    My speaker have 12Ohm + 100Ohm rezistor.

    For tune command was working OK.

    skeblik3 months ago

    Hello,

    I try to use your instructions and run one of your examples, concrete different_pins_and_modes.

    I'm using Arduino Leonardo. I try mostly everything but I cannot hear any sound from my speaker. Should I change some settings or what can be a problem?

    Thank you

    jairova3 months ago

    Please ignore my previous comment! I just had to move the header files to the directory of the sketch. I want to know how to control the MIDI synth though. I'm not sure what you mean by the Arduino receiving MIDI over serial. Is it the Serial Monitor?

    jairova3 months ago

    Thanks for uploading this! Unfortunately I'm having some trouble and can't get the new code to work though. the old code works just fine however. Whenever I try to compile the new code, I get an error like this:

    song:22: error: 'synth' does not name a type

    song.ino: In function 'void setup()':

    song:27: error: 'edgar' was not declared in this scope

    song:27: error: 'DIFF' was not declared in this scope

    song:29: error: 'SINE' was not declared in this scope

    song:29: error: 'ENVELOPE0' was not declared in this scope

    song:31: error: 'ENVELOPE2' was not declared in this scope

    This was for the song file, but it's the same error for every file.

    milo8883 months ago

    I've just built this with the new version of the code and the differential circuit. It sounds great with headphones. I found a rather oversize (high current) 9mH inductor that is very bulky. My background is programming, not electronics. What type of inductor would you recommend for the low pass filter of this circuit?

    CharlieMcF1 year ago
    Great project, thanks! I'm having problems getting a sound output using a Mega 2560 - the code seems to run fine (at least it streams the counter values out to the terminal) but there's no output that I can find on any of the PWM pins. Is there a simple fix do you know, or is it a huge amount of work to get it to run on the Mega due to the different architecture?
    Im having the same issue, did you ever discover a fix for this?
    madshobye (author)  Partyghost6 months ago

    Try the updated version.

    Jbou7 months ago

    Hey! How can we try the code if the cpp files aren´t there??

    madshobye (author)  Jbou7 months ago
    The ino files contains what would normally be a part of the cpp file. It is an Arduino way of doing things.
    Partyghost9 months ago
    Hey there, awesome project. Im actually working on the groovesizer by MoShang but am not able to get any sound out so I came over to yours as there are less components to see if I could get sound out at all.

    Im having the same problem, code is uploading error free but Im still not able to get any sound out!

    Im running windows 7 and using an Arduino Mega2560 and have the circuit built on a breadboard. The sound is going out to an iHome rechargable speaker.

    My questions are is there anything that I need to change in the code since Im running a different board? And is there anything that I can be looking for or testing with a multi-meter to see if theres something I have messed up in the building of the circuit itself?

    Thanks!
    I also have an Arduino Micro that I could try this out on if its supported
    gavox11 months ago
    I'm relatively new to arduino, but the program keeps telling me various parts of the code contain errors...
    Running ubuntu 64-Bit, Arduino Duemilanove.
    krlos161 year ago
    hi my friend,, please might upload the code for arduino leonardo, thanks, regards from Bogota Colombia
    if your wondering if it works on the leonardo yes it should
    d33d1 year ago
    awesome projects, Mads! can you share a link to code/wiring or at least some more info about the touch sensing-sound conversion circuits as in the "mediated body" clip? I am interested in integrating something like this into a larger project out on the playa...
    thanks
    madshobye (author)  d33d1 year ago
    Look at the instructable on touche or the singing plant under my profile and you will find two good examples. Good luck with BM.
    Hey so I have everything set up, but because Im very new to this I guess I'm a bit confused on how to upload this code. Ive downloaded all the files...now what should I do?
    mcruise1 year ago
    Hello, i'm seriously thinking to build this project, but what code i have to choose from link?
    madshobye (author)  mcruise1 year ago
    All of it, but open it with the "synthOriginal.ino" sketch.
    That is one chunky breadboard...
    Wonderful. I noticed you commented out some midi support. If I un-comment it, what pins should I use or it it not completed yet?
    rezponze2 years ago
    That was really inspiring. I've reproduced your tutorial and everything was smooth and clear. It worked the first attempt.

    However, I found a bit difficult to understand how External Midi works in this code and with this hardware layout.

    It would be great to know where is supposed to come in the MIDI IN signal.
    Could you possibly link to any MIDI interface compatible with your design?

    Thanks in advance for any further information or links to better understanding the MIDI interfacing.
    zcarlos2 years ago
    Hello.
    I have two questions:
    I've tested it and it sounds better (and louder) without caps and resistors, wiring ardu pin to jack directly. What have I done wrong?
    And, please, can you post a more hackable code? Sound is awesome but I can't imagine how to do things, p.e. read some buttons for change pitch.
    BPM: Your video demo song is slower than my attempt, Where can I change BPM?
    Thank you very much.
    energon2 years ago
    G E N I U S !!!
    largowork2 years ago
    Funny!! but I don´t know very well where can I change the parameters. Thanks!
    madshobye (author)  largowork2 years ago
    That is a whole other story and quite a challenge - I dream of releasing a simplere version that is more hackable. This version shows off the potential, but uses a couple of advanced tricks. Remove the demo tracker part and just play notes yourself then you can get a feel of ways to play it.
    prphntm2 years ago
    Can you explain how to program this a bit more? I just built the circuit (2 minute build) and am trying to program this thing and am encountering lots of trouble.

    Being completely honest, I never coded in the "arduino" language and it's frightening me.
    madshobye (author)  prphntm2 years ago
    Great to hear that you are using it! I think there are lots of tutorials who have already explained how to program an Arduino and they do a much better job than I could. So I will just give you a couple of links:

    http://arduino.cc/en/Guide/HomePage
    http://www.youtube.com/watch?v=4HqXAmV_Ock
    http://www.ladyada.net/learn/arduino/lesson1.html

    Let me know if you succeed.
    madshobye (author)  madshobye2 years ago
    The 3 things that ususally causes trouble:

    1. On windows you have to install the proper drivers (sometimes also on mac).
    2. Remember to select the right serial port in the gui.
    3. Remember to select the right board in the gui.