Rodge: Zu Deiner Frage, wofür ich das Ganze denn brauche.
Ist natuerlich Off-Topic - However:
Ich hatte ja schon früher mal gepostet, dass ich mir einen Standalone Audio Client zusammenbaue, der sich ausschliesslich um Audio mit Realtime-Ausgabe kümmern soll.
Neben dem reinen Streaming manipuliere ich noch softwaremässig die Lautstärke und appliziere Triangular Dither.
Gerade eben baue ich mir noch einen DSP FIR Crossover-Filter zusammen, um meine Speaker bestmöglich mehrkanalig aktiv anzusteuern.
Also -- Ich habe bei mir folgendes herausgefunden um mein Audio (ernsthaftes High-End Zeugs) zu optimieren.
Das Scheduling und die damit verbundene Vergabe von Prioritäten für meinen Audio Prozess hängt direkt zusammen
mit dem erzielbaren Klanggewinn. Eine gleichförmige Audio-Verbarbeitung ist im Normalfall (Normal-Kernel) nicht möglich.
Man benötigt vergleichsweise riesige Buffer ( für jeden Prozess in der Kette mindestens einen) um den Stream zu managen. Leider haben normalerweiser X (benötgt sehr viel Leistung mit all seinen Clients), Graphikkarten, HD usw. ähnlich hohe Prioritäten wie der Audio-Process. Da sind Buffer-Grössen von 10ms (500 samples) und mehr keine Seltenheit. Da bleibt einiges auf der Strecke.
Ein weiterer Punkt ist die Grösse die "Slices" (Period Sizes/Blöcke ). Je kleiner ich die Slices mache desto geringer der Fehler. Lasse ich den Timer z.B. auf 4000Hz laufen, erhalte ich wesentlich bessere Resultate. Da der effektive Fehler geringer wird. Bei einem Standard-Kernel Setting von 1ms (1000Hz Timer ) gebe ich immer gleich 1 ms an einen anderen Prozess ab, auch wenn dieser eigentlich nur 100us oder weniger für seine Task benötigt. (Ich habe bei mir auch noch den Sound-Karten Treiber angepasst, um das Timing in der gesamten Kette zu optimieren. Dieser tickte nämlich auch im 1ms Takt)
Mit dem CK Patch (der Molnar Patch ist nicht unbedingt schlechter) schaffe ich es eine maximale Kontinuität in den Audio-Datenstrom zu bekommen. Mit seinem Staircase Scheduler bei einem nice von -20 komme ich schon sehr weit.
schedtool -I (sched_iso) , als Alternative, ist auch sehr gut. Auch kann ich durch den Patch die Timer Frequenzen (Sehr wichtig) anpassen. Das geht bei Molnar derzeit nicht.
Die Soundkarte und die jeweilige Audio-Applikation beinflusst das Ergebniss dann noch weiter. Nicht umsonst klingen
realtime optimierte Commandline Applikationen, wie ecasound, besser als Ardour und Konsorten.
Es ist ja nett ein graphisches Interface mit Audio-Spektrum Gimicks, GTK2 Oberfläche zu sehen. All das frisst IMO immense Processing Power, aber mehr noch Time-Slices und geht auf die Kosten des Sounds. Auch bei z.B. 12% CPU Load
gibt es die Probleme ( Ich nenne dies mal Warteschleifen - Idle time).
Das Ergebnis kann sich hören lassen - Seit Januar bin ich klanglich schon sehr weit gekommen.
So langsam habe ich alle Grundlagen zusammen um meinen bootbaren USB-Stick Audio Linux Client zusammenzubauen!
Viele Gruesse
Klaus