Tips And Tricks
From Open Sound System
Revision as of 19:55, 22 July 2008 by Cesium (Talk | contribs) (→Changing the default sound output used for /dev/dsp: - change name to something simpler)
Contents
Tips
Starting ossxmix minimized to tray on desktop startup
The '-b' option starts ossxmix in the background - minimized to tray if tray support is compiled in, iconfied window if not. The '-S' option prevents ossxmix from trying to use a system tray. ossxmix -Sb' will always start an iconified window.
- KDE: create a desktop shortcut in ~/.kde/Autostart with the command 'ossxmix -b'.
- Alternative: create a desktop shortcut in the same place, with the command "ossxmix -Sb'. Go to Applications->"Advance options" and select "Place in system tray".
- Gnome: go to Control center->Session->"Startup Programs" and add "ossxmix -b".
- X11 in general: edit the Xsession file. Make sure the tray program runs before ossxmix, or use the '-S' switch as well.
- See [1] for info on other environments.
Changing the default sound output
- Relink /dev/dsp to the desired /dev/oss/.../ device. The device node matching the desired sound output can be discovered by running 'ossinfo -a'. If OSS insists on recreating /dev/dsp, simply add the appropriate linking command (typically ln -sf /dev/oss/.../ /dev/dsp) to $OSSLIBDIR/soundon.user.
- Alternative: $OSSLIBDIR/etc/installed_drivers influences the order of sound cards set by ossdetect. By removing other devices or moving the desired sound card to the first place, followed by running 'ossdetect -v', the default device can be modified.
- The root directory $OSSLIBDIR can be found by checking /etc/oss.conf. It is typically /usr/lib/oss/.
Recording sound output of a program
There are several methods to achieve this:
- Many drivers offer a 'vol' mixer control. If this can be used as a recording source, than the current sound output will be recorded. Note that this is the mixed total of all sound played, not of a single program.
- ossrecord -ivol blah.wav
- Some drivers have a 'loopback' mixer control, which offers similar functionality.
- OSS wrappers can be used to record the output of a program. vsound is one such wrapper. (vsound doesn't handle output to /dev/oss/* device nodes, but all OSS-supporting programs are/can be easily made to output to /dev/dsp).
- vsound ossplay test.wav
- (This method doesn't work in build 1016) vmix loopback driver can record the output of a program. Set vmix_numloops to 1 (or more) in vmix.conf, and make the program output to the newly created /dev/oss/vmix0/loop0 device (after restaring OSS). Then record from that device. e.g.
- ossrecord -s48000 -b16 -c2 -d/dev/oss/vmix0/loop0 test.wav
- Perhaps audioloop driver can probably be used as well for this purpose? Man page says it needs a "server" and a "client", so if it can be used for this, it's only for a single program.
Using multimedia keys with OSS
- First, we should make the keys be able to start external scripts. This is outside the scope of this wiki, but is documented at [2] and at [3].
- Then, we can use scripts like the examples below:
lowervolume.sh:
#!/bin/sh CTRL=vmix0-vol VOL=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') VOL=$(echo $VOL | awk '{print $1-2}') ossmix $CTRL $VOL
raisevolume.sh:
#!/bin/sh CTRL=vmix0-vol VOL=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') VOL=$(echo $VOL | awk '{print $1+2}') ossmix $CTRL $VOL
mute.sh:
#!/bin/sh CTRL=vmix0-vol VOLUME=$(cat $HOME/.volume) if [ -z "$VOLUME" ]; then VOLUME=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') ossmix $CTRL 0 echo $VOLUME > $HOME/.volume else ossmix $CTRL $VOLUME > $HOME/.volume fi
This will restore the previous volume levels when unmuting. Issue a:
touch $HOME/.volume
before using the first time.
You may wish to modify a different mixer control than vmix0-vol. In that case, you will need to change the value of CTRL above.