1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#!/bin/sh
#
# A very simple command shell for Sonic Visualiser.
#
# This provides a wrapper for the sv-osc-send program, which is a
# generic OSC sending program (not specific to SV, despite its name).
# This script attempts to guess the OSC port number for an SV
# process running on the local host, and then composes a method name
# and arguments into a complete OSC call.
#
# You can either run this with the method and its arguments on the
# command line, e.g. "sv-command set layer Frequency-Scale Log", or
# you can provide a series of method + argument commands on stdin.
#
# Unless you use the -q option, this script will echo the OSC URL
# and arguments that it is sending for each command.
#
# Note that the method and arguments may not contain spaces.
#
# Chris Cannam, Nov 2006
quiet=
if [ "$1" = "-q" ]; then
quiet=true; shift;
fi
# The yucky bit
port=`lsof -c sonic- | \
grep UDP | \
sed -e 's/^.*[^0-9]\([0-9][0-9]*\) *$/\1/' | \
grep -v ' ' | \
head -1 `
host=127.0.0.1
scheme=osc.udp
if [ -z "$port" ]; then
echo "Sonic Visualiser OSC port not found"
exit 1
fi
if [ -n "$1" ]; then
command=$1; shift
[ -z "$quiet" ] && echo "$scheme://$host:$port/$command" "$@"
sv-osc-send "$scheme://$host:$port/$command" "$@"
else
while read command a1 a2 a3 a4 a5; do
[ -z "$command" ] && continue
[ -z "$quiet" ] && echo "$scheme://$host:$port/$command" $a1 $a2 $a3 $a4 $a5
sv-osc-send "$scheme://$host:$port/$command" $a1 $a2 $a3 $a4 $a5
done
fi
exit 0
|