an den letzten langen Wochenenden habe ich wieder Zeit mit dem Hobby verbracht. Mit Musik hören, Entkoppeln über Druckfedern/Schaumstoff, theoretischen Überlegungen zu den Filtern in meinem DAC, dem Gedankenspiel zum Bau eines neuen HTPC und dem "Pimpen" meines kleines I3 NUC. Aber eines nach dem anderen ...
Feder-Masse (oder besser Feder-Marmor?) -System
Hier im Forum wurde viel über die "Hornbach-Federn" in Kombination mit Sylomer geschrieben. Aus reiner Neugier und Tätigkeitsdrang habe ich mir dann letztlich auch vier dieser Federn gekauft. Dazu kamen noch ein paar Dämpferpads (kein Sylomer) zum Vergleich und eine einfache, aber gar nicht so häßliche, Küchenschneideplatte aus Marmor. Ein nettes Feature der Marmorplatte ist, dass sie unten Gumminoppen hat, auf welche die Federn gut passen. Da verrutscht nichts.
Die Beobachtungen zum Schwingungsverhalten hatte ich hier schon beschrieben. Bisher habe ich die Schaumstoffpads noch nicht mit den Federn kombiniert, weil ich dazu die Pads wohl zerlegen muss. Ein kurzes Experiment mit zwei Pads übereinander trägt schon zu viel Last, und die Federn werden zu sehr aus dem Spiel genommen. Ohne die zusätzliche Dämpfung durch den Schaumstoff schwingt das Feder-Masse-System aus DAC/Marmor/Federn nach Anregung lustig für eine Weile vor sich hin -- mit einer Frequenz von rechnerisch etwa 5,5 Hz, das kommt nach Augenkontrolle auch etwa hin. Mir gefällt das sichtbare Entkoppeln und Schwingen irgendwie.
Entkoppelter DAC
Welches Filter hätten Sie denn gern?
Ich bin Vertreter der "no-aliasing" Meinung, d.h. im Upsampling möchte ich kein nennenswertes Aliasing hinzufügen. Auch setze ich linearphasige Filter wegen der konstanten Gruppenlaufzeit ein, allerdings mit möglichst kurzer Impulsantwort. Kenner der Materie wissen, dass diese Anforderungen immer auf einen Kompromiss hinauslaufen, und dass die Lösungen immer von den geltenden Rahmenbedingungen abhängen -- wie z.B. dem eingesetzten DAC mit seinen verbauten ICs. Mein DAC (RESTEK MAMS+) hat einen ASRC sowie einen WM8741 DAC-Chipsatz verbaut. Der ASRC lässt sich umgehen, wenn man Zuspiel- und Wandlersamplingfrequenz gleich hält. In meinem Fall liegt diese bei 96 kHz, weil der WM8741 ab dieser Samplingfrequenz eine sehr gute Auswahl an Oversamplingfiltern anbietet -- dazu später noch mehr.
Mein Musikmaterial liegt ausschließlich in 44,1 kHz vor. Mittels Frank´s resample_soxr wird das zur Laufzeit auf 96 kHz gebracht. Das dabei benutzte Filter lässt im Rahmen der gewählten Präzision von 28 Bit kein Aliasing zu. Da zum Abschluß Dithering auf 24 Bit ausgeführt wird, genügen die 28 Bit Filterpräzision vollkommen (siehe auch diese Messung). Der WM8741 führt darauf aufsetzend weiteres 8x Oversampling und bietet dafür 5 Filter an. Dazu gehört das übliche linearphasige Brickwallfilter mit einem Signalfrequenzgang bis nahezu 48 kHz, aber auch linear- und minimalphasige Filter, die nicht auf maximale Übertragungsbandbreite getrimmt sind. Um das zu erreichen, reicht der 3dB-Frequenzgang nur bis etwa 30 kHz, die Sperrdämpfung wird mit oder sogar vor der Nyquistfrequenz erreicht. Genau solche Filter möchte ich einsetzen. Leider sehe ich solche Filter bei anderen neuere Chips wie z.B. den AKM449x nicht mehr.
Bisher habe ich Filter 1 genutzt (soft-knee, linearphasig). Nach näherer Betrachtung bin ich jetzt auf Filter 5 umgeschwenkt (apodising, linearphasig). Filter 5 fällt zwar schon früher und schneller ab als Filter 1, es lässt aber den Hörfrequenzbereich unangetastet und erreicht früher eine insgesamt höhere Sperrdämpfung.
Vergleich Filter 1 und 5 des WM8741 bei 96 kHz
Da klickt doch was?
Nach den Umbauten wollte ich natürlich auch mal wieder in Ruhe Musik hören. Was musste natürlich passieren? Es funktioniert irgendwas nicht. In meinem Fall habe ich leider beim ersten Album sowohl einige wenige Klicks als auch einen "Sprung" gehört. Der hörbare Sprung war ein buffer underrun, der mir auch von sox angezeigt wurde. Die Klicks hatten ihre Ursache vermutlich ebenfalls in buffer underruns in früheren Stufen meiner Audio Pipeline. Nach einiger Recherche im Internet und Nachfragen hier im Forum habe ich letztlich die Prioritäten und CPU-Affinitäten der einzelnen Prozesse überarbeitet. Im wesentlichen sind die Prioritäten viel höher als zuvor, und die CPU-Affinitäten führen zu einer besseren Verteilung der Last und auch geringeren worst case Latenzen (siehe auch hier). Weil bei mir ein RT Kernel werkelt, habe ich zusätzlich noch die Prioritäten des irq handler Prozesse für das USB Audio Device (rtprio 95) und die Realtime Clock (rtprio 94) entsprechend angehoben. Der Audioplayer selbst -- kodi -- läuft weiterhin mit normaler Prozesspriorität von 20 auf einem anderen CPU-Core als die anderen Audio-Prozesse. Mit diesem Setup hat der HTPC (bis jetzt) viele Stunden Messungen ohne underruns und auch diverse Alben ohne hörbare Probleme gemeistert. Ich werde das weiter aufmerksam beobachten.
Code: Alles auswählen
pcm.pipe_src96k_drc_dither_playhrt {
type file
file " | chrt -f 80 taskset -c 1 sox -D -v 0.8 -r 44.1k -b 32 -c 2 -e signed -t raw - -b 64 -c 2 -e float -t raw - \
| chrt -f 81 taskset -c 1 resample_soxr -c 2 -B 89 -P 50 -e 28 -i 44100 -o 96000 \
| chrt -f 82 taskset -c 2 brutefir -quiet -nodefault /home/buschel/Convolver/DRC_96k_stdio.conf \
| chrt -f 83 taskset -c 3 sox -t raw -r 96k -b 64 -c 2 -e float - -b 32 -c 2 -e signed -t raw - dither -p 24 \
| chrt -f 90 taskset -c 3 playhrt --stdin -k 2 -s 96000 -f S32_LE -d usbaudio --mmap --verbose --sleep=1000000"
format "raw"
}
Code: Alles auswählen
pcm.pipe_src96k_drc_dither_soxplay {
type file
file " | chrt -f 80 taskset -c 1 sox -D -v 0.8 -r 44.1k -b 32 -c 2 -e signed -t raw - -b 64 -c 2 -e float -t raw - \
| chrt -f 81 taskset -c 1 resample_soxr -c 2 -B 89 -P 50 -e 28 -i 44100 -o 96000 \
| chrt -f 82 taskset -c 2 brutefir -quiet -nodefault /home/buschel/Convolver/DRC_96k_stdio.conf \
| (sleep 1.0; chrt -f 83 taskset -c 3 cat) \
| chrt -f 90 taskset -c 3 sox -t raw -r 96k -b 64 -c 2 -e float - -t alsa usbaudio dither -p 24"
format "raw"
}
Audio Pipeline Prozesse; htop nach >9 Stunden Laufzeit
Und nu?!
Tja, hat sich denn hörtechnisch etwas verändert? Schwer zu sagen. Seit dem Einbau des Intona USB-Isolators habe ich das Gefühl, dass gerade leise Transienten mehr herausstechen, wie z.B. in das Material eingebautes Plattenknacksen. Die Umstellung des DAC-Filters, das Entkoppeln und die Pipeline-Optimierung habe ich zwar nacheinander gemacht und jeweils auch -- zugegebenermaßen nur kurz -- gehört, ich nehme aber keinen Unterschied im Klang wahr -- nur die ungewollten Klicks sind bisher verschwunden ...
Viele Grüße,
Andree