Austrian Linux Forum

Einrichten eines Softwaremixers

Kategorien: Linux How-Tos
0 Antworten
theEdge
theEdge am Freitag, 1. Oktober 2004 um 17:53
Hmm, digitale Milkshakes? (fader witz, ich gebs zu) Ne, Audiomixing! Wasn das? Nun ja, belegt eine Ressource die Audiokarte (zb die Audiowiedergabe), so ist es für andere Programme nicht möglich, auf die Hardware zuzugreifen, es sei denn, man besitzt einen Hardwaremixer. Besitzt man jedoch keinen Hardwaremixer, so muss man sich mit einem Softwaremixer abhilfe schafen, der auf Softwareebene die einzelnen Programme "mixt", sprich jedem Programm eine gewisse Zeit zuweist, in der es das Hardwaredevice benutzen darf. Also, los gehts. Anfangs sei erwähnt, dass alles auf [url=http://www.pseudorandom.co.uk/2004/debian/alsa/]dieser[/url] Seite basiert, daher auf Debian optimiert ist... Nix desto trotz, faung ma au... Datei: /etc/asound.conf [code]pcm.swmix { type dmix # any unique number here ipc_key 313 slave { pcm "hw:0,0" # these settings may require tweaking for different sound # cards; this is for the Powerbook's built-in snd-powermac # probably not required at all for well-behaved cards... period_time 0 period_size 1024 buffer_size 8192 # mentioning rate fixes wrong speed/pitch in native ALSA stuff rate 44100 } } # this makes OSS emulation via aoss default to using dmix, allegedly pcm.dsp0 { type plug slave.pcm "swmix" } ctl.mixer0 { type hw card 0 } # this makes native ALSA apps default to using dmix pcm.!default { type plug slave.pcm "swmix" } [/code] Interessanterweise funktionierts auch, wenn man die Datei .asoundrc nennt und ins Homeverzeichnis stellt (~/.asoundrc) Datei: /etc/alsa/modutils/0.9 oder /etc/alsa/modutils/1.0 [code]alias char-major-116 snd alias char-major-14 soundcore options snd major=116 cards_limit=4 device_mode=0660 device_gid=29 device_uid=0 # or if you use devfs (gid=29 is 'audio' on Debian) # options snd major=116 cards_limit=4 device_mode=0660 device_gid=29 device_uid=0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss # my Powerbook has a built-in 'Snapper' sound chip (snd-powermac) and nothing # else. Replace snd-powermac as appropriate alias snd-card-0 snd-powermac alias snd-card-1 off alias snd-card-2 off alias snd-card-3 off alias snd-card-4 off alias snd-card-5 off alias snd-card-6 off alias snd-card-7 off alias sound-slot-0 snd-card-0 alias sound-slot-1 off alias sound-slot-2 off alias sound-slot-3 off alias sound-slot-4 off alias sound-slot-5 off alias sound-slot-6 off alias sound-slot-7 off [/code] und in der /etc/libaeo.conf wird folgendes reingeschrieben [code]default_driver=alsa09[/code] Damit wird auf den nun konfigurierten Treiber verwiesen Anund für sich sollte es bereits funktioneren (auch ohne alsa restart (/etc/init.d/alsa restart)), optional steht aber noch folgendes Script zur Verfügung, welches die Ausgabe auf ein Gerät beschränkt (zb. Kopfhörer, Boxen, ...) ~/bin/snd [code]#!/bin/sh case "$1" in # Internal speaker ("PC speaker") i*|p*|s*) /usr/sbin/alsactl restore amixer sset Master off amixer sset 'PC Speaker' on amixer sset Headphone off amixer sset Master on ;; # External speakers or headphones e*|h*) /usr/sbin/alsactl restore amixer sset Master off amixer sset 'PC Speaker' off amixer sset Headphone on amixer sset Master on ;; # Mute (neither) m*|n*) amixer sset Master off amixer sset 'PC Speaker' off amixer sset Headphone off ;; # Both? currently seems to be just the headphones b*) amixer sset Master off amixer sset 'PC Speaker' on amixer sset Headphone on amixer sset Master on ;; *) echo "usage: snd {internal|external|both|mute}" exit 1 ;; esac[/code] EDIT: Interessanterweise muss man nach nem reboot das script ausführen, sonst funktionierts nicht. beim erstmaligen einrichten funktionierts aber ohne...

Kommentare