PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sound für wine: Skripte für OSS und ALSA gleichzeitig auf einem System



shellfish
03.04.04, 19:47
Hallo, Forum.
Da wine ja anscheinend momentan ALSA nicht wirklich unterstützt (bei mir jedenfalls und nach meinen Recherchen auch bei vielen anderen Leuten), hab ich zwei Skripte geschrieben, die es mir ermöglichen, beide Soundsysteme auf einem System zu benutzen - ALSA für den Hausgebrauch und OSS für wine.
Das Ganze bezieht sich auf kernel-2.6.4.

Vorgehensweise:

Kompiliert die sowohl die OSS- als auch die ALSA-Module für den Kernel.
Dieses Skript muß beim Booten ausgeführt werden (bei Gentoo: in /etc/conf.d/local.start eintragen), um das OSS-Modul wieder zu entfernen, das automatisch geladen wurde (es sei denn ihr laßt beim Konfigurieren des Kernels die Option "Loadable Modul Support | Automatic kernel module loading" aus.


#!/bin/bash
#remove-oss

status=`/etc/init.d/alsasound status | cut -d " " -f 5`
module="i810_audio"


if [ $status = "started" ];
then
lsmod | grep $module
if [ $? -eq 0 ] ;
then
echo "Alsasound Status: $status"
echo "Entferne $module"
rmmod $module
echo $!
else
echo "Alsasoud Status: $status"
echo "$module ist nicht geladen"
fi
fi

Dieses Skript kann dazu benutzt werden, um vom einen zum anderen Soundsystem zu wechseln:


#! /bin/bash

#---------------#
# Beschreibung: #
#---------------#---------------#-------------------#
# switchsound: #
# Dieses Skript dient zum Wechseln von OSS zu ALSA. #
#---------------------------------------------------#

#-------------------------------------#
# Author: reyneke_at_web_dot_de #
#-------------------------------------#

#------------#
# Variablen: #
#------------#
alsastatus=`/etc/init.d/alsasound status | cut -d " " -f 5`
oss_mod="i810_audio"
version="0.9"
script="`basename $0`-$version"
#-------------#
# Funktionen: #
#-------------#

show_help() {
cat << FOO
$script: Dient zum sicheren Wechseln von OSS zu ALSA und zurück.

Optionen:
< show > - zeigt momentan benutztes Soundsystem an.
< oss > - wechselt von ALSA zu OSS oder startet OSS.
< alsa > - wechselt von OSS zu ALSA oder startet ALSA.
< > - das haben Sie ja schon rausgefunden.

Der Author reyneke_at_web_dot_de übernimmt keinerlei Haftung für Schäden,
die mittelbar, unmittelbar oder adäquat-kausal aus dem Gebrauch
des Skripts entstehen.

This software comes as is and without any warranty.
Licensed under the GPL
FOO
}

sound_check() {
( lsmod | grep $oss_mod ) > /dev/null
if [ $? -eq 0 ];
then
soundsys="oss"
elif [ $? -eq 1 ];
then
if [ $alsastatus = "started" ];
then
soundsys="alsa"
else
soundsys="none"
fi
fi
}

start_oss() {
case $soundsys in
"oss") echo "OSS läuft bereits"
;;
"alsa") /etc/init.d/alsasound stop
echo "Lade $oss_mod ..."
modprobe $oss_mod
if [ $? -eq 0 ];
then
echo "OK."
else
echo "Fehlgeschlagen."
fi
;;
"none") echo "Lade $oss_mod ..."
modprobe $oss_mod
if [ $? -eq 0 ];
then
echo "OK."
else
echo "Fehlgeschlagen."
fi
;;
esac
}

start_alsa() {
case $soundsys in
"alsa") echo "ALSA läuft bereits"
;;
"oss") /etc/init.d/alsasound start
echo "Entferne $oss_mod ..."
rmmod $oss_mod
if [ $? -eq 0 ];
then
echo "OK."
else
echo "Fehlgeschlagen."
fi
;;
"none") /etc/init.d/alsasound start
esac
}
#-------#
# Main: #
#-------#
sound_check
case $1 in
alsa) start_alsa
;;
oss) start_oss
;;
show) echo "Momentanes Sound-System: $soundsys."
;;
* | help) show_help
esac



Den Namen des OSS-Moduls müßt ihr natürlich an eure Hardware anpassen.
BUGS: Kann sein, daß nach dem Start von KDE alsasound nochmal "restarted" werden muß, um /dev/dsp zu erzeugen.

Wie gesagt, keine Garantie, daß es euer System nicht zerschießt oder ähnliches. Bei mir funktioniert's jedenfalls. Für Verbesserungsvorschläge bin ich jederzeit offen.

analyzer
04.04.04, 18:59
Du kannst doch auch einfach snd-pcm-oss und snd-seq-oss laden, oder wine mit aoss starten. ;)

shellfish
09.04.04, 00:01
Du kannst doch auch einfach snd-pcm-oss und snd-seq-oss laden, oder wine mit aoss starten. ;)
Naja, snd-pcm|seq-oss scheint bei mir nicht zu klappen, denn geladen sind sie.
aoss ist mir jetzt neu, wie und wo stell ich das denn ein?