Kompletter Nyan cat Song
This commit is contained in:
8
main.c
8
main.c
@@ -1,7 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#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;
|
||||
}
|
||||
|
76
player.c
76
player.c
@@ -1,75 +1,9 @@
|
||||
#include <wiringPi.h>
|
||||
#include <softTone.h>
|
||||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2
player.h
2
player.h
@@ -1,2 +1,2 @@
|
||||
int setupSoftTone(void);
|
||||
void playIntro(void);
|
||||
void play(int *notes, int *durations, int songlength);
|
||||
|
513
song.h
Normal file
513
song.h
Normal file
@@ -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
|
||||
};
|
Reference in New Issue
Block a user