/**
*/
int speakerOut = 9; int ledPin = 13; int statePin = LOW; int i; float midiNote; int octava = 0; int degree = 0; // harmonic minor int scale[7] = {0, 2, 3, 5, 7, 8, 11}; float freq; float timeHigh;
/** setup */ void setup() { pinMode(ledPin, OUTPUT); pinMode(speakerOut, OUTPUT); }
/** infinite loop */ void loop() { digitalWrite(speakerOut, LOW);
// tempo statePin = !statePin; digitalWrite(ledPin, statePin);
// choose a note degree++; if (octava == 1 && degree == 7) { degree = 0; octava = 0; } else if (degree == 7) { octava = 1; degree = 0; } midiNote = (octava * 12) + 48 + scale[degree];
// find the pulse settings // MTOF FROM PD freq = (8.17579891564 * exp(.0577622650 * midiNote)); // mtof timeHigh = 1/(2 * freq); period = timeHigh * 2;
// sings a note for (i = 0; i < freq; i++) { digitalWrite(speakerOut, HIGH); delayMicroseconds(timeHigh); digitalWrite(speakerOut, LOW); delayMicroseconds(timeHigh); } delay(1000); }