//Sacrifices were made
#include "sp.h" ///same as pitches.h
#include
// notes in the melody:
int melody[] = {
//NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_DS7, NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_FS6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_CS7, NOTE_E7, NOTE_DS7, NOTE_E7, NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0, NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0, NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_AS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_CS7, NOTE_DS3, NOTE_E3
NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_DS7, NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_FS6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_CS7, NOTE_E7, NOTE_DS7, NOTE_E7, NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0, NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0, NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6, NOTE_D6, NOTE_CS6, NOTE_B0//, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_AS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_CS7, NOTE_DS3, NOTE_E3
//NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_DS7, NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_FS6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_CS7, NOTE_E7, NOTE_DS7, NOTE_E7, NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0, NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0, NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6, NOTE_D6, NOTE_CS6, NOTE_B0//, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_AS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_CS7, NOTE_DS3, NOTE_E3
};
void comments(){
Serial.println("Comments in code lol");
//sharp frq formula: NS=N+(i*2)+(i-1)+1 (i=itteration starting at 1) its close, but not quiet right.
//58=55+(1*2)+(1-1)+1 == 58 //cool it works lol
//117=110+(2*2)+(2-1)+1 ==116 !=117 hmmm
//233=220+(3*2)+(3-1)+1 ==229 !=233
//durration Note (itteration?) Number pause (looks like)
//ok I typoed transcribing set NOTE_Note0==NOTE_Note1 where not otherwise defined
//now to underp the array see line abouve
// char _NYANLIB_RTTTL_SONG_NYAN[] ="nyan cat:d=4,o=4,b=120:
// NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_DS6,
// NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_DS7,
// NOTE_CS7, NOTE_AS6, NOTE_B6, NOTE_FS6, NOTE_DS6,
// NOTE_E6, NOTE_FS6, NOTE_B6, NOTE_CS7, NOTE_AS6,
// NOTE_B6, NOTE_CS7, NOTE_E7, NOTE_DS7, NOTE_E7,
// NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0,
// NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6,
// NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_DS6,
// NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6,
// NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6,
// NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0,
// NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0,
// NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_FS6,
// NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_CS7, NOTE_B7,
// NOTE_CS7, NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_DS6,0,NOTE_B0,
// NOTE_D6, NOTE_CS6, NOTE_B0,0,NOTE_B7, NOTE_CS7, NOTE_D6,
// NOTE_D6, NOTE_CS6, NOTE_B0, NOTE_CS6, NOTE_DS6,
// NOTE_FS6, NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6,
// NOTE_DS6, NOTE_B0, NOTE_CS6, NOTE_B0, NOTE_DS6, NOTE_FS6,
// NOTE_GS6, NOTE_DS6, NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_B0,
// NOTE_D6, NOTE_DS6, NOTE_D6, NOTE_CS6, NOTE_B0,
// NOTE_CS6, NOTE_D6, NOTE_B0, NOTE_CS6, NOTE_DS6,
// NOTE_FS6, NOTE_CS6, NOTE_DS6, NOTE_CS6, NOTE_B0,
// NOTE_CS7, NOTE_B7, NOTE_CS7, NOTE_B7, NOTE_FS1,
// NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0,
// NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6,
// NOTE_FS6, NOTE_B7, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1,
// NOTE_E6, NOTE_DS6, NOTE_CS6, NOTE_B0, NOTE_FS1,
// NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7,
// NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0,
// NOTE_FS1, NOTE_GS1, NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0,
// NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6,
// NOTE_FS6, NOTE_B7, NOTE_AS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B7,
// NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_CS6, NOTE_DS6, NOTE_B0,
// NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_FS6, NOTE_B7, NOTE_B7,
// NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_FS1, NOTE_E6, NOTE_DS6,
// NOTE_CS6, NOTE_B0, NOTE_FS1, NOTE_DS1, NOTE_E0, NOTE_FS1, NOTE_B7,
// NOTE_FS1, NOTE_GS1, NOTE_B7, NOTE_FS1, NOTE_GS1, NOTE_B0, NOTE_B0,
// NOTE_CS6, NOTE_DS6, NOTE_B0, NOTE_FS1, NOTE_GS1,
// NOTE_FS1, NOTE_B7, NOTE_B0, NOTE_AS1, NOTE_B0, NOTE_FS1,
// NOTE_GS1, NOTE_B0, NOTE_E6, NOTE_DS6, NOTE_E6,
// NOTE_FS6, NOTE_B7, NOTE_CS7, NOTE_DS3, NOTE_E3
}
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
//needs work
4, 8, 8, 4, 4, 4, 4, 4
// 2, 10, 10, 5, 3, 5, 3, 7
};
void nyanclear(){
Serial.write(12); //ascii form feed a line breaking character doesnt do what I want it to in the arduino terminal, but it may in the linux term
}
void nyan(){
for (int thisNote = 0; thisNote < 8; thisNote++) {
// to calculate the note duration, take one second divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000*.6 / noteDurations[thisNote];
tone(8, melody[thisNote], noteDuration);
// to distinguish the notes, set a minimum time between them.
// the note's duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.40;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(8);
}
}
void setup() {
Serial.begin(9600);
// nyanyan(); // :( exceeds memory... 3 frames and all the notes FFS
//maybe put the lines in an array
String nyanString= " o * o +";
nyanString += "+ o + * \n";
nyanString += " + \n";
nyanString += "o + + + \n";
nyanString += " o o * O \n";
nyanString += ".~~~.___.~~~ ,-------. o \n";
nyanString += "~~.___.~~~.__| /\\_/\\ \n";
nyanString += ".~~~.___.~~~ |___( ^ .^) + + \n";
nyanString += "~~.___.~~~.___/ / / /` o\n";
nyanString += " o o + o \n";
nyanString += "+ * \n";
nyanString += " o o o + \n";
nyanString += "o + \n";
nyanString += " + 0 o * o\n";
Serial.println(nyanString);
}
void loop() {
nyan();
}