Hallo zusammen,
meine Frage hat zwar nicht direkt mit Radio zu tun, aber da hier viel Know-how im Bereich der Akkustik vorhanden ist, hoffe ich es sei mir gestattet sie trotzdem zu stellen. Es geht bei der ganzen Angelegenheit nicht um ein präzises Werkzeug zum Aussteuern, sondern lediglich um die Ansteuerung von Digitalen LED-Stripes (also nur Eyecandy - Sound2Light).
Aktuell arbeite ich daran die Lautstärke auf einem Windows-System auszuwerten. Für Windows Vista und 7 gibt es in der NAudio-Lib eine recht einfache Variante direkt vom Mixer die Werte zu beziehen. Das Funktion gibt einen Wert (float) zwischen 0 und 1 zurück. Ich Multipliziere diesen Wert mit 30 und steuer damit 30 Pixel (LEDs) des Stripes an (jede Dezimalstelle für einen Pixel). Das Ganze klappt grundsätzlich, aber das Verhalten dieses "VU-Meters" ist irgendwie total unnatürlich. Im oberen Bereich ist überhaupt keine Dynamik, ab einer gewissen Lautstärke "klebt" es einfach oben fest. Es scheint so, dass das Problem hier bei Windows selber zu suchen ist, die Pegel-Anzeige im Mixer zeigt nämlich das selbe Verhalten.
Nun habe ich überlegt alternativ direkt den PCM-Datenstrom auszuwerten. NAudio liefert hierfür alle 100ms ein Array mit (Samplerate/10) * 2 Bytes zurück. Jeweils zwei Bytes zusammen gesetzt ergeben einen 16bit-Frame.
Nach einer FFT habe ich Zugriff auf belibige Frequenzen und kann deren Pegel auswerten. Nun ist aber die Frage, wie ich daraus die Lautstärke aggregiere. Welche Bänder sollte ich mit welcher Gewichtung verwenden? Gibts da ein übliches Verfahren?
Ich weiss, dass man auch einfach alle gesetzten Bits in einem PCM-Frame auswerten kann, aber auch das wirkt irgendwie nicht natürlich, hier fehlt im unteren Bereich jegliche Dynamik.
Da wir ja nicht alle Frequenzen gleichstark wahrnehmen, denk ich mir, dass die unterschiedliche Gewichtung der Bänder hier mehr hergeben könnte.
Hoffe ich hab mich verständlich ausgedrückt und ihr habt ein paar Tipps für mich.
Gruß Dominique Görsch
PS: Bei Bedarf versuche ich gerne ein Video des aktuellen Verhaltens zu erstellen.
meine Frage hat zwar nicht direkt mit Radio zu tun, aber da hier viel Know-how im Bereich der Akkustik vorhanden ist, hoffe ich es sei mir gestattet sie trotzdem zu stellen. Es geht bei der ganzen Angelegenheit nicht um ein präzises Werkzeug zum Aussteuern, sondern lediglich um die Ansteuerung von Digitalen LED-Stripes (also nur Eyecandy - Sound2Light).
Aktuell arbeite ich daran die Lautstärke auf einem Windows-System auszuwerten. Für Windows Vista und 7 gibt es in der NAudio-Lib eine recht einfache Variante direkt vom Mixer die Werte zu beziehen. Das Funktion gibt einen Wert (float) zwischen 0 und 1 zurück. Ich Multipliziere diesen Wert mit 30 und steuer damit 30 Pixel (LEDs) des Stripes an (jede Dezimalstelle für einen Pixel). Das Ganze klappt grundsätzlich, aber das Verhalten dieses "VU-Meters" ist irgendwie total unnatürlich. Im oberen Bereich ist überhaupt keine Dynamik, ab einer gewissen Lautstärke "klebt" es einfach oben fest. Es scheint so, dass das Problem hier bei Windows selber zu suchen ist, die Pegel-Anzeige im Mixer zeigt nämlich das selbe Verhalten.
Nun habe ich überlegt alternativ direkt den PCM-Datenstrom auszuwerten. NAudio liefert hierfür alle 100ms ein Array mit (Samplerate/10) * 2 Bytes zurück. Jeweils zwei Bytes zusammen gesetzt ergeben einen 16bit-Frame.
Nach einer FFT habe ich Zugriff auf belibige Frequenzen und kann deren Pegel auswerten. Nun ist aber die Frage, wie ich daraus die Lautstärke aggregiere. Welche Bänder sollte ich mit welcher Gewichtung verwenden? Gibts da ein übliches Verfahren?
Ich weiss, dass man auch einfach alle gesetzten Bits in einem PCM-Frame auswerten kann, aber auch das wirkt irgendwie nicht natürlich, hier fehlt im unteren Bereich jegliche Dynamik.
Da wir ja nicht alle Frequenzen gleichstark wahrnehmen, denk ich mir, dass die unterschiedliche Gewichtung der Bänder hier mehr hergeben könnte.
Hoffe ich hab mich verständlich ausgedrückt und ihr habt ein paar Tipps für mich.
Gruß Dominique Görsch
PS: Bei Bedarf versuche ich gerne ein Video des aktuellen Verhaltens zu erstellen.