Benötige Hilfe bei der Konfiguration von ALSA

Hinweis: In dem Thema Benötige Hilfe bei der Konfiguration von ALSA gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Seid gegrüßt liebe Forengemeinde!


    Vorwort


    Ich versuche aktuell meinen ersten "richtigen" Audio-PC aufzubauen und habe bereits unterschiedliche Distributionen dafür ausprobiert. Grundsätzlich erscheint mir openSUSE zwar am sympathischsten, jedoch hatte ich in der Vergangenheit bisher so meine Probleme damit (insbesondere bezüglich KDE und PulseAudio) und bin deswegen vorerst wieder zu Linux Mint zurückgekehrt.


    Meiner Erfahrung nach ist PulseAudio allgemein eine einzige Katastrophe und verursacht mehr Probleme, als es welche lösen würde. Da es aber leider keine einzige Distribution gibt, die PulseAudio nicht voraussetzen würde, war ich gezwungen es nachträglich rauszuschmeißen. Das hat unter Xfce auch ganz gut geklappt und normale Wiedergabe funktioniert bereits, nur kommt jetzt meine benötigte fortgeschrittene Konfiguration ins Spiel.


    Ich plane zurzeit vollaktive Lautsprecher, die über ALSA (oder wenn nötig zusätzlich Jack) mit BruteFIR, sprich über FIR-Filter, angesteuert werden sollen. Da das Ganze aber über 4 verschiedene Soundkarten läuft, benötige ich entsprechende virtuelle Geräte, die diese korrekt verschalten. Außerdem benötige ich hochqualitatives Resampling (auf 192 kHz), unter anderem natürlich für Software-Mixing. Damit bei allen Prozessen (Software-Lautstärkeregelung, Filterberechnung und -Convolution, usw.) beste Präzision sichergestellt ist, muss die Bittiefe mindestens 24 Bit oder besser 32 Bit Floating Point entsprechen.


    Soweit zu den Anforderungen, ich freue mich diesbezüglich auf sinnvolle Ratschläge (auch Kritik) und natürlich Hilfestellung. Ich hoffe ich kann den Thread ebenfalls für alle weiteren Fragen zu dem Thema nutzen, die auf dem Weg sicherlich noch auftauchen werden, und den Eröffnungspost mit der Zeit entsprechend editieren bzw. erweitern. Aktuell kann ich nur von dem Standpunkt aus fragen, an dem mich mich gerade befinde, nämlich von ganz am Anfang aus.


    Schritt 1: Basiskonfiguration von ALSA - dmix


    Die folgende einfache Konfiguration (allein Stereo über eine einzige Soundkarte) sollte zuerst einmal nur zu Testzwecken dienen, zum Ausprobieren von dmix. Selbst hierbei gibt es aber schon Probleme.


    Grundsätzlich kommt Sound und auch mehrere Anwendungen gleichzeitig können abspielen, jedoch kommt es bei jedem Zugriff auf die Soundkarte zu einem "Plopp"-Geräusch. Dieses ist unabhängig von der gewählten Lautstärke, wird also auch nicht durch muten umgangen. Wie man sich vorstellen kann ist das sehr gravierend, da z.B. ein direkt angeschlossener Hochtöner dadurch sofort zerstört würde!


    Hier sind die entsprechenden Absätze aus meiner asound.conf:



    Wo könnte der Fehler stecken? Wenn ich dmix übergehe, tritt dieser nicht auf.


    Außerdem stellt sich mir die Frage, woher ich die korrekten bzw. optimalen Werte für "period_size" und "buffer_size" entnehme? Zu Anfang hatte ich für letzteren Wert 4096 gewählt, was bei Samplingraten von mehr als 96 kHz zu einer Fehlermeldung führte.


    Das soll es an Fragen vorerst gewesen sein, denn falls ich dieses erste Problem nicht gelöst bekomme, bin ich gezwungen einen alternativen Weg zu gehen. Bereits ins Auge gefasst hatte ich mir Jack, nach dem Grundsatz "keep it clean and simple" wäre mir aber natürlich eine Lösung ohne lieber.


    Ich bedanke mich schon einmal für Antworten und potenzielle Hilfe! Ich bitte ferner nachsichtig mit mir umzugehen, denn ich bin noch ziemlich neu in der Linux-Welt...


    Grüße

    Music speaks what cannot be expressed,
    soothes the mind and gives it rest,
    heals the heart and makes it whole,
    flows from heaven to soul.

    Für den Inhalt des Beitrages 79695 haftet ausdrücklich der jeweilige Autor: LinuxHiFi

  • ohje, ein "Plopp" Geräusch. Wären "Plopps" nicht eher tieffrequentig? Du hast 4 Soundkarten? Macht das jede Soundkarte? Hab ich in deinem Text die Bezeichnung der Soundkarten überlesen? Für professionelle Audiobearbeitung unter Linux würde ich dir Jack auf jeden Fall empfehlen (das hat mir selbst auch sehr geholfen). Das Einrichten kann mitunter auch nicht immer einfach sein, aber lohnenswert. Zum anderen sind die meisten hier auf OpenSuse selbst spezialisiert, dh. unter Umständen wirst du auch Hilfe aus einem Hardwareforum benötigen.


    Nachtrag: was mir auffällt ist, dass deine Einstellungen eine elendige Latenz erzeugen müssten.(gegen 20ms?) Ist das aufgrund der 192 KHz, dass die Buffergröße so hoch eingestellt ist? Period Time 0 entspricht hoffentlich meinem Periods/Buffer (Hoffe ich irre mich nicht), die habe ich auf 2 (andernfalls fehlt meiner Meinung nach ein Verarbeitungsprozess, bzw. wird ignoriert) stehen. Das könnte evtl. das Plopp verursachen. Check das aber lieber mit weniger hochwertiger HW.


    Noch ein Nachtrag: Warum willst du unbedingt mit 192 KHz aufnehmen? Wenn dir der Speicherplatz zur Verfügung steht und die Soundkarten das locker hergeben, versteh ich es.

    3 Mal editiert, zuletzt von JeyF123 ()

    Für den Inhalt des Beitrages 79699 haftet ausdrücklich der jeweilige Autor: JeyF123

  • ohje, ein "Plopp" Geräusch. Wären "Plopps" nicht eher tieffrequentig? Du hast 4 Soundkarten? Macht das jede Soundkarte? Hab ich in deinem Text die Bezeichnung der Soundkarten überlesen?

    Dieses "Plopp"-/"Knack"-Geräusch, oder wie man es bezeichnen mag, scheint ein relativ breites Spektrum an Frequenzen zu haben, auch tiefere Frequenzen sind dabei.


    Bisher benutze ich zum Testen nur die eine 2 Kanal Soundkarte (M-Audio Delta Audiophile 192). Später kommen noch zwei 4 Kanal USB-I2s Wandler hinzu (Amanero Combo384) sowie für die Subwoofer einer der Kanäle der 8 Kanal Onboard-Soundkarte (VIA VT2020).


    Für professionelle Audiobearbeitung unter Linux würde ich dir Jack auf jeden Fall empfehlen (das hat mir selbst auch sehr geholfen). Das Einrichten kann mitunter auch nicht immer einfach sein, aber lohnenswert.

    Wäre Jack denn auch bei reiner Wiedergabe zu bevorzugen? Ich habe mich vielleicht etwas undeutlich ausgedrückt, aber mir geht es nicht um professionelle Audiobearbeitung, sondern schlicht und einfach um eine möglichst gute Wiedergabe beim Musikhören sowie im Heimkino. Ich weiß, dass Aktivlautsprecher außerhalb des Tonstudios eher unüblich sind, ich wurde jedoch von klein auf seitens meines Vaters mit Lautsprechern von Backes & Müller sowie Silbersand verwöhnt und kann deswegen nichts anderes mehr als "Aktivklang" ertragen. Wie musikbegeisterte Menschen dauerhaft mit Passivlautsprechern zufrieden sein können, ist mir schleierhaft.


    Nachtrag: was mir auffällt ist, dass deine Einstellungen eine elendige Latenz erzeugen müssten.(gegen 20ms?) Ist das aufgrund der 192 KHz, dass die Buffergröße so hoch eingestellt ist? Period Time 0 entspricht hoffentlich meinem Periods/Buffer (Hoffe ich irre mich nicht), die habe ich auf 2 (andernfalls fehlt meiner Meinung nach ein Verarbeitungsprozess, bzw. wird ignoriert) stehen. Das könnte evtl. das Plopp verursachen. Check das aber lieber mit weniger hochwertiger HW.

    Wenn ich "period_time" Werte größer 0 zuweise, dann wird die Wiedergabe in der Tonhöhe bzw. Geschwindigkeit verfälscht. Ich habe diesen Wert jetzt komplett weggelassen, da diese Angabe wohl nur eine alternative Form der Periodengröße bezeichnet.


    Ich habe nun noch einmal versucht, irgendetwas Vernünftiges zu den PCM-Audio Grundzusammenhängen zu finden. Es steht geschrieben, die Periodengröße solle bei hohen Abtastraten möglichst groß gewählt werden, damit die Prozessorlast nicht ins Unermessliche steigt. Auch wenn der Prozessor nicht hinterherkommt, fängt die Wiedergabe natürlich an zu stottern.


    Die Periodengröße bestimmt jedenfalls, wie früh der Buffer vom Prozessor wieder neu aufgefüllt wird. Damit es also zu keinem Verlust durch zu spätes Nachladen der Daten kommt, muss dabei logischerweise ein passendes Verhältnis zwischen Buffer- und Periodengröße bewahrt werden, sprich die Buffergröße darf im Verhältnis nicht zu klein bemessen sein. Es heißt es sollten in den Buffer mindestens zwei Perioden hineinpassen, um Underruns zu vermeiden. Ich habe zur Sicherheit 4 gewählt.


    Eine Beschränkung der Periodengröße ist ferner durch die Hardware und dessen maximale Buffergröße gegeben. Wenn die Latenz keine Rolle spielt, was in meinem Fall bei reiner Wiedergabe der Fall ist, kann man einfach von der maximalen Buffergröße ausgehen und rückwirkend die entsprechenden restlichen Werte ermitteln.


    Im Hinblick auf meine Soundkarte komme ich nach diesen neuen Erkenntnissen auf folgende Werte:

    Code
    periods 4		# gibt das Verhältnis zwischen Buffer- und Periodengröße an
    period_size 8192	# Periodengröße entspricht somit 1/4 der Buffergröße
    buffer_size 32768	# Maximal möglicher Buffer meiner Soundkarte
    rate 192000
    format S32_LE
    channels 2


    Die Latenz berechnet sich nun wie folgt:

    Code
    Buffergröße = Periodengröße * Anzahl der Perioden
    Bytes pro Sample = (Bittiefe / 8) * Anzahl der Kanäle
    Latenz = Buffergröße / (Abtastrate * Bytes pro Sample)


    Für meine Werte ergibt das:

    Code
    Buffergröße = 8192 * 4 = 32768
    Bytes pro Sample = (32 / 8) * 2 = 8
    Latenz = 32768 / (192000 * 8) = 0,0213 [in Sekunden]


    Ergebnis bezüglich der Problemsituation


    All die aufgeführten Änderungen haben leider keine maßgeblichen Auswirkungen auf den Fehler, nur der Pegel des Geräusches hat dadurch etwas abgenommen.


    Die Frage besteht also weiterhin, wo hier das Problem liegen könnte?


    Noch ein Nachtrag: Warum willst du unbedingt mit 192 KHz aufnehmen? Wenn dir der Speicherplatz zur Verfügung steht und die Soundkarten das locker hergeben, versteh ich es.

    Hier sind zwei interessante Artikel zu dem Thema, die ich nur empfehlen kann einmal zu lesen:

    Music speaks what cannot be expressed,
    soothes the mind and gives it rest,
    heals the heart and makes it whole,
    flows from heaven to soul.

    Für den Inhalt des Beitrages 79713 haftet ausdrücklich der jeweilige Autor: LinuxHiFi

  • ok, zum anhören brauchst du kein Jack. Jack vermindert vor allem die Latenz, hat aber auch den Vorteil einer sehr guten Software"verkabelung". Siehe qjackctl. Was mir nicht in den Kopf gehen will, warum bei Period-Time der Ton höher werden soll? Solche Unterschiede, wenn etwas nicht zusammenpasst macht normalerweise die Frequenz.
    Die Latenz habe ich mit 20ms eh gut geschätzt^^, obwohl ich habs bei meinen Werten ausprobiert, danke für das Berechnungsmodell. Jetzt stehen deine Periods auf 4. Ploppt es noch immer? Was mir noch nicht eingeht, warum willst du die Subwoofer über die Onboard Soundkarte machen. Zugegeben, mit Subwoofern habe ich so überhaupt keine Erfahrung, aber das sind doch die für die niederen Frequenzen, oder? Die meisten Onboard-Soundkarten haben meist kein gutes Frequenzspektrum.


    Im übrigen hast du mich auf eine Idee für mich selbst gebracht, hab meine alte EMU auch mal auf 192 KHz gestellt und eine Aufnahme
    mit 8 Spuren ablaufen lassen. Das hat mich selbst gewundert, es gab dabei keine Xruns (Aussetzer) bei Jack. Läuft genauso auf 10.7 ms (stereo), bei 1024 Frames/Period. Das hätte ich ihr gar nicht zugetraut.


    Aber das ist eher HW-Zeugs gerade. Ist Pulseaudio wirklich vollkommen deinstalliert? Hast du schon mal in der Konsole in den

    Code
    alsamixer

    reingesehen? Hast du nur ein Plopp und keinen weiteren Ton, oder ein Plopp vor dem Ton?
    Hast du zu Testzwecken (wenn das zur Verfügung steht) versucht andere Lautsprecher, oder einen anderen Rechner anzuhängen, ob das Phänomen gleich ist? Mir fallen Plopp Geräusche gerade im Zusammenhang mit einer schlechten Aufnahme ein.
    Da entsteht ein High-Peak ganz am Anfang, soetwas könnte man über Audacity rausfinden. Ansonste wäre es evtl. auch eine physikalische Eigenschaft, dass es ploppt, sobald der Lautsprecher angesprochen wird? Ok, ich rate hier schon ziemlich und versuch mich an die Dinge zu erinnern die mir passiert sind.

    Für den Inhalt des Beitrages 79722 haftet ausdrücklich der jeweilige Autor: JeyF123

  • Was mir noch nicht eingeht, warum willst du die Subwoofer über die Onboard Soundkarte machen. Zugegeben, mit Subwoofern habe ich so überhaupt keine Erfahrung, aber das sind doch die für die niederen Frequenzen, oder? Die meisten Onboard-Soundkarten haben meist kein gutes Frequenzspektrum.

    Die Unzulänglichkeiten von Onboard-Soundkarten kommen bei Subwoofern nicht wirklich zum tragen, deswegen habe ich an dieser Stelle gespart. Klar ist der Frequenzgang nicht ganz so linear, aber die Abweichungen spielen sich auf einem so geringen Niveau ab, dass sie in der Realität wohl eher zu vernachlässigen sind; insbesondere wenn man - wie ich - alles nachträglich mit Filtern "geradebiegen" kann. Die anderen Nachteile von Onboard-Lösungen wie z.B. stärkere Jitter-Artefakte und beschränktes Auflösevermögen in der Zeitdomäne dürften bei der reinen Tieftonwiedergabe ebenfalls keine Rolle spielen.


    Ist Pulseaudio wirklich vollkommen deinstalliert? Hast du schon mal in der Konsole in den

    Code
    alsamixer

    reingesehen? Hast du nur ein Plopp und keinen weiteren Ton, oder ein Plopp vor dem Ton?

    Was soll ich da sehen? Natürlich habe ich schon in den Mixer reingeschaut, normal benutze ich jedoch den Xfce4-Mixer. Und ja, PulseAudio ist vollständig entfernt.


    Wie gesagt "ploppt" es beim Zugriff auf die Soundkarte, vor Beginn bzw. zu Anfang der eigentlichen Wiedergabe. Wenn die Wiedergabe zu Ende ist, "klickt" es teilweise noch einmal leicht.


    Hast du zu Testzwecken (wenn das zur Verfügung steht) versucht andere Lautsprecher, oder einen anderen Rechner anzuhängen, ob das Phänomen gleich ist? Mir fallen Plopp Geräusche gerade im Zusammenhang mit einer schlechten Aufnahme ein.
    Da entsteht ein High-Peak ganz am Anfang, soetwas könnte man über Audacity rausfinden. Ansonste wäre es evtl. auch eine physikalische Eigenschaft, dass es ploppt, sobald der Lautsprecher angesprochen wird?

    Der Fehler ist definitiv auf der Computerseite zu suchen, die Art wie meine Lautsprecher angeschlossen sind verschärft das Ganze nur noch (die Endstufe ist direkt symmetrisch mit der Soundkarte verkabelt ohne analoge Lautstärkeregelung dazwischen).


    Anfangs hatte ich erwähnt, dass das Problem nur bei Nutzung von dmix auftrete. Wie ich gestern festgestellt habe, hängt es dabei irgendwie mit den hohen Abtastraten (vermutlich im Zusammenspiel mit Buffer- und Periodengröße) zusammen. Lege ich hingegen die Abtastrate nur auf 44,1 oder 48 kHz fest, ist das Problem ebenfalls weg.


    Jedoch tritt das Problem nicht nur mit dmix und hohen Abtastraten auf, sondern auch bei Direktzugriff auf die Soundkarte ohne vorige Softwaremanipulation, wenn das Quellmaterial entsprechend hohe Samplingraten (96 oder 192 kHz) aufweist.


    Ich habe mir in diesem Zusammenhang ferner unter "/proc/asound/card1/pcm0p/sub0/" angeschaut, welche Werte bei der Wiedergabe automatisch gesetzt werden:


    Code
    access: MMAP_INTERLEAVED
    format: S32_LE
    subformat: STD
    channels: 2
    rate: 192000 (192000/1)
    period_size: 8192
    buffer_size: 32768


    Nach dem Rumprobieren mit unterschiedlichen Werten gestern, kam ich ja ebenfalls auf diese Werte als scheinbar besten Kompromiss. Wie gesagt ist das Geräusch damit im Pegel gesunken, aber leider immer noch vorhanden!



    Hat sonst noch jemand eine Idee, was hier zu einer vollständigen Lösung des Problems führen könnte?

    Music speaks what cannot be expressed,
    soothes the mind and gives it rest,
    heals the heart and makes it whole,
    flows from heaven to soul.

    Für den Inhalt des Beitrages 79752 haftet ausdrücklich der jeweilige Autor: LinuxHiFi