Difference between revisions of "Tips And Tricks"
From Open Sound System
m (→Recording sound output of a program) |
(→Recording sound output of a program) |
||
Line 16: | Line 16: | ||
=== Recording sound output of a program === | === Recording sound output of a program === | ||
There are several methods to achieve this: | There are several methods to achieve this: | ||
− | # Many drivers offer a 'vol' mixer control. If 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 | #: 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). | # 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 | ||
Line 23: | Line 24: | ||
#: ossplay test.wav -d/dev/oss/vmix0/loop0 & | #: ossplay test.wav -d/dev/oss/vmix0/loop0 & | ||
#: ossrecord test2.wav -d/dev/oss/vmix0/loop0 | #: ossrecord test2.wav -d/dev/oss/vmix0/loop0 | ||
+ | #* audioloop driver can probably be used as well for this purpose. | ||
=== Using multimedia keys with OSS === | === Using multimedia keys with OSS === |
Revision as of 18:59, 11 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 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.
- ossplay test.wav -d/dev/oss/vmix0/loop0 &
- ossrecord test2.wav -d/dev/oss/vmix0/loop0
- audioloop driver can probably be used as well for this purpose.
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.