annotate README.OSC @ 1316:90f582ebd232 piper

Update to use listargs variant of Piper stuff (so that the plugin winnowing feature from the penultimate commit actually works)
author Chris Cannam
date Thu, 03 Nov 2016 15:38:17 +0000
parents 80eae4eb6cc8
children afe620d017d7
rev   line source
Chris@404 1
Chris@404 2 OSC control of Sonic Visualiser
Chris@404 3 ===============================
Chris@404 4
Chris@404 5 Sonic Visualiser can be controlled remotely using the Open Sound
Chris@404 6 Control protocol. This facility requires Steve Harris's liblo (Lite
Chris@404 7 OSC) library to have been available when Sonic Visualiser was built.
Chris@404 8
Chris@404 9 Sonic Visualiser opens a single OSC port on startup. The URL of this
Chris@404 10 port is printed to standard output on startup, or can be read from the
Chris@404 11 About box on the Help menu.
Chris@404 12
Chris@404 13 OSC commands accepted by Sonic Visualiser take the form:
Chris@404 14
Chris@404 15 <scheme>://<host>:<port>/<method> [<arg> ...]
Chris@404 16
Chris@404 17 For example, "osc.udp://localhost:12654/play 2.0" will play the
Chris@404 18 current session from time 2.0 seconds.
Chris@404 19
Chris@404 20 Methods that manipulate panes or layers act on the currently selected
Chris@404 21 pane or layer. Use the setcurrent method to choose the right target
Chris@404 22 for subsequent such methods.
Chris@404 23
Chris@495 24 If you need an OSC client, there is a small program in the svcore
Chris@495 25 library at
Chris@495 26
Chris@495 27 svcore/data/osc/sv-osc-send.c
Chris@495 28
Chris@495 29 that sends an OSC method and arguments to a given URL -- this is not
Chris@495 30 specific to SV but will work with it. To compile that program you
Chris@495 31 should only have to run
Chris@495 32
Chris@495 33 $ gcc sv-osc-send.c -o sv-osc-send -llo
Chris@495 34
Chris@495 35 provided you have liblo installed.
Chris@495 36
Chris@495 37 Then there is a small shell script in the same directory, called
Chris@495 38 sv-command, that provides a basic command shell for Sonic Visualiser.
Chris@495 39 Start SV first, then sv-command should find its OSC port from the
Chris@495 40 system process table when you start it.
Chris@495 41 For example:
Chris@495 42
Chris@495 43 $ PATH=.:$PATH ./sv-command # Set PATH so it can find sv-osc-send
Chris@495 44 /open snare_hex.wav
Chris@495 45 /add spectrogram
Chris@495 46 /set layer Colour Sunset
Chris@495 47 /play
Chris@495 48 /quit
Chris@495 49 $
Chris@404 50
Chris@404 51
Chris@404 52 OSC methods available
Chris@404 53 =====================
Chris@404 54
Chris@404 55 Main window methods
Chris@404 56 -------------------
Chris@404 57
Chris@404 58 /open <filename>
Chris@404 59
Chris@404 60 Open a new file (of type determined by Sonic Visualiser).
Chris@404 61 If it is an audio file, use it to replace the existing main
Chris@404 62 audio file (if any).
Chris@404 63
Chris@404 64 /openadditional <filename>
Chris@404 65
Chris@404 66 Open a new file. If it is an audio file, open it in a new
Chris@404 67 pane in addition to the existing audio file (if any).
Chris@404 68
Chris@404 69 /recent <n>
Chris@404 70 /last
Chris@404 71
Chris@404 72 Open the <n>'th most recent file from the Recent Files menu,
Chris@404 73 counting from 1 for the most recent file opened. "last" is a
Chris@404 74 synonym for "recent 1".
Chris@404 75
Chris@404 76 /save <filename>
Chris@404 77
Chris@404 78 Save the current session in <filename> as an SV session file.
Chris@404 79 This action will try to fail rather than overwrite an existing
Chris@404 80 file, but you probably shouldn't rely on that.
Chris@404 81
Chris@404 82 /export <filename>
Chris@404 83
Chris@404 84 Export the (first) selected area of the main audio file
Chris@404 85 (or all of it, if there is no selection) in <filename>, as a
Chris@404 86 WAV file. This action will try to fail rather than overwrite
Chris@404 87 an existing file, but you probably shouldn't rely on that.
Chris@404 88
Chris@404 89 /jump <t>
Chris@404 90 /jump end
Chris@404 91 /jump selection
Chris@404 92
Chris@404 93 Jump the playback position to time <t> (in seconds); or to
Chris@404 94 the end of the file; or to the start of the current selection.
Chris@404 95
Chris@404 96 /play
Chris@404 97 /play <t>
Chris@404 98 /play selection
Chris@404 99
Chris@404 100 Start playback. If a time <t> is given, start from that time
Chris@404 101 in seconds. If the word "selection" is given instead, play
Chris@404 102 the current selection.
Chris@404 103
Chris@404 104 /stop
Chris@404 105
Chris@404 106 Stop playback.
Chris@404 107
Chris@404 108 /loop on
Chris@404 109 /loop off
Chris@404 110
Chris@404 111 Switch playback loop mode on or off.
Chris@404 112
Chris@404 113 /select <t0> <t1>
Chris@404 114 /select all
Chris@404 115 /select none
Chris@404 116
Chris@404 117 Select the region from times <t0> to <t1> in seconds; or select
Chris@404 118 the whole file; or clear the selection. If there is a layer
Chris@404 119 selected that can be used as a snap guide for the selection, then
Chris@404 120 the selection will be snapped to it (in the same manner as when
Chris@404 121 making selections interactively).
Chris@404 122
Chris@404 123 /addselect <t0> <t1>
Chris@404 124
Chris@404 125 Make an additional selection (leaving any existing selection
Chris@404 126 in place) from times <t0> to <t1> in seconds.
Chris@404 127
Chris@404 128 /undo
Chris@404 129 /redo
Chris@404 130
Chris@404 131 Undo the last editing operation; redo the last undone operation.
Chris@404 132 Note that most of the classic editing operations (copy and paste
Chris@404 133 etc) are not controllable via OSC, but undo may still be useful
Chris@404 134 because Sonic Visualiser considers actions such as adding a pane
Chris@404 135 to be undoable editing operations as well.
Chris@404 136
Chris@404 137 /add <layertype>
Chris@404 138 /add <layertype> <channel>
Chris@404 139
Chris@404 140 Add a new pane containing a layer of the given type, based on
Chris@404 141 the main audio file. If no <channel> is specified, use all
Chris@404 142 available channels. Useful <layertype>s are:
Chris@404 143
Chris@404 144 waveform
Chris@404 145 spectrogram
Chris@404 146 spectrum
Chris@404 147 timeruler
Chris@404 148
Chris@404 149 The following <layertype>s are less useful, because they create
Chris@404 150 empty layers which there is currently no OSC support for editing:
Chris@404 151
Chris@404 152 timeinstants
Chris@404 153 timevalues
Chris@404 154 notes
Chris@404 155 text
Chris@404 156 colour3dplot
Chris@404 157
Chris@404 158 /set <control> <value>
Chris@404 159 /set pane <control> <value>
Chris@404 160 /set layer <control> <value>
Chris@404 161
Chris@404 162 Set a main window control; a property of the current pane; or a
Chris@404 163 property of the current layer.
Chris@404 164
Chris@404 165 Accepted main window <control>s are:
Chris@404 166
Chris@404 167 gain
Chris@404 168 whose values are linear multipliers (i.e. 1.0 == unity gain).
Chris@404 169
Chris@404 170 speedup
Chris@404 171 takes a value of a percentage increase in playback
Chris@404 172 speed, so 0 is the default playback speed, 100 sets double
Chris@404 173 the default speed, and -100 sets half the default speed
Chris@404 174 (yes, I know, it's nonsense, sorry).
Chris@404 175
Chris@404 176 overlays
Chris@404 177 controls the verbosity level of the text overlays on
Chris@404 178 each pane, from 0 (everything off) to 2 (everything on).
Chris@404 179
Chris@404 180 zoomwheels
Chris@404 181 controls whether the zoom wheels are displayed (1) or not (0).
Chris@404 182
Chris@404 183 propertyboxes
Chris@404 184 controls whether the property boxes are displayed (1) or not (0).
Chris@404 185
Chris@404 186 For pane and layer properties, the control name is the displayed
Chris@404 187 name of the given property (though you may use "-" or "_" in place
Chris@404 188 of any spaces in the name if it's easier for you). The value may
Chris@404 189 be the displayed value or underlying integer for the property.
Chris@404 190
Chris@404 191 Some examples:
Chris@404 192
Chris@404 193 /set pane Global-Scroll off
Chris@404 194 /set pane Follow_Playback Scroll
Chris@404 195 /set layer Colour Blue
Chris@404 196 /set layer Scale-Units dB
Chris@404 197 /set layer Frequency-Scale Log
Chris@404 198
Chris@404 199 Note that while you can use "-" or "_" in place of spaces in the
Chris@404 200 property name, you cannot currently do so in the value text. If
Chris@404 201 this is a problem for you, you might be able to set the value
Chris@404 202 as an integer instead (all layer properties can be set this way).
Chris@404 203
Chris@404 204 /setcurrent <pane>
Chris@404 205 /setcurrent <pane> <layer>
Chris@404 206
Chris@404 207 Make the given <pane> (a number counting from 1 for the topmost
Chris@404 208 pane) and optionally the given <layer> on that pane (a number
Chris@404 209 counting from 1 for the "frontmost" layer) the current pane and
Chris@404 210 layer for subsequent pane and layer operations.
Chris@404 211
Chris@404 212 /delete pane
Chris@404 213 /delete layer
Chris@404 214
Chris@404 215 Delete the current pane or layer.
Chris@404 216
Chris@404 217 /zoom <level>
Chris@404 218 /zoom in
Chris@404 219 /zoom out
Chris@404 220 /zoom default
Chris@404 221
Chris@404 222 Zoom to a given zoom <level>, given in audio sample frames per
Chris@404 223 pixel; or zoom in or out one step from the current level; or
Chris@404 224 return to the default zoom level. This method acts on the
Chris@404 225 current pane (it only affects all panes if set to Global Zoom,
Chris@404 226 which is the default).
Chris@404 227
Chris@404 228 /zoomvertical <min> <max>
Chris@404 229 /zoomvertical in
Chris@404 230 /zoomvertical out
Chris@404 231 /zoomvertical default
Chris@404 232
Chris@404 233 Change the vertical zoom and origin so as to show the value
Chris@404 234 range from <min> to <max> in the vertical scale; or zoom in or
Chris@404 235 out vertically; or return to the default vertical zoom level.
Chris@404 236 The effect of this method is heavily dependent on the current
Chris@404 237 layer.
Chris@404 238
Chris@404 239 /transform <name>
Chris@404 240
Chris@404 241 Transform the current main audio file using the named transform.
Chris@404 242 Transforms are named according to the scheme
Chris@404 243
Chris@404 244 type:source:plugin:output
Chris@404 245
Chris@404 246 For example, the percussion onset detector from the Vamp example
Chris@404 247 plugin set can be invoked via
Chris@404 248
Chris@404 249 /transform vamp:vamp-example-plugins:percussiononsets:onsets
Chris@404 250
Chris@404 251 If the output is omitted, the first is used. Note that you
Chris@404 252 need to use the plugin and output name, not description: in
Chris@404 253 this case "percussiononsets" rather than "Simple Percussion
Chris@404 254 Onset Detector".
Chris@404 255
Chris@404 256 There is not yet any way to run a transform via OSC on any but
Chris@404 257 the main audio file, nor with any but its default parameters,
Chris@404 258 processing block/step size, or channel selection.
Chris@404 259
Chris@404 260 /resize <w> <h>
Chris@404 261 /resize pane <h>
Chris@404 262
Chris@404 263 Resize the main window to width <w> and height <h> (if the
Chris@404 264 window system permits); resize the current pane to height <h>
Chris@404 265 if possible (!!! not yet working).
Chris@404 266
Chris@404 267 /quit
Chris@404 268
Chris@404 269 Exit the program abruptly without saving.
Chris@404 270
Chris@404 271 Handy things still missing from the OSC interface include:
Chris@404 272
Chris@404 273 * the ability to run transforms with non-default parameters or
Chris@404 274 starting from different source models
Chris@404 275 * the ability to add layers to a pane (without transform)
Chris@404 276 * the ability to add panes (and layers) showing any but the
Chris@404 277 main model
Chris@404 278 * the ability to set play parameters on a layer/model and show/hide it
Chris@404 279 * the ability to set the vertical zoom range (vital for spectrogram)
Chris@404 280 * the ability to import and export layers
Chris@404 281 * a working pane resize
Chris@404 282 * quick shortcuts to Melodic Range Spectrogram, Peak Frequency Spectrogram
Chris@404 283 * the ability to rename a layer
Chris@404 284
Chris@404 285