Difference between revisions of "Tips And Tricks"
From Open Sound System
m (→Changing the default sound output used for /dev/dsp) |
(Added multimedia key idea from Archlinux wiki page for OSS) |
||
Line 18: | Line 18: | ||
# Many drivers offer a 'vol' mixer control. If this is 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. | # Many drivers offer a 'vol' mixer control. If this is 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 | #: ossrecord -ivol blah.wav | ||
− | |||
− | |||
− | |||
# 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). | # 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 | #: 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. Then record from that device. e.g. | ||
+ | #: ossplay test.wav -d/dev/oss/vmix0/loop0 & | ||
+ | #: ossrecord test2.wav -d/dev/oss/vmix0/loop0 | ||
+ | |||
+ | === Using your 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 [http://gentoo-wiki.com/HOWTO_Use_Multimedia_Keys] and at [http://wiki.archlinux.org/index.php/Extra_Keyboard_Keys]. | ||
+ | # Then, we can use scripts like the examples below: | ||
+ | lowervolume.sh: | ||
+ | CTRL=vmix0-vol | ||
+ | VOL=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') | ||
+ | VOL=$(echo $VOL-2 | bc) | ||
+ | ossmix $CTRL $VOL | ||
+ | |||
+ | raisevolume.sh: | ||
+ | CTRL=vmix0-vol | ||
+ | VOL=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') | ||
+ | VOL=$(echo $VOL+2 | bc) | ||
+ | ossmix $CTRL $VOL | ||
+ | |||
+ | mute.sh: | ||
+ | #!/bin/bash | ||
+ | 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. |
Revision as of 20:32, 1 July 2008
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 used for /dev/dsp
- 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 is 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
- 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. Then record from that device. e.g.
- ossplay test.wav -d/dev/oss/vmix0/loop0 &
- ossrecord test2.wav -d/dev/oss/vmix0/loop0
Using your 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:
CTRL=vmix0-vol VOL=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') VOL=$(echo $VOL-2 | bc) ossmix $CTRL $VOL
raisevolume.sh:
CTRL=vmix0-vol VOL=$(ossmix | grep $CTRL | awk '{print $4}' | awk -F : '{print $1}') VOL=$(echo $VOL+2 | bc) ossmix $CTRL $VOL
mute.sh:
#!/bin/bash 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.