Arduino Piggyback Synthesizer Manual
The Arduino should at least support 5V PWM and have 3 timers
Verified Arduino models which are compatible:
Arduino Uno rev3
Verified Arduino IDE versions:
Hooking up the hardware
The first step is to connect the piggy PCB to the Arduino.
On the side of the two potentiometers there are two pins that are left over (stick out).
On this side there there is a big gap between the headers.
On the side of the trimpot (the blue thingy) there are no pins left over, but on the right side are are two pins not present.
On this side there there is a small gap between the headers.
View from the side of the midi ports:
Now hook up audio (mini jack marked “X1”). The mini jack is a line-out, NOT a headphone connector.
..and connect MIDI in (middle connector marked “X2”):
Hook up USB to the arduino.
A fully hooked up piggy+arduino (even including 9V external power supply) look like this:
- Download and install the firmware.
- Make sure you install the libraries to your Arduino IDE’s library directory.
This should be Documents/Arduino/libraries or whatever is the convention on your OS’ version of the Arduino IDE.
- Use the Arduino IDE to import the new libraries : under Sketch->Add library..
Note: older firmwares need less libraries to be installed.
- Now load the sketch
This is a stand-alone tracker, no MIDI involved yet.
It’s good for testing.
- Now upload the sketch to the arduino and after a few seconds you should hear a bassline.
If that doesn’t sound anywhere near the example, it might be that a pin is not pushed in far enough.. try pushing down a bit harder.
- When it does sound correct, then the
piggy_midvsketch can be tried.
Now you should be able to send midi notes and pitch bend to control your piggy.
By default, the Piggy responds to MIDI channel 1, but this can be easily be modified by changing a single constant
midi_chan in the
piggy_midv source code.
ADSR and modulation are supported by the hardware and firmware and can be controlled by MIDI control change packets.
|Piggy command||MIDI control number (hex, dec)||Value information|
||0: no modulation, 100: full modulation, >100: over modulation|
|Relative modulation frequency||
||127 = 0.99 * note pitch, 64 = 0.5*note pitch, 0 = off|
|ADSR attack time||
||0=0.0s .. 127=4.0s|
|ADSR decay time*||
||0=0.0s .. 127=4.0s|
|ADSR sustain level*||
||0:Mute .. 127:Max|
|ADSR release time||
||0=0.0s .. 127=4.0s|
*) Firmware 1.2 onwards
Use the modulation wheel or stick to control modulation depth.
FM is a pretty brutal affair and adds a lot of depth to the sound, and can also be used to make oldschool telephone like sounds, and go a bit off-key, if you are into that
sort of thing. Due to its nature, FM makes huge demands on the stability of the oscillators.
You can tune the VCO ever so slightly for nice effects.
The Piggy’s MIDI thru (the DIN-5 port most to the side marked “X3”) may be used to daisy chain multiple Piggies together or attach other equipment, like (recommended) a drum machine.
Arduino models which seem to have problems:
Leonardo (no MIDI, but seems fine otherwise)
If you should think your piggy sings out of tune you can adjust the blue trimpot with a small screwdriver.
By default it should not be the case.
It’s factory calibrated to have MIDI note 36 (C2) at 65.41 Hz and the right components were selected to get the VCO as temperature stable as possible.
But perhaps in very cold environments (near freezing) it could be very slightly out of tune.
In this case you could adjust the trimpot slightly to the left (anti-clockwise).
Recording and noise reduction
Piggy is an analogue synth.. and all analogue devices have an intrinsic and characteristic noise. But typically, no digital noise (transmitted from the arduino or from other digital devices in the direct vicinity) should be heard. Nor should any 50 or 60 Hz mains hum should be heard. Digital noise can be avoided in two ways:
- If USB power source (ie. your laptop or PC) is noisy, disconnect and use a good 9V or 12V AC/DC adapter! Take care that the adapter should be good, ie. not carry any mains hum!
- Use extra headers between Piggy and Arduino. As displayed below.. Or in the worst case disconnect them and hook them up with patch cables instead! Pins to connect: DIGITAL 2,3,5,6,11, GND, 5V. As displayed below..
If everything worked out only very slight white noise should be heard. This is a result from the current running through resistors (so-called thermal noise)… and of course the resonance resulting from the filter 😉
Good luck and happy freaking!