For my MSc in Audio Technology I have been developing a digital instrument which I have dubbed the TrumChuk (Trumpet & Wii Nunchuk = TrumChuk). The concept for the instrument was to create a handheld digital instrument that utilises a Wii Nunchuk to modulate the audio signals generated.
Feel free to comment on my designs as they are very much still in the alpha stage of development and this is my first Arduino project, I have even discovered a few refinements that could go into later revisions which I will discuss at the end of my tutorial.
Step 1: The Circuit
The TrumChuk uses a relatively simple circuit that uses four momentary contact buttons (Three arcade style, one small button) with four 10k ohm resistors, an electret microphone, an Arduino Uno and a Wii Nunchuk plugged into the Nunchucky adapter board.
http://www.adafruit.com/products/345 - Nunchucky x 1
http://www.coolcomponents.co.uk/breakout-board-for... - Microphone x 1
http://www.arcadeworlduk.com/products/Sanwa-OBSN-2... - Arcade buttons x 3
Momentary push button x 1
Arduino Uno x 1
10k ohm resistors x 4
I have drawn (badly) a circuit schematic that hopefully you will be able to decipher and assemble the components in the correct way. Refer to the Arduino site (where I got a lot of my info from) if you wish to double check how to hook things up to an Arduino.
Step 2: The Casing/Instrument Body
I used 5mm thick balsa wood to prototype different shapes for the TrumChuk and this was the latest design I came up with. Feel free to make your own interpretation of the instrument body as I'm sure there are many other ways this could be assembled and that there are many other materials it could be constructed from.
Once the body was built I sanded all the hard edges off and made a mouth piece from a solid block of balsa with a hole and vent. I also left one side unglued to be used as an access to the electronics and held it in place with two small screws.
After it was all sanded and smooth, I spray painted it black and sanded a few more times with finer sandpaper followed by another coat of black and finally some spray on furniture lacquer for a shiny smooth finish. Again choice of colours and finish are up to you.
Step 3: The Final Assembly
Once the case is all ready you can drop all the electronics in and solder them up, following my schematics, ready for coding. My wiring isn't the neatest and I do like using electrical tape to hide any unsightly bits :S hopefully my next project will be tidier.
Step 4: Programming
Pure Data Extended - http://puredata.info/downloads/pd-extended
Arduino IDE - http://arduino.cc/en/Main/Software
All the source code is available here https://github.com/NuggyBum/TrumChuk and is free to use under the GNU GPLv3 Licence.
The TrumChuk uses Pure Data (aka Pd) an open source visual programming language to generate its audio and the code for the Arduino will need to be uploaded via the Arduino IDE.
Once you have installed both pieces of required software:
Upload TrumChukArduino.ino into the Arduino via the IDE.
To Play The TrumChuk:
Connect Wii Nunchuk to TrumChuk hardware.
Plug in USB cable to the computer from the TrumChuk.
Load TrumChukIO.pd, select the port number with the radio box and click connect (make sure pd is connected to /dev/tty.usbmodem1d11).
Turn DSP on by clicking on the button labeled DSP and then click "Generate New Wave", the outWave array should update with a waveform.
Choose between the TrumChuk mapping or the Trumpet mapping.
**button 1 is the closest button to the player, button 4 is the thumb button**
A = 1 0 0 0, A# = 1 0 0 4, B = 0 2 0 0, C = 0 0 3 0, C# = 0 0 3 4, D = 1 2 0 0, D# = 1 2 0 4, E = 1 0 3 0, F = 0 2 3 0, F# 0 2 3 4, G = 1 2 3 0, G# = 1 2 3 4
A = 1 2 0 4, A# = 1 0 0 4, B = 0 2 0 4, C = 0 0 0 0, C# = 1 2 3 0, D = 1 0 3 0, D# = 0 2 3 0, E = 1 2 0 0, F = 1 0 0 0, F# 0 2 0 0, G = 0 0 0 4, G# = 0 2 3 4
Step 5: Revisions
Since building the TrumChuk I have noticed some limitations, mainly regarding the microphone as a means of measuring air flow. After doing some research it would seem that an air pressure sensor may work better for this project and you may consider experimenting with one as an alternative.
If you have any questions or ideas regarding this project, feel free to email me at email@example.com