You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.1 KiB
C++
76 lines
1.1 KiB
C++
#include "pitches.h"
|
|
|
|
#define KNOB1 (0)
|
|
#define KNOB2 (1)
|
|
#define KNOB3 (2)
|
|
|
|
#define OUT 11
|
|
|
|
|
|
int melody[] = {
|
|
NOTE_C4,
|
|
|
|
NOTE_G5,
|
|
NOTE_A4,
|
|
NOTE_B4,
|
|
NOTE_B4,
|
|
NOTE_A5,
|
|
NOTE_B4,
|
|
NOTE_A5,
|
|
NOTE_A4,
|
|
NOTE_G5,
|
|
|
|
NOTE_G4,
|
|
NOTE_F5,
|
|
NOTE_G4,
|
|
NOTE_A4,
|
|
NOTE_G5,
|
|
NOTE_G4,
|
|
NOTE_G5,
|
|
NOTE_G4,
|
|
};
|
|
|
|
int noteDurations[] = {
|
|
1,
|
|
8, 8, 4, 4, 8, 8, 8, 8, 4,
|
|
4, 4, 4, 4, 4, 8, 8, 8
|
|
};
|
|
|
|
int NOTE;
|
|
|
|
int X;
|
|
int Y;
|
|
int Z;
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
pinMode(OUT, OUTPUT);
|
|
|
|
}
|
|
|
|
|
|
|
|
void loop() {
|
|
|
|
Z = analogRead KNOB1;
|
|
Y = analogRead KNOB2;
|
|
X = analogRead KNOB3;
|
|
|
|
for (int NOTE = 0; NOTE<18; NOTE++) {
|
|
int duration = 1000 / noteDurations[NOTE];
|
|
tone (11, melody[NOTE]+X<<Z/60, noteDurations);
|
|
|
|
int pause = Y;
|
|
delay(pause);
|
|
|
|
noTone(11);
|
|
Serial.print(NOTE);
|
|
Serial.print("\t");
|
|
Serial.print(melody[NOTE]);
|
|
Serial.print("\t");
|
|
Serial.print(noteDurations[NOTE]);
|
|
Serial.print("\n");
|
|
|
|
}
|
|
}
|