annotate data/osc/sv-command @ 1412:b7a9edee85e0 scale-ticks

Change loop to something that feels more correct, though it makes no difference to the tests here. More tests, one failing.
author Chris Cannam
date Thu, 04 May 2017 08:32:41 +0100
parents 32e50b620a6c
children
rev   line source
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