view data/osc/sv-command @ 320:32e50b620a6c

* Move some things around to facilitate plundering libraries for other applications without needing to duplicate so much code. sv/osc -> data/osc sv/audioio -> audioio sv/transform -> plugin/transform sv/document -> document (will rename to framework in next commit)
author Chris Cannam
date Wed, 24 Oct 2007 16:34:31 +0000
parents
children
line wrap: on
line source
#!/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