Instrument Two (2)
An idea for a basic instrument for kids. It is a cube with 6 different coloured sides with a light.
- Basic knock sensors sown up into some type of box or similar for kids
- Drum pads idea - http://code.google.com/p/ardrumo/
- Uses piezo speaker as a knock sensor (a simple microphone)
- Jammed between some mylar and foam
- Through an Arduion http://www.arduino.cc/
- Output to Piezo speaker
- Using the PWM (Pulse width modulated) output of the Arduion
- http://www.arduino.cc/en/Tutorial/PlayMelody
- Output to LEDs
Need to get:
- Prototype / Bread board and wire
- Power connector
- Piezos - 8 (6 inputs, 1 output, 1 for broken experiments)
Have already:
- LEDs
- Resistors
- Diodes
Status / Update
Basic code with Knock to volume and LED is done.
The basic play code is working, but the music is terrible. Using no new hardware I am going to be stuck with some pretty simple output.
The first full coloured side knock sensor is built and yet to be tested.
Programs
The idea is to be able to replace the program occasionally with something new as Teha grows.
Hit and Watch
The first and basic is hit and watch. Each side that is hit plays a sound at the volume / pitch hit (could be a good variation) and a light is played on that panel.
Teha Says
Like the old Simon game - where a song will play on a few sides and then you have to play it back at the same sides, gets faster and harder.
Sequencer
Idea copied straight from Make Magazine 2008 (March I think) of having a sequence (e.g. 8 beats) played in a cycle, where the note you hit at the beat time is remembered and played next time. So you can make basic sequences.
More Hardware
Some simple additions like a PIR (Passive infra-red motion sensor) can help it be more interactive.
Example code for reading Knock sensors
/*
* Ardrumo sketch
*
* Use with the Ardrumo software here:
* http://code.google.com/p/ardrumo/
* This is designed to let an Arduino act as a drum machine
* in GarageBand (sorry, Mac OS X only).
*/
#define LEDPIN 13 // status LED pin
#define PIEZOTHRESHOLD 5 // analog threshold for piezo sensing
#define PADNUM 6 // number of pads
int val;
void setup() {
pinMode(LEDPIN, OUTPUT);
Serial.begin(57600); // set serial output rate
}
void loop() {
// Loop through each piezo and send data
// on the serial output if the force exceeds
// the piezo threshold
for(int i = 0; i < PADNUM; i++) {
val = analogRead(i);
if( val >= PIEZOTHRESHOLD ) {
digitalWrite(LEDPIN,HIGH); // indicate we're sending MIDI data
Serial.print(i);
Serial.print(",");
Serial.print(val);
Serial.println();
digitalWrite(LEDPIN,LOW);
}
}
}
