requesting script
Geoff Shang
gshang at uq.net.au
Wed Jan 16 10:20:28 EST 2002
Hi:
If you have play, it's the same script. It obviously determins how it was
called.
If you don't have play, please find attached. Just in case anyone else is
in your boat.
Geoff.
-------------- next part --------------
#!/bin/sh
# Shell script to play/record sound files to/from unix style sound devices.
# Should auto detect most supported systems.
#
# Originally developed by Chris Bagwell (cbagwell at sprynet.com)
#
# TODO: Put each set of fopts and filenames on an array and then
# play each filename back with the given effect.h
#
# Change History:
#
# Major updates have been supplied by Kjetil Torgrim Homme and
# Kirk Goff.
# Set up path so that it can find Sox if user's path doesn't already
# include it.
PATH=$PATH:/usr/local/bin
program_name=`basename $0`
program_version="2.0"
if [ -z "$1" ]; then
echo "\
$program_name: too few arguments
Try \`$program_name --help' for more information." 1>&2
exit 1
fi
[ -t 1 ] || silent=1 # don't show anything if stdout isn't a tty
version()
{
echo "$program_name (sox) $program_version"
exit 0
}
help()
{
echo "\
Usage: $program_name [OPTION]... FILE [EFFECT]...
Play/record sound files to/from unix style sound devices.
-c, --channels=CHANNELS specifies the number of sound channels in FILE
-d, --device=DEVICE use DEVICE for input/output
-f, --format=FORMAT specifies bit format of sample
FORMAT is either s, u, U, A, a, or g
-r, --rate=RATE sample rate in hertz of FILE
-s, --size=SIZE interpret size of sample
SIZE is either b, w, l, f, d, or D
-t, --type=TYPE specifies file format of FILE
-v, --volume=VOLUME change amplitude
-x, --xinu reverse bit order of sample
(only works with 16-bit and 32-bit integer data)
--file next argument is FILE
-h, --help display this help and exit
--version output version information and exit
--silent do not display filename of currently played file
EFFECTs are one or more of the following: avg, band, chorus, copy, cut,
deemph, echo, echos, flanger, highp, lowp, map, mask, phaser, pick, polyphase
rate, resample, reverb, reverse, split, stat, vibro.
See sox man page for detailed information on supported file types, data
formats, and effect options."
exit 0
}
count=0
# loop over arguments
while [ $# -ne 0 ]; do
case "$1" in
avg|band|chorus|copy|cut|deemph|echo|echos|flanger|highp|lowp|map|mask|phaser|pick|polyphase|rate|resample|reverb|reverse|split|stat|vibro)
effects="$@"
break
;;
-c)
shift
fopts="$fopts -c $1"
;;
--channels=*)
fopts="$fopts -c `echo $1 | sed 's/.*=//'`"
;;
-d)
shift
device="$1"
;;
--device=*)
device=`echo $1 | sed 's/.*=//'`
;;
-f)
shift
fopts="$fopts -$1"
;;
--format=*)
fopts="$fopts -`echo $1 | sed 's/.*=//'`"
;;
-r)
shift
fopts="$fopts -r $1"
;;
--rate=*)
fopts="$fopts -r `echo $1 | sed 's/.*=//'`"
;;
-s)
shift
fopts="$fopts -$1"
;;
--size=*)
fopts="$fopts -`echo $1 | sed 's/.*=//'`"
;;
-t)
shift
fopts="$fopts -t $1"
;;
--type=*)
fopts="$fopts -t `echo $1 | sed 's/.*=//'`"
;;
-v)
shift
volume="-v $1"
;;
--volume=*)
volume="-v `echo $1 | sed 's/.*=//'`"
;;
-x|--xinu)
fopts="$fopts -x"
;;
--file)
shift
if [ -z "$filename_0" ]; then
filename_0="$1"
else
echo "Filename already given. Ignoring extra name: $1" 1>&2
fi
;;
-h)
help
;;
--help)
help
;;
--version)
version
;;
--silent)
silent=1
;;
-)
eval filename_$count=-
count=$(($count+1))
;;
-*)
fopts="$fopts $1"
;;
*)
eval filename_$count='"$1"'
count=$(($count+1))
;;
esac
shift
done
arch=`uname -s`
case $arch in
SunOS)
case `arch -k` in
# Use below for older Sun audio hardware
sun4|sun4c|sun4d)
arch_defines="-t sunau -U -c 1"
;;
# Use below for newer Sun audio hardware that supports stereo linear
*)
arch_defines="-t sunau -w -s"
;;
esac
if [ -z "$device" ]; then
device="/dev/audio"
fi
;;
Linux|FreeBSD)
arch_defines="-t ossdsp"
if [ -z "$device" ]; then
device="/dev/dsp"
fi
;;
esac
# If name is "rec" then record else assume user is wanting to play
# a sound file.
if [ "$program_name" = "rec" ]; then
echo "Send break (control-c) to end recording"
sox $volume $arch_defines $fopts $device "$filename_0" $effects
else
i=0
while test $i -lt $count; do
if test -z "$silent"; then
eval 'echo "playing $filename_'$i'"'
fi
eval 'sox $volume $fopts "$filename_'$i'" $arch_defines $device $effects'
i=$(($i+1))
done
fi
More information about the Speakup
mailing list