Moin,
wir hatten ja bereits das Thema Loudness im Projekt ad acta gelegt, habt ihr das überlesen?
Ich arbeite gerade an einem anderen Problem.
Eigentlich ist die digitale Anzeige fertig zum Test, blöd nur, dass die Anzeige nicht das liefert, was erwartet wird.
Wir haben ein 16 Bit Audiosignal, dass also integer ausgedrückt den Bereich -32767 bis 32767 einnehmen kann.
Das entspricht einem Dynamikumfang von 96dB.
Die Audiolib des Teensy gibt diesen Bereich aufbereitet als RMS im Bereich 0 bis 1. in dieser Form zurück:
Code:
float meansq = sum / (num * AUDIO_BLOCK_SAMPLES);
return sqrtf(meansqr) / 32767.;
Danach logarithmiere ich den Wert mit:
Code:
20 * log(wert / .775)
und erhalte den dBu Wert, der dann weiter skaliert zur Skala passen sollte.
Leider komme ich nur bis 2.2dB statt der benötigten 5dB max.
Aufgefallen ist mir, dass der bei der Audiolib angegebene Bereich bis 1. nicht erreicht wird, auch nicht, wenn am Eingang 1.377V Sinus (RMS) eingespeist werden. Die 1.377V RMS entsprechen laut der Formeln von Herrn Sengpiel 5dBu.
Einen Fehler beim Signal schließe ich aus, denn wenn mein Sinusgenerator auf 775mV Volt RMS eingestellt ist (nicht PP), zeigt das RTW im VU-Modus exakt 0dB an.
Aber auch nur, wenn dort VU-LEAD auf 6dB steht!
Dieses LEAD ist auch ein fester Bestandteil des auf dem Audioshield verbauten Chips und lässt sich per Register dazu schalten - wird aber in der Lib nicht berücksichtig, ist einfach nicht implementiert.
Weiterhin ist mir nach dem Lesen des Datenblattes aufgefallen, dass der Audiochip sehr wohl bis über 2.8V ausgesteuert werden kann.
Das setzt voraus, dass der Eingangspegel in der Software mit:
Code:
sgtl5000_1.linInLevel(0);
gesetzt wird. Nur dann wird der komplett mögliche Eingangsbereich erfasst.
Mögliche Werte sind 0 bis 15. Der Defaultwert ist 5, wenn diese Zeile im Programm nicht existiert.
Und dann habe ich auch noch gelesen, dass es Sinn macht, per Software einen Tiefpassfilter zu benutzen.
Ich glaube, es waren 2,4KHz
Wie auch immer, ich bin am tüfteln und irgendwann kommt vielleicht mal ne Erleuchtung.