diff --git a/main.c b/main.c index 306db4e..b88c03f 100644 --- a/main.c +++ b/main.c @@ -1,7 +1,7 @@ #include #include #include "player.h" - +#include "song.h" void shutdown(void) { //Diese Methode wird von beim beenden aufgerufen. @@ -15,6 +15,10 @@ int main(void) { exit(0); } - playIntro(); + //Intro + play(intro, noteDurations, introlength); + + //Main theme + play(melody, melodyNoteDurations, songlength); return 0; } diff --git a/player.c b/player.c index 3a8d78a..94b2bba 100644 --- a/player.c +++ b/player.c @@ -1,75 +1,9 @@ #include #include #include "player.h" -#include "pitches.h" #define PIN 0 //Realer pin 11 -const unsigned int introlength = 25; - - -int intro[] = { - //intro - NOTE_DS5, - NOTE_E5, - NOTE_FS5, - NOTE_B5, - NOTE_DS5, - NOTE_E5, - NOTE_FS5, - NOTE_B5, - NOTE_CS6, - NOTE_DS6, - NOTE_CS6, - NOTE_AS5, - NOTE_B5, - NOTE_FS5, - NOTE_DS5, - NOTE_E5, - NOTE_FS5, - NOTE_B5, - NOTE_CS6, - NOTE_AS5, - NOTE_B5, - NOTE_CS6, - NOTE_E6, - NOTE_DS6, - NOTE_E6, - NOTE_B5, - - }; - -// Noten Dauern: 4 --> Viertel Note, 8 --> Achtel Note usw. -int noteDurations[] = { - 16, - 16, - 8, - 8, - 16, - 16, - 16, - 16, - 16, - 16, - 16, - 16, - 8, //13 - 8, - 16, - 16, - 8, - 8, - 16, - 16, - 16, - 16, - 16, - 16, - 16, - 16 //25 intro - }; - - int setupSoftTone(void) { int returncode = 0; @@ -78,15 +12,15 @@ int setupSoftTone(void) { return returncode; // >0 --> error } -void playIntro(void) { +void play(int *notes, int *durations, int songlength) { int nDuration, pauseBetweenNotes, thisNote; - for (thisNote = 0; thisNote < introlength; thisNote++) { + for (thisNote = 0; thisNote < songlength; thisNote++) { /** * Um die Zeit der Note zu berechnen muss eine Sekunde durch * die Laenge der Note geteilt werden. */ - nDuration = 1000 / noteDurations[thisNote]; - softToneWrite(PIN, intro[thisNote]); + nDuration = 1000 / *(durations + thisNote); + softToneWrite(PIN, *(notes + thisNote)); delay(nDuration); softToneWrite(PIN, 0); /** @@ -99,5 +33,5 @@ void playIntro(void) { delay(pauseBetweenNotes); // Sicherheitshalber Ton ausschalten softToneWrite(PIN, 0); - } + } } diff --git a/player.h b/player.h index dc34d71..c7af693 100644 --- a/player.h +++ b/player.h @@ -1,2 +1,2 @@ int setupSoftTone(void); -void playIntro(void); +void play(int *notes, int *durations, int songlength); diff --git a/song.h b/song.h new file mode 100644 index 0000000..e6cb0c9 --- /dev/null +++ b/song.h @@ -0,0 +1,513 @@ +#include "pitches.h" +const unsigned int introlength = 25; +const unsigned int songlength = 216; + +int intro[] = { + //intro + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B5, + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B5, + NOTE_CS6, + NOTE_DS6, + NOTE_CS6, + NOTE_AS5, + NOTE_B5, + NOTE_FS5, + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B5, + NOTE_CS6, + NOTE_AS5, + NOTE_B5, + NOTE_CS6, + NOTE_E6, + NOTE_DS6, + NOTE_E6, + NOTE_B5, + + }; + +// Noten Dauern: 4 --> Viertel Note, 8 --> Achtel Note usw. +int noteDurations[] = { + 16, + 16, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, //13 + 8, + 16, + 16, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16 //25 intro + }; + + + int melody[] = { + //A + NOTE_FS5, + NOTE_GS5, + NOTE_DS5, + NOTE_DS5, + REST, + NOTE_B4, + NOTE_D5, + NOTE_CS5, + NOTE_B4, + REST, + NOTE_B4, + NOTE_CS5, + NOTE_D5, + NOTE_D5, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_FS5, + NOTE_GS5, + NOTE_DS5, + NOTE_FS5, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_CS5, + NOTE_B4, + NOTE_DS5, + NOTE_FS5, + NOTE_GS5, + NOTE_DS5, + NOTE_FS5, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_D5, + NOTE_DS5, + NOTE_D5, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_D5, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_FS5, + NOTE_CS5, + NOTE_DS5, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_FS5, + NOTE_GS5, + NOTE_DS5, + NOTE_DS5, + REST, + NOTE_B4, + NOTE_D5, + NOTE_CS5, + NOTE_B4, + REST, + NOTE_B4, + NOTE_CS5, + NOTE_D5, + NOTE_D5, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_FS5, + NOTE_GS5, + NOTE_DS5, + NOTE_FS5, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_CS5, + NOTE_B4, + NOTE_DS5, + NOTE_FS5, + NOTE_GS5, + NOTE_DS5, + NOTE_FS5, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_D5, + NOTE_DS5, + NOTE_D5, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_D5, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_FS5, + NOTE_CS5, + NOTE_DS5, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + NOTE_B4, + NOTE_CS5, + //end of loop + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_E5, + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_FS4, + NOTE_E5, + NOTE_DS5, + NOTE_CS5, + NOTE_B4, + NOTE_FS4, + NOTE_DS4, + NOTE_E4, + NOTE_FS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_FS4, + // + NOTE_B4, + NOTE_B4, + NOTE_AS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_E4, + NOTE_E5, + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B4, + NOTE_AS4, + // + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_E5, + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_FS4, + NOTE_E5, + NOTE_DS5, + NOTE_CS5, + NOTE_B4, + NOTE_FS4, + NOTE_DS4, + NOTE_E4, + NOTE_FS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_B4, + NOTE_CS5, + NOTE_DS5, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_FS4, + NOTE_B4, + NOTE_B4, + NOTE_AS4, + NOTE_B4, + NOTE_FS4, + NOTE_GS4, + NOTE_B4, + NOTE_E5, + NOTE_DS5, + NOTE_E5, + NOTE_FS5, + NOTE_B4, + NOTE_CS5 + + }; + + int melodyNoteDurations[] = { + //a + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 8, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 8, + // + 8, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + // + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + // + 8, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 16, + 16, + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + // + 8, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 8, + 8 + };