ALSA: Tonausgabe über Audio-HAT hat viel zu tiefe Tonhöhe

  • Moin!


    Nachdem ich kürzlich das Raspbian von meinem Pi 3B+ komplett neu aufsetzen musste, hapert es mit der Tonausgabe über ALSA und das JustBoomm-DAC-HAT: Alle Klänge haben eine viel zu geringe Tonhöhe (vielleicht ½ der geforderten Frequenz). Dabei ist es egal, welche Sorte von Sound-Daten es ist: Ich habe ein MP3-File mit mpg123 abgespielt und einen kurzen Text mit eSpeak sprechen lassen. Beide tönten viel zu tief. Hier meine Audio-HW-Konfiguration (der Onboard-Sound des Pi ist per Boot-Config ausgeschaltet):



    Und hier meine /etc/asound.conf:



    Was läuft hier schief?

  • Weder noch. Das Abspieltempo ist völlig normal, auch die Obertöne sind da, nur klingt alles so, als hätte man Klänge / Stimmen mit einem Harmonizer um eine ganze Oktave nach unten transponiert. Sie klingen auch nicht blechern (vocoder-mäßig).

  • Ich arbeite derzeit mit einem Smartphone-Headset an der Klinkenbuchse des HATs (das am Telefon auch klaglos funzt). Die Stromversorgung geht über eine S.USV, die bisher immer perfekt gearbeitet hat.

  • OK, ich habe mir einen Wolf gesucht und gefunden: Es war nicht etwa die ALSA-Konfiguration, sondern ein Dienst namens pigpiod, welcher sämtliche GPIO-Anschlüsse ansteuert und das Taktsignal per PWM oder PCM erzeugt. Standard ist PCM, doch dann trampelt der Dienst der Soundkarte auf die Füße. Das Problem hatte ich schon bei der ersten Einrichtung des Sounds vor einigen Jahren. So geht's richtig:


    Code
    /usr/bin/pigpiod -t 0 -l


    Mit -t 0 schaltet der Dämon auf PWM um, und der Sound wird nicht mehr gestört.

  • Kann ich bestätigen, diesen Effekt hatte ich auch schon mal mit pigpio bei meinem Raspiblaster. Deshalb wechselte ich seinerzeit die Bibliothek vom damals modernen pigpio zurück zum "klassischen" wiringPi. Ich wollte gerade einen Hinweis geben, sehe aber, dass Du das Problem ohnehin besser gelöst hast als ich.

  • Danke für's suchen und teilen.

    Ich glaub ich hatte damals was bemerkt, und zwar wenn pigpiod (im Terminal wenn der Desktop lieft) gestartet wurde keine Störungen gab. Weshalb ich den mit einer Service (systemd) unit gestartet hab nach (After=) Desktop target.

    Ist aber schon so lange her :)