lbajardsilogic@0: #!/bin/sh lbajardsilogic@0: # lbajardsilogic@0: # A very simple command shell for Sonic Visualiser. lbajardsilogic@0: # lbajardsilogic@0: # This provides a wrapper for the sv-osc-send program, which is a lbajardsilogic@0: # generic OSC sending program (not specific to SV, despite its name). lbajardsilogic@0: # This script attempts to guess the OSC port number for an SV lbajardsilogic@0: # process running on the local host, and then composes a method name lbajardsilogic@0: # and arguments into a complete OSC call. lbajardsilogic@0: # lbajardsilogic@0: # You can either run this with the method and its arguments on the lbajardsilogic@0: # command line, e.g. "sv-command set layer Frequency-Scale Log", or lbajardsilogic@0: # you can provide a series of method + argument commands on stdin. lbajardsilogic@0: # lbajardsilogic@0: # Unless you use the -q option, this script will echo the OSC URL lbajardsilogic@0: # and arguments that it is sending for each command. lbajardsilogic@0: # lbajardsilogic@0: # Note that the method and arguments may not contain spaces. lbajardsilogic@0: # lbajardsilogic@0: # Chris Cannam, Nov 2006 lbajardsilogic@0: lbajardsilogic@0: quiet= lbajardsilogic@0: if [ "$1" = "-q" ]; then lbajardsilogic@0: quiet=true; shift; lbajardsilogic@0: fi lbajardsilogic@0: lbajardsilogic@0: # The yucky bit lbajardsilogic@0: lbajardsilogic@0: port=`lsof -c sonic- | \ lbajardsilogic@0: grep UDP | \ lbajardsilogic@0: sed -e 's/^.*[^0-9]\([0-9][0-9]*\) *$/\1/' | \ lbajardsilogic@0: grep -v ' ' | \ lbajardsilogic@0: head -1 ` lbajardsilogic@0: lbajardsilogic@0: host=127.0.0.1 lbajardsilogic@0: scheme=osc.udp lbajardsilogic@0: lbajardsilogic@0: if [ -z "$port" ]; then lbajardsilogic@0: echo "Sonic Visualiser OSC port not found" lbajardsilogic@0: exit 1 lbajardsilogic@0: fi lbajardsilogic@0: lbajardsilogic@0: if [ -n "$1" ]; then lbajardsilogic@0: command=$1; shift lbajardsilogic@0: [ -z "$quiet" ] && echo "$scheme://$host:$port/$command" "$@" lbajardsilogic@0: sv-osc-send "$scheme://$host:$port/$command" "$@" lbajardsilogic@0: else lbajardsilogic@0: while read command a1 a2 a3 a4 a5; do lbajardsilogic@0: [ -z "$command" ] && continue lbajardsilogic@0: [ -z "$quiet" ] && echo "$scheme://$host:$port/$command" $a1 $a2 $a3 $a4 $a5 lbajardsilogic@0: sv-osc-send "$scheme://$host:$port/$command" $a1 $a2 $a3 $a4 $a5 lbajardsilogic@0: done lbajardsilogic@0: fi lbajardsilogic@0: lbajardsilogic@0: exit 0