Knacken im Sound beim Spielen

cabriofahrer

Well-Known Member
Ich habe Knacken im Sound beim Spielen von ETQW (Linux-emu), die Terminalausgabe beim Beenden gibt auch mehrfach eine Meldung aus, die das bestätigen könnte:

Code:
idAudioHardwareOSS::Write: 1024 samples overflowed and dropped
idAudioHardwareOSS::Write: 1024 samples overflowed and dropped
idAudioHardwareOSS::Write: 1024 samples overflowed and dropped
------------ Game Shutdown -----------
Shutdown event system
--------------------------------------
--------------- BSE Shutdown ----------------
---------------------------------------------
Shutting down sound hardware
------ OSS Sound Shutdown ------
close mic device
close sound device
--------------------------------
Shutting down SDL subsystem
idRenderSystem::Shutdown()
shutdown terminal support

Es handelt sich um alte Hardware (Realtek ALC861), wie die Ausgabe von dmesg zeigt:

Code:
$ dmesg | grep pcm
pcm0: <Realtek ALC861 (Analog 2.0+HP/2.0)> at nid 11,15 and 13,16,17,12 on hdaa0
pcm1: <Realtek ALC861 (Onboard Digital)> at nid 18 on hdaa0
pcm2: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 4 on hdaa1
pcm3: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 5 on hdaa1
pcm4: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 6 on hdaa1
pcm5: <NVIDIA (0x0060) (HDMI/DP 8ch)> at nid 7 on hdaa1
pcm6: <USB audio> on uaudio0
pcm6: Mixer "vol" -> "none": child=0x00000010
pcm6: Mixer "pcm": parent="vol"
pcm6: Mixer "mic":
pcm6: Soft PCM mixer ENABLED
$

Kann es vielleicht sein, dass der Soundchip oder die CPU beim Spielen einfach überlastet sind? Gibt es vielleicht einen Tuning-Trick, um das Knacken zu reduzieren?
 
Danke, aber nein, das trifft die Sache nicht. Den Befehl +set s_driver oss musste ich seinerzeit eingeben, um unter FreeBSD überhaupt Sound zu bekommen, das ist schon OK. Der Sound ist auch sauber und glasklar, das ist nicht das Problem. Es ist nur etwas Knacken, weshalb ich vermute, dass die Hardware überlastet ist. Angeblich soll der Flag+set s_force22kHz 1 bewirken, dass man die Soundqualität auf 22kHz heruntersetzen kann, der Befehl bleibt aber wirkungslos, wie die Terminalanzeige hinterher beweist, es bleibt bei 44kHz.
 
Ins blaue geschossen:

Das spiel wird immer 44khz ausgeben, wenn du das versuchst runter zu setzen wird das entweder nicht funktionieren oder zusätzliche Last erzeugen weil ers nochmal konvertieren muss.
 
Nach meiner Erfahrung kratzt Sound durch Überlast auch nur, wenn die fps stark einbrechen. Also wenn die frames weiterhin smooth sind und der Mauszeiger ebenfalls nicht hakelt, dann muss das Problem woanders bestehen.

zusätzliche Last erzeugen weil ers nochmal konvertieren muss
Gegenschuss ins Blaue: Oft hatten Spiele soundfiles in 11, 22 und 44khz gleich mitgeliefert, damit nicht konvertiert werden muss. ;)

Edit: Mir kam noch in den Sinn, dass q3-engine Angetriebenes die dicke .pk3 als Hauptdatenfile hat und das eine zip-Datei ist. Wenn man die entpackt und in den richtigen Pfad steckt, spart das zumindest ein wenig. Das wird aber eher nicht das Problem lösen.
 
Zuletzt bearbeitet:
Das Problem tritt bei linux-doom3 (fast gleiche Engine) nicht auf. Ausgabe nach beenden des Spiels:

Code:
loaded collision model models/gibs/left_waist_pork.lwo
loaded collision model models/gibs/lup_leg_pork.lwo
loaded collision model models/gibs/rup_leg_pork.lwo
loaded collision model models/gibs/rup2_leg_pork.lwo
loaded collision model models/gibs/pelvis_pork.lwo
loaded collision model models/weapons/shell1/sshell_bigger.lwo
--------- Game Map Shutdown ----------
WARNING: idClipModel::FreeTraceModel: tried to free uncached trace model
--------------------------------------
Shutting down sound hardware
------ OSS Sound Shutdown ------
close sound device
--------------------------------
idRenderSystem::Shutdown()
------------ Game Shutdown -----------
--------- Game Map Shutdown ----------
--------------------------------------
Shutdown event system
--------------------------------------
shutdown terminal support
$

Weiter oben auch 44kHz. ETQW ist zwar etwas weiter entwickelt als Doom3, vielleicht liegt es daran. In einem alten Gentoo-Thread wurde scheinbar das gleiche Problem beschrieben, da lag es aber an pulseaudio und es wurde mit Verwenden von ALSA gelöst. Ist aber auch nicht so schlimm.
 
Hmm, weitere Idee: Sound ist für CPU-Performanceprobleme etwas anfälliger als die reine Darstellung, bei manchen spielen mehr, bei manchen weniger.

Läuft evtl irgendwas im Hintergrund das kurz die CPU-Last hochgehen lässt, vill. nen Dienst, nen anderen Programm oder so?
 
Nein, eigentlich nicht. Aber wie gesagt, das Problem tritt z.B. bei linux-doom3 nicht auf. Außerdem ist das Knacken bei dieser intensiven Baller- und Explosionsorgie von ETQW eigentlich nicht mehr wahrzunehmen, nur am Anfang bei der Titelmusik oder in sonstigen ruhigeren Momenten.
 
Ich habe früher StarCraft 2 und Fallout 3 in Wine mit nem Wrapper gestartet, der Wine auf einem Kern gesperrt hat. Dort habe ich ihm dafür aber dort Realtimepriorität gegeben. Das hatte meine Frametimes unter FreeBSD 8 und 9 deutlich verbessert.
 
Du könntest noch probieren den Sample-Buffer deiner Soundkarte zu erhöhen. Das ist das Sysctl dev.pcm.X.buffersize, wobei X die Nummer der Soundkarte ist. Aber selbst wenn es hilft, bedeutet der größere Buffer unter Umständen eine höhere Latenz, was zu leicht asynchronem Sound führen kann.
 
Ich würde den voreingestellten Wert erstmal verdoppeln. Bei mir steht dort 65536 (also 2^16) drin, ich würde es mal mit 131072 probieren.

Lässt sich scheinbar nicht ändern:

Code:
# sysctl dev.pcm.0.buffersize
dev.pcm.0.buffersize: 65536
# sysctl dev.pcm.0.buffersize=131072
sysctl: oid 'dev.pcm.0.buffersize' is read only
#
 
Zurück
Oben