Files
Pi2ezoPlayer/player.c

44 lines
1.3 KiB
C

#include <wiringPi.h>
#include <softTone.h>
#include "player.h"
#include "accelerometer.h"
#include <stdio.h>
#define PIN 0 //Realer pin 11
int setupSoftTone(void) {
int returncode = 0;
returncode += wiringPiSetup(); //Braucht root Rechte
returncode += softToneCreate(PIN);
setupAccelerometer();
return returncode; // >0 --> error
}
void play(int *notes, int *durations, int songlength) {
int nDuration, pauseBetweenNotes, 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 / *(durations + thisNote);
softToneWrite(PIN, *(notes + thisNote));
delay(nDuration);
softToneWrite(PIN, 0);
/**
* Um die Noten voneinander zu unterscheiden,
* sollte eine Pause dazwischen sein.
* Diese wird später mit dem Beschleunigungssensor
* gesteuert. Vorerst sind es aber 30%
*/
//pauseBetweenNotes = nDuration * 1.30;
pauseBetweenNotes = nDuration * 1.30 - (getAccelData() * 38.0);
delay(pauseBetweenNotes);
// Sicherheitshalber Ton ausschalten
softToneWrite(PIN, 0);
}
}