view data/osc/sv-command @ 1833:21c792334c2e sensible-delimited-data-strings

Rewrite all the DelimitedDataString stuff so as to return vectors of individual cell strings rather than having the classes add the delimiters themselves. Rename accordingly to names based on StringExport. Take advantage of this in the CSV writer code so as to properly quote cells that contain delimiter characters.
author Chris Cannam
date Fri, 03 Apr 2020 17:11:05 +0100
parents 32e50b620a6c
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