true random analog musical instrument

Hi, just finished my latest instrument, it implements the TrueRandom libraryhttp://code.google.com/p/tinkerit/wiki/TrueRandom to generate true random decisions on notes, silences, and force. it uses solenoids and transistors to drive wood hammers to strike the glass.

below is the code.

//Sven Steinbauer
//code to drive solenoids in random musical instrument
//arduino has to be to be USB-powered
#include <TrueRandom.h>

unsigned long pm1=0;
int in1=120; ///time to turn on the solenoid (don't change)
int pin1=3; //pin that the transistor that drives the solenoid is attached to

unsigned long pm2=0;
int in2=120;
int pin2=5;

unsigned long pm3=0;
int in3=100;
int pin3=6;

unsigned long pm4=0;
int in4=120;
int pin4=9;

unsigned long pm5=0;
int in5=120;
int pin5=10;

unsigned long pm6=0;
int in6=120;
int pin6=11;

void setup() {
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
}

void loop() {

int a=TrueRandom.random(65,150); ///////random force to hit, min, max (max250)
unsigned long aa=TrueRandom.random(); ///random interval

int b=TrueRandom.random(65,100);
unsigned long bb=TrueRandom.random();

int c=TrueRandom.random(65,180);
unsigned long cc=TrueRandom.random();

int d=TrueRandom.random(65,170);
unsigned long dd=TrueRandom.random();

int e=TrueRandom.random(80,170);
unsigned long ee=TrueRandom.random();

int f=TrueRandom.random(65,160);
unsigned long ff=TrueRandom.random();

unsigned long aaa=aa/800; //////////adjust timing here
unsigned long bbb=bb/800;
unsigned long ccc=cc/800;
unsigned long ddd=dd/800;
unsigned long eee=ee/800;
unsigned long fff=ff/800;

if(millis()-pm1<in1){
analogWrite(pin1,a);
}
if(millis()-pm1>in1){
digitalWrite(pin1, LOW);
}
if(millis()-pm1>aaa){
pm1=millis();
}

if(millis()-pm2<in2){
analogWrite(pin2,b);
}
if(millis()-pm2>in2){
digitalWrite(pin2, LOW);
}
if(millis()-pm2>bbb){
pm2=millis();
}

if(millis()-pm3<in3){
analogWrite(pin3,c);
}
if(millis()-pm3>in3){
digitalWrite(pin3, LOW);
}
if(millis()-pm3>ccc){
pm3=millis();
}

if(millis()-pm4<in4){
analogWrite(pin4,d);
}
if(millis()-pm4>in4){
digitalWrite(pin4, LOW);
}
if(millis()-pm4>ddd){
pm4=millis();
}

if(millis()-pm5<in5){
analogWrite(pin5,e);
}
if(millis()-pm5>in5){
digitalWrite(pin5, LOW);
}
if(millis()-pm5>eee){
pm5=millis();
}

if(millis()-pm6<in6){
analogWrite(pin6,f);
}
if(millis()-pm6>in6){
digitalWrite(pin6, LOW);
}
if(millis()-pm6>fff){
pm6=millis();
}

}

I like the look of that TrueRandom library. Did you write it? :slight_smile:

Mowcius