float frequency;
void setup() {
Serial.begin(9600);
}
void loop() {
frequency = 452.89295;
//452.89373 browser A4 grenze
frequency = 24652;
Serial.println(pitch(frequency));
delay(2000);
}
String pitch(float frequency) {
static const String pitch1[] = {
"G#", "A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G"
};
static const String pitch2[] = {
"Ab", "A", "Bb", "B", "C", "Db", "D", "Eb", "E", "F", "Gb", "G"
};
float n = 49 + 12 * log(frequency / 440.0) / log(2);
if (n >= 0) {
float center = n - int(n + 0.5);
Serial.println("Abweichung: " + String(center * 100, 8) + " %");
}
if (n < 0) {
return pitch1[11 + (int(n + 0.5) % 12)] + String((int(n + 0.5) - 4) / 12);
} else {
return pitch1[int(n + 0.5) % 12] + String((int(n + 0.5) + 8) / 12);
}
}