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