OSC in ICST Ambisonics Encoder v.2.2.1n

Institute for Computer Music and Sound Technology / (ICST) Zurich University of the Arts

Unofficial Pre-Release

Most of the ICST Ambisonics Plugins Parameters can be controlled over OSC.
There are two OSC - Sections implemented: OSC In and OSC Out.

'OSC Out' (Send OSC)

(A) The 'ICST AmbiEncoder' sends all 'Source points' to the 'ICST AmbiDecoder' via the standard UDP port (50000). This allows a total view of all incoming encoder movements in the decoder.

In the 'Targets' the user could configure his one osc-presets.
  • You can select the IP number, the port number, and the type of OSC messages.
  • It is also possible to send continuous OSC messages (when the flag is activated).
  • It helps learn other plugins parameters.

'OSC In' (Receives OSC)

OSC In: (Default)

The default osc input waits for this osc-messages: (example)
/icst/ambi/source/xyz 'S2' 0.2 0.2 0.0
For detailed descriptions go to the 'Help' in the Encoder Plugin
You can now also scale the incoming OSC streams. See more details in the next screenshot.

'OSC In' with JavaScript option:

In 'JS-Code' click the (?) to open the Help for 'JavaScript code'

Access to OSC data:

Returns the specified part of the OSC path.
Example: /this/is/my/path -> s.path(3); -> 'my'
Returns the specified argument of the OSC message.
Example: /demo 1 2 3 -> s.arg(2); -> 2

Access to current data:

Manipulation of data set:
s.setXYZ([index], [x], [y], [z]);
Sets XYZ coordinates of the specified source index.

s.setXYZ(1, 1.0, 0.5, 0.1);
s.setXYZbyName([name], [x], [y], [z]);
Sets XYZ coordinates of the source with the specified name.
s.setXYZbyName("flute", 0.5, 0.5, 0);
s.setAED([index], [x], [y], [z]);
s.setAEDbyName([name], [x], [y], [z]);

Same for AED coordinates.

Group manipulations:
s.setGroupXYZ([index], [x], [y], [z], [optional: moveSub]);
Sets XYZ coordinates of the specified group index.

s.setGroupXYZ(1, 1.0, 0.5, 0.1, 1);
s.setXYZbyName([name], [x], [y], [z], [optional: moveSub]);
Sets XYZ coordinates of the source with the specified name.
s.setXYZbyName("woodwinds", 0.5, 0.5, 0, 0);
s.setGroupAED([index], [x], [y], [z], [optional: moveSub]);
s.setGroupAEDbyName([name], [x], [y], [z], [optional: moveSub]);
Same for AED coordinates.
s.rotateGroup([index], [x], [y], [z]);
Rotates the attached sources around the group point.
x, y, z define the relative axis-rotation in degrees.
s.rotateGroup(1, 0.0, 0.0, 10.0);
s.rotateAroundOrigin([index], [x], [y], [z], [optional: moveSub]);
Rotates the group point around the origin (0,0,0).
x, y, z define the relative axis-rotation in degrees.
s.rotateGroupAroundOrigin(1, 0.0, 0.0, 10.0);
s.rotateGroupByName([name], [x], [y], [z]);
s.rotateAroundOriginByName([name], [x], [y], [z], [optional: moveSub]);

Same with identification of the group by name.

The optional parameter moveSub defines:
0: group point only
1: group point and attached sources, preserving relative positions.

Local buffer:

The local buffer allows to store values between OSC messages.
Up to 1000 float values can be stored and recalled anytime.
s.setBufferValue([index], [value]);
Saves the specified value at buffer position [index].

s.setBufferValue(1, 25.0);

Gets the value stored at buffer position [index].

Note: all 'index' parameters are 1-based

Inspirations examples

Save OSC Javascript Preset

Load 'presets...'

Press --> 'presets...' --> choose the 'preset' and click 'Apply'.

OSC (Open Sound Control) https://en.wikipedia.org/wiki/Open_Sound_Control

<< Content