Skip to content

Instantly share code, notes, and snippets.

@argelius
Created May 19, 2014 21:24
Show Gist options
  • Save argelius/e8b0008567b388b98c4f to your computer and use it in GitHub Desktop.
Save argelius/e8b0008567b388b98c4f to your computer and use it in GitHub Desktop.
Matoyas cavern from FFI on Arduino
/*
* Plays the melody "Matoyas cavern" from Final Fantasy I with Arduino.
*
* Connect two pins to a speaker with ~100ohm resistors and listen.
*/
#include <Tone.h>
Tone tone1, tone2;
int melody[] = {
NOTE_B4, NOTE_D5, NOTE_FS5, NOTE_B4, NOTE_G5, NOTE_FS5, NOTE_E5,
NOTE_D5, NOTE_E5, NOTE_D5, NOTE_CS5,
NOTE_D5, NOTE_FS5, NOTE_A5, NOTE_D5, NOTE_B5, NOTE_A5, NOTE_G5,
NOTE_FS5, NOTE_G5, NOTE_FS5, NOTE_E5, NOTE_FS5, NOTE_G5,
NOTE_A5, NOTE_CS5, NOTE_E5,
NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_B4, NOTE_G5, NOTE_A5,
NOTE_B5,NOTE_D5, NOTE_G5,
NOTE_FS5, NOTE_G5, NOTE_FS5, NOTE_E5, NOTE_A5, NOTE_B5,
NOTE_CS6, NOTE_A5, NOTE_B5, NOTE_CS6,
NOTE_E6, NOTE_D6, NOTE_CS6, NOTE_D6, NOTE_B5, NOTE_A5, NOTE_G5, NOTE_FS5,
NOTE_E5, NOTE_C5, NOTE_D5, NOTE_E5,
NOTE_D5, NOTE_CS5, NOTE_A4,
NOTE_FS5, NOTE_D4, NOTE_G5, NOTE_D4,
NOTE_A4, NOTE_A4, NOTE_D4, NOTE_A4, NOTE_G4, NOTE_E4, NOTE_CS5, NOTE_B4, NOTE_CS5,
NOTE_FS4, NOTE_D4, NOTE_G4, NOTE_D4,
NOTE_A4, NOTE_A4, NOTE_D4, NOTE_A4, NOTE_G4, NOTE_E4, NOTE_E5, NOTE_D5, NOTE_E5,
NOTE_FS4, NOTE_D4, NOTE_G4, NOTE_D4,
NOTE_A4, NOTE_A4, NOTE_D4, NOTE_A4, NOTE_G4, NOTE_E5, NOTE_G5, NOTE_FS5, NOTE_G5,
NOTE_FS5, NOTE_D5, NOTE_G5, NOTE_D5,
NOTE_A5, NOTE_A5, NOTE_D5, NOTE_FS5, NOTE_E5, NOTE_D5, NOTE_CS5, NOTE_E5, NOTE_D5, NOTE_CS5, NOTE_AS4,
};
int melody2[] = {
0,0,0,0,0,0,0,
0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,
0,0,0,
0,0,0,0,0,0,
0,0,0,
0,0,0,0.0,0,0,
0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,
0,0,0,
NOTE_D5, 0, 0, 0,
NOTE_D5, 0, 0, 0, 0, NOTE_D5, 0, 0, 0,
NOTE_D5, 0, 0, 0,
NOTE_D5, 0, 0, 0, 0, NOTE_FS5, 0, 0, 0,
NOTE_FS5, 0, 0, 0,
NOTE_FS5, 0, 0, 0, 0, NOTE_A5, 0, 0, 0,
NOTE_A5, 0, 0, 0,
0,0,0,0,0,0,0,0,0,0,0,0,
};
double duration[] = {
1,1,1,1,2,1,1,
2,1,1,4,
1,1,1,1,2,1,1,
2,1,1,2,1,1,
4,2,2,
0.5,0.5,0.5,4.5,1,1,
4,2,2,
0.5,0.5,0.5,4.5,1,1,
5,1,1,1,
0.5,0.5,0.5,0.5,3,1,1,1,
5,1,1,1,
4,2,2,
2,2,2,2,
1,1,1,1,2,0.5,0.5,0.5,0.5,
2,2,2,2,
1,1,1,1,2,0.5,0.5,0.5,0.5,
2,2,2,2,
1,1,1,1,2,0.5,0.5,0.5,0.5,
2,2,2,2,
1,1,1,1,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,
};
int DT = 275;
void setup()
{
tone1.begin(5);
tone2.begin(7);
}
void loop()
{
int i;
for(i=0; i<sizeof(melody)/sizeof(int); i++) {
tone1.play(melody[i], DT*duration[i]);
tone2.play(melody2[i], DT*duration[i]);
delay(DT*duration[i]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment