Tuesday, 24 January 2012

Guitar Update Number One Point Five

No video today, but I wanted to put it on the record that progress is being made in the following ways:
  • I'm now using the actual microcontroller (circuit board) that will be in the guitar, the Arduino Mega 2560. This has a lot more inputs and outputs than the Arduino Uno, which I was using before.
  • The menu system is now pretty much fully functional, allowing me to route any sensor to any MIDI parameter and adjust settings such as the minimum and maximum values a sensor can transmit.
  • I can now connect three MIDI devices simultaneously (I have been having tremendous fun controlling my synth and sampler at the same time).
  • I have tracked down a large sheet of transparent plastic which will be cut down to size and used as a giant scratch-plate to mount the sensors (and cover the large hole in the guitar).
A new video will make its way to this corner of cyberspace as soon as I've made enough progress that any new footage is easily distinguishable from previous stuff.

Sunday, 8 January 2012

Guitar Update Number One

The recent lack of updates is due to the fact that I spent Christmas at home, separated from my toys. What I did have at home was my hollowed-out electric guitar and a pencil, so I spent a good chunk of the festive period in front of the fire, doodling things like "infra-red sensor goes here" on the guitar's exposed wood. I also built up a much clearer idea of how the circuitry was going to function, and my last few nights (I'm now back in Oxford) have been spent trying to realise that idea. Here is the result:

Technical info: Hardware-wise, this is similar to my previous posts, in that I am routing sensors through the Arduino and converting their signals into MIDI data. The difference here is in the programming; I have created individual classes such as "MidiDevice" (which holds data about a particular device such as the MicroKorg or my Zoom sampler), "MidiParam" (which holds data about a particular parameter on a device, such as pitch bend, filter cut-off or volume) and "Sensor" (which is a generalised class for all the types of sensor which I might end up using in the guitar). Constructing the code in this way allows massive flexibility. I want this guitar to be very versatile and to have an intuitive and easy way to adjust each sensor's settings without having to plug it into my computer and re-compile the code. I'm planning to install an SD card slot on the guitar to allow me to save any adjustments I make.

Also, the display on the final guitar won't show the sensor values every time they change - that was just to demonstrate that I have information about each sensor (well, its name, anyway) stored in the program. Constantly updating the display increases latency which, as we all know, is inversely proportional to one's ability to rock.

Thursday, 5 January 2012

A Journey of 1,000 Miles Must Begin With an Easily Navigable Menu System

Nothing intrinsically musical to report on, I'm afraid. However, I have worked out how to wire up the LCD display that I'm going to install in the hollowed-out guitar that was seen in an earlier post. This will be twinned with a tiny joystick to allow for adjustments of the guitar's electronic innards.

Technical Stuff: The display requires 7 inputs. I've used a shift register so that I only need to take up three of the Arduino's outputs. Thanks to the Arduino Playground site for the code and schematics.

Other things I'm working on and may share in the coming weeks:

  • Controlling the Gakken SX-150 analogue synth via the Arduino
  • MIDI interface for Android phones/tablets
  • Colour-sensitive webcam-based MIDI controller for Windows
  • More details on THE GUITAR