The Arduino OctoSynth
Intro: The Arduino OctoSynth
What is the OctoSynth you may ask? The octosynth is a polyphonic synthesizer that is able to produce eight Pulse Width Modulated tones that form together a musical scale. In English terms, it is a 8 key electronic organ that can play more than one tone at once but only one scale.
Special thanks to Joe Marshall who wrote the very useful code.
As suggested in the title, it runs on Arduino.
So before we get started, let's see what is sounds like. Shall, we?
And and explanation would be nice.
Special thanks to Joe Marshall who wrote the very useful code.
As suggested in the title, it runs on Arduino.
So before we get started, let's see what is sounds like. Shall, we?
And and explanation would be nice.
STEP 1: Parts of the OctoSynth.
You will need:
An Arduino
12 Male headers (2 together and another six together. Also, another 4 together(Optional))
8 Unifomly LONG Wires ( By long I don't mean 3 meters but it means a decent 10 inches or maybe, 20 crentimeters.)
A Certain Amount of Copper Tape (Get a roll to be safe)
Enclosure (I used styrofoam as a base but if you want an enclosure, which is totally fine, you can use one. The length will depend on the wideness of you choose.)
Power Jack and Battery
Speaker
12 Male headers (2 together and another six together. Also, another 4 together(Optional))
8 Unifomly LONG Wires ( By long I don't mean 3 meters but it means a decent 10 inches or maybe, 20 crentimeters.)
A Certain Amount of Copper Tape (Get a roll to be safe)
Enclosure (I used styrofoam as a base but if you want an enclosure, which is totally fine, you can use one. The length will depend on the wideness of you choose.)
Power Jack and Battery
Speaker
STEP 2: Program.
Upload the code below to the Arduino.
Open with the viewer of your choice.
Open with the viewer of your choice.
STEP 3: Build.
- Measure out how much material you have with the copper tape. Make sure you leave enough enclosure/foam to accommodate for the spaces in between to prevent shorting.
- Cut that much tape and maybe a millimeter more.
- Divide the tape into eight sections by folding.
- Solder ONE wire to each piece of tape.
- Solder male headers to the tape. Six pieces to six headers for six in puts and then a pair of two for the other two inputs; Digital 6 and 7.
- Order will now begin to matter. The first one (Analog 0) will go on the far left of the enclosure/foam. Analog 5 will go to the input 6 so it is la on the musical scale.
- Digital input 6 is ti and input 7 is high do.
STEP 4: Wiring.
Plug in the wires to the Arduino. Connect the speaker to Digital Output 11. You may need to use headers.
STEP 5: Enjoy.
You can now add power to your Arduino. You speaker should play an opening tone.
The thing is the opening tone is when the machine calibrates itself. If you press any key then it will think that that key is 0. Count to ten before playing.
This is polyphonic and so it can play more than one note at once. Hope you enjoy.
The thing is the opening tone is when the machine calibrates itself. If you press any key then it will think that that key is 0. Count to ten before playing.
This is polyphonic and so it can play more than one note at once. Hope you enjoy.
60 Comments
CemR 7 years ago
Hi, I made it but when i power it and not touch anything, after 3 seconds it stars making a loud sound. It is like every note is played.
I disconnected 7 of the (buttons?) it still sounds the same
CemR 7 years ago
Please help this is urgent
Lasse Munk 7 years ago
Hi ! This is great !
:)
I would like to use quite a few sensing 'pads' to make a sort of lamp. But I need some longer cables / wires.
It works when I use a 1,5m cat5 cable, using only 1 of the wires, but if I connect 1+ wires, then I can't get a reading from. Do you have an idea of why? And do you know how to use longer wires?
I'm not sure I understand it right, but it would it help to amplify the voltage?
blinkyblinky 7 years ago
When working with wireless, I often wish I could just use a very long wire and be done with it. Unfortunately, that is not always the case. In this case, this circuit depends on capacitance, so the lengthier the wire, the more noise the wire will pick up, meaning it will be less able to detect the change when you touch it. When you add another wire, you increase the amount of noise pick up. In this case, one viable solution I can think of is to use wireless, which can lead to a whole array of other problems.
ValdemarK 7 years ago
Cool! Thanks for sharing! Modifying it to output midi would be really sweet! A small and simple polyphonic midi keyboard/ controller would surely be appreciated!
ArnavS1 8 years ago
can someone give me the code the file is not compatible with my computer
Ricardo621 8 years ago
Hi, just made this in about 20 minutes – it's ace!
makeosaurus 8 years ago
if you used a on-off-on switch could you program it to do two or maybe three different scales or change it using a potentiometer???
makeosaurus 8 years ago
Could you use tin foil instead of the copper tape???
ramakrishna.kakani 9 years ago
sketch_apr23e.ino:807:5: error: expected unqualified-id before string constant
Error compiling.
how to get rid of this? plz
arastırmacı 9 years ago
sketch_mar25a.ino:781:5: error: expected unqualified-id before string constant
Why am I getting the error caused
blinkyblinky 9 years ago
Just the other day I was trying to compile some other code and found out that instead of just byte [variable name] I have to declare byte PROGMEM [variable name] in order to make it work; something similar may have happened with the Octosynth code so try an older build of Arduino such as Arduino 1.0.6 or prior.
DimitarD2 9 years ago
can someone help me?
i'm really bad with programing and i don't know what to do.
Arduino: 1.6.1 (Windows 7), Board: "Arduino Uno"
sketch_mar26c.ino:807:5: error: expected unqualified-id before string constant
Error compiling.
blinkyblinky 9 years ago
Arduino 1.6.0 and beyond has problems with older code because some variable declarations have changed; revert back to Arduino 1.0.6 or something older and it should work but not before arduino 1.0 though.
Just the other day I was trying to compile some other code and found out that instead of just byte [variable name] I have to declare byte PROGMEM [variable name] in order to make it work; something similar may have happened with the Octosynth code so try an older build of Arduino such as Arduino 1.0.6 or prior.
jo_mo 12 years ago
arastırmacı 9 years ago
would you please assign me the code of the project
blinkyblinky 12 years ago
amaria9 9 years ago
can the same code be used for lilypad?
saymowan 9 years ago
Nice project, simples and amazing! :-))
orangeisnon 9 years ago
First off, great project. I haven't read through all of it, but I get the idea.
Now, how feasible would it be to get this running using something besides the copper tape? Say, mmm, bananas?
Basically, could one use the same wiring and code from this and use bananas (like this: https://www.instructables.com/id/Bananaphone-A-Touch-Capacitance-Synth/)? People know me as the banana guy, and I think it would be fun to make a video of me playing a banana synth. I've got all the parts (and the nanners) but the linked 'able doesn't use Arduino.