Zitat von
f_m
Kurzum, ich bin mit der Qualität unter Alsa (mit der openSUSE Standardkonfiguration) unzufrieden - da ich mich bisher auch nicht intensiv bzw. kaum mit dem Soundsystem auseinandergesetzt habe weiß ich auch nicht so recht wo man da am Besten ansetzt.
..........
Da bist du nicht der Einzige...
Als ich mit meinem Betriebssystem auf ein neue HW umgestiegen bin hatte ich mit HDA Azali Ehemals (via8235) auch so meine Problemchen gehabt. Die HDA Karten sind nicht dmix Tauglich was das Problem um so ernster macht.
Früher hatte ich mit dmix eine Pulse Spur und zwei pcm.*equalizer Spuren. Damit konnte man mal so richtig tricksen und Qualität heraus kitzeln.
Es gibt Natürlich die Möglichkeit auch mit Pulse einen Vernünftigen Sound hin zu bekommen. Aber lass dir gesagt sein das macht ne Menge Testen und ein bisschen Sachverstand von C Sollte man haben. Es wird Dir nämlich auch das gleiche Passieren wie mir. Loops und Speicherzugriffs Fehler.
Lange rede kurzer Sinn...
Gehe wie folgt vor...
- Pulse abschalten und erst mal Alsa richtig Konfigurieren
- Bei SuSE die /etc/profile.d/pulseaudio.*sh Löschen oder Leeren
- Eine Neue /etc/profile.d/asound.sh Erstellen Damit sie nicht von Yast Überschrieben wird!
- Die Verwendung von pulesaudio in kmix verhindern! export KMIX_PULSEAUDIO_DISABLE=1
- Wir benötigen ladspa also export LADSPA_PATH=/usr/lib/ladspa
- systemd's Alsa Config Überschreiben export ALSA_CONFIG_PATH=/etc/asound.conf
- Das Verzeichnis /etc/alsa erstellen und Konfiguration für jede Karte hier ablegen. (Damit wird ein Überschreiben verhindert!)
Zuerst eine eigene /etc/modprobe.d/50-sound.conf und die Karten mit index (Das ist WICHTIG) erstellen.
Bei mehreren hda Karten muss grub mit ins Spiel kommen
grub CMD Eintrag
Code:
snd.slots=snd-hda-intel,snd-hda-intel
/etc/modprobe.d/50-sound.conf Beispiel
Code:
# Mainboard Soundkarte VT1818S (Intel HDA)
alias sound-slot-0 snd-card-0
alias snd-card-0 snd-hda-intel
# HDMI Ausgang der NVidia Karte
alias sound-slot-1 snd-card-1
alias snd-card-1 snd-hda-intel
options snd-hda-intel index=0,1 id=Karte0,Karte1
Wenn die Karten Sauber geladen werden und die Indexes Stimmen.
Siehe aplay -l dann eine Neue /etc/asound.conf erstellen
Ein Beispiel Inhalt!
Code:
####################################
## Hook
####################################
@hooks [
{
func load
files [
"/etc/alsa/00-card0.conf"
"/etc/alsa/01-sound.conf"
"/etc/alsa/04_lavcrate_plugin.conf"
"/etc/alsa/04_samplerate_plugin.conf"
"/etc/alsa/04_speexrate_plugin.conf"
"~/.asoundrc"
]
errors false
}
]
pcm.!default {
type plug
slave.pcm "audioausgabe"
}
<confdir:alsa.conf>
## EOF
Jetzt kommt der Trick
Du kannst mit Alsa ladspa verwenden. Das geht zwar auch mit Pulse aber ist so Schei... umgesetzt das ich es direkt wieder verworfen habe. Man kann keine Zeilenumbrüche verwenden
Wichtig - Vergiss die Konfiguration
Code:
pcm.pulse {type pulse}
ctl.pulse {type pulse }
Das wird mit der neuen Konfiguration einen Loop erzeugen der dein ganzes System aufhängt! - Warum wirst du Später verstehen
Erstelle eine Karten Konfiguration.
z.B.: /etc/alsa/00-card0.conf
Zur Erinnerung - der index wurde in der modprobe Konfiguration vergeben
Code:
pcm.Karte0 {
type hw
card 0
device 0
subdevice -1
}
ctl.Karte0 {
type hw
card 0
}
testen z.b: mit aplay -v -Dplug:Karte0 /usr/share/sounds/alsa/test.wav
Danach ein DMIX Plugin erstellen une einen Equalizer einbauen!
Code:
###################################################################
# Audio ueber Equalizer Ausgeben
###################################################################
## aplay -vv /usr/share/sounds/test/ibanez.wav
pcm.audiodmix {
type dmix
ipc_key 2009094 ## Muss Unique sein!
slave {
pcm Karte0 ## Auch wieder index
period_time 0
period_size 1024
buffer_size 8192
format S16_LE
rate 48000 ## Kann meine Karte 48000?
}
bindings {
0 0
1 1
}
slowptr true
}
ctl.audiodmix {
type hw
card 0
}
pcm.audioequalizer {
type ladspa
slave.pcm plug:audiodmix
path "/usr/lib/ladspa/"
playback_plugins {
0 {
id 2594
name "Equalizer"
label "Eq2x2"
filename "/usr/lib/ladspa/caps.so"
policy none
input {
controls {
0 -24 # 31 Hz @modified(2011/01/05) 48 > 24
1 -16 # 63 Hz @modified(2011/01/05) 24 > 16
2 -4 # 125 Hz @modified(2011/01/05) 8 > 4
3 -2 # 250 Hz
4 1 # 500 Hz @modified(2009/06/22) 0 > 1
5 2 # 1 kHz @modified(2009/06/22) 0 > 2
6 1 # 2 kHz @modified(2009/06/22) 0 > 1
7 0 # 4 kHz
8 0 # 8 kHz
9 0 # 16 kHz
}
}
}
}
}
## aplay -vDplug:audioausgabe /usr/share/sounds/test/ibanez.wav
pcm.audioausgabe { ## Siehe /etc/asound.conf
type asym
playback.pcm "audioequalizer"
}
Du kannst so viele Filter und Plugins Hintereinander hauen wie du Lust und Laune hast. Es gibt bei ladspa so um die 1000 Stück
Siehe /usr/bin/listplugins und /usr/bin/analyseplugin
z.B.:
Code:
analyseplugin caps.so Eq2x2
Wennn das alles funktioniert geht zu pulse!
Jetzt geht das Pulse Geraffel los
Pulse hat die Zwanghafte Eigenschaft dem Benutzer die Konfiguration ab zu nehmen.
Das kann einen zu Wutausbrüchen bringen! (Am besten vorher mal Tief einatmen)
Ziel ist es Pulse bei zu bringen nicht Direkt auf die Hardware zu zugreifen sondern die alsa:default zu verwenden!
Dafür müssen erst mal die pulse module entfernt werden die das ganze von vorn herein verhindern.
Dazu zählen die udev und hal Module etc. also Einträge wie "load-module module-udev-detect" .... Auskommentieren.
Auch unter pulse muss man jetzt einen index erstellen!
Dazu verwenden wir module-alsa-card
Ein "pacmd list-modules | grep alsa" wird zu diesem Zeitpunkt nicht Funktionieren. Deshalb hier die Infos:
Code:
argumente fuer module-alsa-card:
device_id="0"
name="PulseStandard"
card_name="default"
ignore_dB=no
deferred_volume=yes
Default setzen z.B.
Code:
set-default-sink PulseStandard
set-default-source PulseStandard
Es gibt so ein nettes Script namens start-pulseaudio-x11 was leider auch heftig in diese Konfiguration herein semmelt!
Abhilfe Mit dem gleichen Namen im eigenen bin Verzeichnis ablegen und darauf achten das die Variable PATH die richtige Reihenfolge aufweist!
PHP-Code:
#!/bin/sh
#
# Startscript fuer den pulse daemon
#
set -e
## Nur mit laufenden X-Server verwenden!
test -n "$DISPLAY" || exit 0
## Wenn vorhanden nicht starten!
test -f $HOME/.pulse/disabled && {
echo "pulseaudio server disabled by user configuration"
exit 0
}
## pactl
test -x /usr/bin/pactl || exit 1
test -f /etc/pulse/x11_publish.conf || exit 1
test -x /usr/bin/pulseaudio || exit 1
/usr/bin/pulseaudio --start "$@"
. /etc/pulse/x11_publish.conf
ctlbin=/usr/bin/pactl
${ctlbin} load-module module-x11-publish "display=$DISPLAY sink=$sink source=$source" > /dev/null || true
${ctlbin} load-module module-x11-cork-request "display=$DISPLAY" > /dev/null || true
## X-*-Greeter
test -n "$SESSION_MANAGER" || exit 0
${ctlbin} load-module module-x11-xsmp "display=$DISPLAY session_manager=$SESSION_MANAGER" > /dev/null || true
##eof
Die Variablen $sink und $source lege ich hier in /etc/pulse/x11_publish.conf ab. Die verweisen auf die Standards siehe set-default-sink und set-default-source.
Pulse und das Shared Memory Problem
Wenn man unter pulse Shared Memory aktivieren möchte wird es sehr Wahrscheinlich daran scheitern das die Gruppe audio keinen Schreibenden Zugriff auf /dev/shm hat.
Ein udev acl Script oder ein init Script kann helfen ...
Code:
## [PULSEAUDIO/JACK]
## FIXME Pulseaudio und jack können nicht auf Shared Memory zugreifen!
if [ -x /usr/bin/setfacl ] && [ -d /dev/shm ] ; then
echo -n "Setze Shared Memory Berechtigungen fuer pulseaudio und jackd..."
/usr/bin/setfacl -m group:audio:rwx /dev/shm
rc_status -v
fi
Es müssen zusätzlich noch die Limits verändert werden!
Weitere Infos zu Realtime http://www.linuxmusicians.com/viewtopic.php?f=10&t=2193
So das war es auf die Schnelle hoffe es hilft etwas.
Jedoch lass dir gesagt sein - Diese info ist nur Grob angekratzt. Es wird einiges an testen Kosten bist du deine gewünschte Qualität erreicht hast.
Lesezeichen