« Translucence and Shadows | Main | My Slit Scan Project (Final) »

Midi Controller

My final project was my first attempt at creating something useful and perhaps artistic on its own accord. The process of construction was a difficult one because as I worked I attempted to give everything a semi-professional appearance. Earlier I had conceptualized a sort of wheel midi controller, however I decided to start somewhere that I knew I could complete given my understanding of arduino and its respective software. I have learned a lot about "depunking" the arduino through the course of this project. The excitement of compiling a program without an array of confusing error messages is incomparable to any enjoyment in life. There are a lot of little tips and tricks that should be published in a special "depunking" the arduino website.

Now I am comfortable enough with arduino that I can make the arduino bend to my will, and due to its processing origins I believe that some processing work might be in order for me as well. This whole project probably learned me a lot.

Back to Midi controller

I first experimented with methods of scaling potentiometer inputs however they follow an interesting curve of scaled values, and every pot. seemed a little bit different. Also when I was experimenting I found that the values seemed to fluctuate considerably, then I developed a method of recognizing a (deliberate) change in values but this too would have to be scaled, Interesting note I put this code aside when I built the 16 pot array and when I used digital outputs power the pots The fluctuations declined considerably. This is when I'm not sure whethe to be happy that it works better or to call the arduino a punk for wasting my time earlier.

Midi interfacing
Midi interfacing is extremely easy - download the midi library from arduino website, There is a midi arduino, but for just a simple midi output, its not completely neccessary.
I like midi communication because this is not limited to computers like the serial communication is. Also it seems more practical in the creation of music whether it be ambient installation, or more directed music.

Look at the diagram and know that what I'm telling you is true:
http://www.tigoe.net/pcomp/code/serial-communication/midi
midi-out-simple-ckt.jpg

The Controller itself was very interesting, I had coded and developed a Led digit display that was going to display the note for each pot. However I didn't get the chance to combine the codes in some holy matrimony? Also the device was clearly reacting to input, but it seemed to provided its own interpretation of this input.

The result: some weird sounds.Image025.jpg
Image023.jpg
Image024.jpg
Image022.jpg
pictures of the device^^^


bass.pde
code of the pot block
annie_log.pde
this one is code for my various experiments with pots and led display


the file below is an audio file of me using the block to make drums and a synth sound recording on reason.
pot block.mp3

My arduino guide

My arduino guide
(or how I learned to stop worrying and love the atomic bomb(arduino))
As you all may know the arduino is a punk and punks cannot be tolerated in the new media realm so here are some tips to depunk your sh-t:

1.Do not use digital ports 1 or 2 (unless you have to) because they can screw up your serial connection. They are the arduino serial communication ports by default. (good for midi)

2. I feel stupid when i do this and so that you too don't have to feel that feeling remember "=" will store a value, or change a variable. "==" is used for comparing values

3.When you add a library to your library I found that it wont work (punk) unless it is in a folder by the same name. If the folder does not exist, I guess you have to make it. I believe that this, in conjunction with arduino being a punk, accounts for 89% of "include" errors.

4.Those punk digital outputs leak. If digital write is == LOW it grounds. use diodes to stop the leaks.

5.

remember the semicolon ";"all hail the holy semicolon.
and "these" {}{}{{{{{}}}}}} check your "these"

6. although the arduino operates on 5v the digital output on these babies is 3.3 not strong enough to flip a 6v relay, like a good boy. However juice it up using 3 digital outputs more amps and then your relays are gonna go WEEEEEEEEEEEEE

7. I learned a lot about soldering and there are some keys, use the wet sponge to get the iron "sticky", pick up a blob and get it nice and shiny. Then do not use wire that's hard to bend, the bendier the easier it is to solder, and the better chance it will work correctly. Remember the heat shrink tubing

8. int (yourvariablehere) = blahblahblah
this value is weak and cannot be negative and cannot hold decimals like a punk.
I wasted a lot of time staring at the program questioning why the world hated me. Then i began to float

:float (yourvariables) and you don't have to go crazy and float everything but when your stuck.

9. Remember that arduino is a punk and punks need love sometimes too.