lbajardsilogic@0: lbajardsilogic@42: OSC control of Sound Access lbajardsilogic@0: =============================== lbajardsilogic@0: lbajardsilogic@42: Sound Access can be controlled remotely using the Open Sound lbajardsilogic@0: Control protocol. This facility requires Steve Harris's liblo (Lite lbajardsilogic@42: OSC) library to have been available when Sound Access was built. lbajardsilogic@0: lbajardsilogic@42: Sound Access opens a single OSC port on startup. The URL of this lbajardsilogic@0: port is printed to standard output on startup, or can be read from the lbajardsilogic@0: About box on the Help menu. lbajardsilogic@0: lbajardsilogic@42: OSC commands accepted by Sound Access take the form: lbajardsilogic@0: lbajardsilogic@0: ://:/ [ ...] lbajardsilogic@0: lbajardsilogic@0: For example, "osc.udp://localhost:12654/play 2.0" will play the lbajardsilogic@0: current session from time 2.0 seconds. lbajardsilogic@0: lbajardsilogic@0: Methods that manipulate panes or layers act on the currently selected lbajardsilogic@0: pane or layer. Use the setcurrent method to choose the right target lbajardsilogic@0: for subsequent such methods. lbajardsilogic@0: lbajardsilogic@0: There is a small program sv/osc/sv-osc-send.c that sends an OSC method lbajardsilogic@0: and arguments to a given URL, and a small shell script sv/osc/sv-command lbajardsilogic@42: that provides a basic command shell for Sound Access. lbajardsilogic@0: lbajardsilogic@0: lbajardsilogic@0: OSC methods available lbajardsilogic@0: ===================== lbajardsilogic@0: lbajardsilogic@0: Main window methods lbajardsilogic@0: ------------------- lbajardsilogic@0: lbajardsilogic@0: /open lbajardsilogic@0: lbajardsilogic@42: Open a new file (of type determined by Sound Access). lbajardsilogic@0: If it is an audio file, use it to replace the existing main lbajardsilogic@0: audio file (if any). lbajardsilogic@0: lbajardsilogic@0: /openadditional lbajardsilogic@0: lbajardsilogic@0: Open a new file. If it is an audio file, open it in a new lbajardsilogic@0: pane in addition to the existing audio file (if any). lbajardsilogic@0: lbajardsilogic@0: /recent lbajardsilogic@0: /last lbajardsilogic@0: lbajardsilogic@0: Open the 'th most recent file from the Recent Files menu, lbajardsilogic@0: counting from 1 for the most recent file opened. "last" is a lbajardsilogic@0: synonym for "recent 1". lbajardsilogic@0: lbajardsilogic@0: /save lbajardsilogic@0: lbajardsilogic@0: Save the current session in as an SV session file. lbajardsilogic@0: This action will try to fail rather than overwrite an existing lbajardsilogic@0: file, but you probably shouldn't rely on that. lbajardsilogic@0: lbajardsilogic@0: /export lbajardsilogic@0: lbajardsilogic@0: Export the (first) selected area of the main audio file lbajardsilogic@0: (or all of it, if there is no selection) in , as a lbajardsilogic@0: WAV file. This action will try to fail rather than overwrite lbajardsilogic@0: an existing file, but you probably shouldn't rely on that. lbajardsilogic@0: lbajardsilogic@0: /jump lbajardsilogic@0: /jump end lbajardsilogic@0: /jump selection lbajardsilogic@0: lbajardsilogic@0: Jump the playback position to time (in seconds); or to lbajardsilogic@0: the end of the file; or to the start of the current selection. lbajardsilogic@0: lbajardsilogic@0: /play lbajardsilogic@0: /play lbajardsilogic@0: /play selection lbajardsilogic@0: lbajardsilogic@0: Start playback. If a time is given, start from that time lbajardsilogic@0: in seconds. If the word "selection" is given instead, play lbajardsilogic@0: the current selection. lbajardsilogic@0: lbajardsilogic@0: /stop lbajardsilogic@0: lbajardsilogic@0: Stop playback. lbajardsilogic@0: lbajardsilogic@0: /loop on lbajardsilogic@0: /loop off lbajardsilogic@0: lbajardsilogic@0: Switch playback loop mode on or off. lbajardsilogic@0: lbajardsilogic@0: /select lbajardsilogic@0: /select all lbajardsilogic@0: /select none lbajardsilogic@0: lbajardsilogic@0: Select the region from times to in seconds; or select lbajardsilogic@0: the whole file; or clear the selection. If there is a layer lbajardsilogic@0: selected that can be used as a snap guide for the selection, then lbajardsilogic@0: the selection will be snapped to it (in the same manner as when lbajardsilogic@0: making selections interactively). lbajardsilogic@0: lbajardsilogic@0: /addselect lbajardsilogic@0: lbajardsilogic@0: Make an additional selection (leaving any existing selection lbajardsilogic@0: in place) from times to in seconds. lbajardsilogic@0: lbajardsilogic@0: /undo lbajardsilogic@0: /redo lbajardsilogic@0: lbajardsilogic@0: Undo the last editing operation; redo the last undone operation. lbajardsilogic@0: Note that most of the classic editing operations (copy and paste lbajardsilogic@0: etc) are not controllable via OSC, but undo may still be useful lbajardsilogic@42: because Sound Access considers actions such as adding a pane lbajardsilogic@0: to be undoable editing operations as well. lbajardsilogic@0: lbajardsilogic@0: /add lbajardsilogic@0: /add lbajardsilogic@0: lbajardsilogic@0: Add a new pane containing a layer of the given type, based on lbajardsilogic@0: the main audio file. If no is specified, use all lbajardsilogic@0: available channels. Useful s are: lbajardsilogic@0: lbajardsilogic@0: waveform lbajardsilogic@0: spectrogram lbajardsilogic@0: spectrum lbajardsilogic@0: timeruler lbajardsilogic@0: lbajardsilogic@0: The following s are less useful, because they create lbajardsilogic@0: empty layers which there is currently no OSC support for editing: lbajardsilogic@0: lbajardsilogic@0: timeinstants lbajardsilogic@0: timevalues lbajardsilogic@0: notes lbajardsilogic@0: text lbajardsilogic@0: colour3dplot lbajardsilogic@0: lbajardsilogic@0: /set lbajardsilogic@0: /set pane lbajardsilogic@0: /set layer lbajardsilogic@0: lbajardsilogic@0: Set a main window control; a property of the current pane; or a lbajardsilogic@0: property of the current layer. lbajardsilogic@0: lbajardsilogic@0: Accepted main window s are: lbajardsilogic@0: lbajardsilogic@0: gain lbajardsilogic@0: whose values are linear multipliers (i.e. 1.0 == unity gain). lbajardsilogic@0: lbajardsilogic@0: speedup lbajardsilogic@0: takes a value of a percentage increase in playback lbajardsilogic@0: speed, so 0 is the default playback speed, 100 sets double lbajardsilogic@0: the default speed, and -100 sets half the default speed lbajardsilogic@0: (yes, I know, it's nonsense, sorry). lbajardsilogic@0: lbajardsilogic@0: overlays lbajardsilogic@0: controls the verbosity level of the text overlays on lbajardsilogic@0: each pane, from 0 (everything off) to 2 (everything on). lbajardsilogic@0: lbajardsilogic@0: zoomwheels lbajardsilogic@0: controls whether the zoom wheels are displayed (1) or not (0). lbajardsilogic@0: lbajardsilogic@0: propertyboxes lbajardsilogic@0: controls whether the property boxes are displayed (1) or not (0). lbajardsilogic@0: lbajardsilogic@0: For pane and layer properties, the control name is the displayed lbajardsilogic@0: name of the given property (though you may use "-" or "_" in place lbajardsilogic@0: of any spaces in the name if it's easier for you). The value may lbajardsilogic@0: be the displayed value or underlying integer for the property. lbajardsilogic@0: lbajardsilogic@0: Some examples: lbajardsilogic@0: lbajardsilogic@0: /set pane Global-Scroll off lbajardsilogic@0: /set pane Follow_Playback Scroll lbajardsilogic@0: /set layer Colour Blue lbajardsilogic@0: /set layer Scale-Units dB lbajardsilogic@0: /set layer Frequency-Scale Log lbajardsilogic@0: lbajardsilogic@0: Note that while you can use "-" or "_" in place of spaces in the lbajardsilogic@0: property name, you cannot currently do so in the value text. If lbajardsilogic@0: this is a problem for you, you might be able to set the value lbajardsilogic@0: as an integer instead (all layer properties can be set this way). lbajardsilogic@0: lbajardsilogic@0: /setcurrent lbajardsilogic@0: /setcurrent lbajardsilogic@0: lbajardsilogic@0: Make the given (a number counting from 1 for the topmost lbajardsilogic@0: pane) and optionally the given on that pane (a number lbajardsilogic@0: counting from 1 for the "frontmost" layer) the current pane and lbajardsilogic@0: layer for subsequent pane and layer operations. lbajardsilogic@0: lbajardsilogic@0: /delete pane lbajardsilogic@0: /delete layer lbajardsilogic@0: lbajardsilogic@0: Delete the current pane or layer. lbajardsilogic@0: lbajardsilogic@0: /zoom lbajardsilogic@0: /zoom in lbajardsilogic@0: /zoom out lbajardsilogic@0: /zoom default lbajardsilogic@0: lbajardsilogic@0: Zoom to a given zoom , given in audio sample frames per lbajardsilogic@0: pixel; or zoom in or out one step from the current level; or lbajardsilogic@0: return to the default zoom level. This method acts on the lbajardsilogic@0: current pane (it only affects all panes if set to Global Zoom, lbajardsilogic@0: which is the default). lbajardsilogic@0: lbajardsilogic@0: /zoomvertical lbajardsilogic@0: /zoomvertical in lbajardsilogic@0: /zoomvertical out lbajardsilogic@0: /zoomvertical default lbajardsilogic@0: lbajardsilogic@0: Change the vertical zoom and origin so as to show the value lbajardsilogic@0: range from to in the vertical scale; or zoom in or lbajardsilogic@0: out vertically; or return to the default vertical zoom level. lbajardsilogic@0: The effect of this method is heavily dependent on the current lbajardsilogic@0: layer. lbajardsilogic@0: lbajardsilogic@0: /transform lbajardsilogic@0: lbajardsilogic@0: Transform the current main audio file using the named transform. lbajardsilogic@0: Transforms are named according to the scheme lbajardsilogic@0: lbajardsilogic@0: type:source:plugin:output lbajardsilogic@0: lbajardsilogic@0: For example, the percussion onset detector from the Vamp example lbajardsilogic@0: plugin set can be invoked via lbajardsilogic@0: lbajardsilogic@0: /transform vamp:vamp-example-plugins:percussiononsets:onsets lbajardsilogic@0: lbajardsilogic@0: If the output is omitted, the first is used. Note that you lbajardsilogic@0: need to use the plugin and output name, not description: in lbajardsilogic@0: this case "percussiononsets" rather than "Simple Percussion lbajardsilogic@0: Onset Detector". lbajardsilogic@0: lbajardsilogic@0: There is not yet any way to run a transform via OSC on any but lbajardsilogic@0: the main audio file, nor with any but its default parameters, lbajardsilogic@0: processing block/step size, or channel selection. lbajardsilogic@0: lbajardsilogic@0: /resize lbajardsilogic@0: /resize pane lbajardsilogic@0: lbajardsilogic@0: Resize the main window to width and height (if the lbajardsilogic@0: window system permits); resize the current pane to height lbajardsilogic@0: if possible (!!! not yet working). lbajardsilogic@0: lbajardsilogic@0: /quit lbajardsilogic@0: lbajardsilogic@0: Exit the program abruptly without saving. lbajardsilogic@0: lbajardsilogic@0: Handy things still missing from the OSC interface include: lbajardsilogic@0: lbajardsilogic@0: * the ability to run transforms with non-default parameters or lbajardsilogic@0: starting from different source models lbajardsilogic@0: * the ability to add layers to a pane (without transform) lbajardsilogic@0: * the ability to add panes (and layers) showing any but the lbajardsilogic@0: main model lbajardsilogic@0: * the ability to set play parameters on a layer/model and show/hide it lbajardsilogic@0: * the ability to set the vertical zoom range (vital for spectrogram) lbajardsilogic@0: * the ability to import and export layers lbajardsilogic@0: * a working pane resize lbajardsilogic@0: * quick shortcuts to Melodic Range Spectrogram, Peak Frequency Spectrogram lbajardsilogic@0: * the ability to rename a layer lbajardsilogic@0: lbajardsilogic@0: