Hallo,
folgende Problemsituation hatte sich bei mir vo ein paar Wochen ergeben.
Ich bin stolzer Besitzer eine SB Audigy 2 NX usb.
Diese spielt Sounddateien nur korrekt bei 48000 Hz ab. Eine 44100 Hz Audiodatei hört sich schlierenhaft und zu schnell an (Da sie zu hoch und zu schnell abgespielt wird!).
Da ein ähnliches Problem auch bei einer falsch kompilierten libmp3 (gcc Bug) auftritt habe ich lange im Dunkeln gesucht, bis mir auffiehl, dass meine Spiele auch diesen selben Soundeffekt hatten und die Spiele nicht auf mp3 als Audioformat setzen.

Der Schuldige war schnell (nach Wühlen in der alsa_user list und suse-amd64 list) gefunden: OSS

Unter Alsa gibt es die berühmt berüchtigte .asoundrc, die in meinem Fall ein Softwareresampling vornimmt und 44100 Hz Audios nach 48000 Hz samplet.
Verwendet man aber das alsa_oss Modul, dann wird nicht regesamplet und der Sound ist dahin.

So sieht beispielsweise meine .asoundrc aus:
Code:
 
pcm.dmixer 
{       
type dmix       
ipc_key 1024       
slave 
{       
pcm "hw:0,0"       
period_time 0       
period_size 1024       
buffer_size 8192       
rate 48000       
}       
bindings   
{    
0 0    1 1       
}       
}  
     
pcm.dsp0 
{       
type plug       
slave.pcm "dmixer"       
}       

pcm.!default 
{       
type plug       
slave.pcm "dmixer"       
}    

pcm.default 
{       
type plug       
slave.pcm "dmixer"    
}       

ctl.mixer0 
{       
type hw       
card 0       
}
Einfacher geht es, wenn man einen Soundserver verwendet, in meinem Fall arts. Da kann man im Kontrollzentrum -> sound & multimedia -> sound system das Resampling direkt eintragen.
Aber egal ob arts oder alsa, oss unterstützt so weit ich weiß kein Softwareresampling.

Wie mache ich jetzt aber meinen Anwendungen klar, dass sie arts oder alsa als Ausgabedevice verwenden sollen, anstatt oss?
Bei vielen (xmms, xine, amarok) kann man den Soundserver auswählen, aber es gibt auch Ausreißer, bei denen es nicht so klar ist.

MPlayer:
Startet man den MPlayer mit der Option -ao alsa, verwendet MPlayer Alsa als Ausgabetreiber und der Sound klingt endlich besser ;-)
Das Ganze kann man dauerhaft in die ~./mplayer/config eintragen
ao=alsa


Spiele:
Ich bin gerade dabei NWN zu spielen, welches einen eigenen Soundserver mitgeliefert hat (miles).
Zwar kann man im nwn Startscript alsa als Ausgabedevice exportieren, aber bei mir schlägt das trotzdem fehl und ich bekomme folgende Fehlermeldung:
ALSA lib pcm_dmix.c:868snd_pcm_dmix_open) unable to open slave
Um das zu umgehen habe ich den Eintrag aus dem nwn Skript wieder entfernt und folgendes eingetragen:

#!/bin/sh
# This script runs Neverwinter Nights from the current directory
export SDL_MOUSE_RELATIVE=0
export SDL_VIDEO_X11_DGAMOUSE=0
#export SDL_AUDIODRIVER=artsdsp
export __GL_FSAA_MODE=3
# If you do not wish to use the SDL library included in the package, remove
# ./lib from LD_LIBRARY_PATH
#export LD_LIBRARY_PATH=./lib:./miles:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib64/:./miles:$LD_LIBRARY_PATH

artsdsp -m ./nwmain $@


Damit bedient NWN das arts Ausgabemodul und der Sound wird von arts richtig regesamplet.
Da ich mir Doom3 bestellt und schon fleissig recherchiert habe, weiß ich, dass Doom3 auch oss als Ausgabe verwendet.
Der obige Trick soll laut diversen Foren auch mit Doom3 funktionieren.


Ich hoffe ich kann damit Einigen verzweifelten Soundgeplagten helfen, vor allem die, auf eine Bitrate von 48000 Hz festgelegt sind!


Gruß
Andy