What's new in version 2.3.0

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

The ICST Ambisonics Plugins Release v2.3.0 has new features!

ICST Ambisonics Plugins Global:

  • New names:
    • 'AmbiDecoder_o1_8ch.component' --> 'AmbiDecoder_o7_64ch.component'
    • 'AmbiEncoder_o1_1ch.component' --> 'AmbiEncoder_o7_64ch.component'
    • 'AmbiDecoder_o1_8ch.vst3' --> 'AmbiDecoder_o7_64ch.vst3'
    • 'AmbiEncoder_o1_1ch.vst3' --> 'AmbiEncoder_o7_64ch.vst3'

  • Radar with different designs and views
  • Radar axis improved
  • Radar axis labels
  • Encoder Settings tap redesigned

ICST AmbiDecoder:

  • New Speaker preset list
  • Select the speakers in the radar and press 'Shift & Control + M' to turn the mute on and off.
  • Mute Feedback in the radar
Better select mode in the 'Speaker settings'

  • Right-click to change color/filter and gain values for the selected parameters.
  • Bug-fixes

ICST Mono-AmbiEncoder:

  • Distance Scaler is no longer in the Encoding tap and is part of the sources.
  • Encoding tap with 'preset manager'.
  • Radar tap with a 'Point Scaler' for the 'sources-points' and a 'Group Point Scaler.'


OSC IN tap:
    • OSC Data-Log
    • hide warnings
  • Listen to Standard OSC:
If activated, the Plugin listens to the standard OSC patterns, otherwise, the standard patterns are ignored and only user defined patterns are evaluated.

Standard patterns (details can be found in the main help section):

  • OSC-Message with JavaScript (JS-Code)
  • JS-Code Help:
Custom OSC - JS Help:

Title (optional):");
If the first line starts with a comment (//), this comment
is used as title and will be shown in the Custom OSC list.

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:
s.getX([index]); (*)
s.getY([index]); (*)
s.getZ([index]); (*)
s.getA([index]); (*)
s.getE([index]); (*)
s.getD([index]); (*)
s.getAbsX([index]); (group mode only)
s.getAbsY([index]); (group mode only)
s.getAbsZ([index]); (group mode only)
(*) Note: in group mode, positions are relative to the attached group!

Manipulation of data set:
s.setXYZ([index], [x], [y], [z]);
Sets XYZ coordinates of the specified source index.
Example: 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.
Example: 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.
Example: 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.
Example: 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.
Example: 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.
Example: 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.
(default is 1)

Additional methods for group mode (absolute rotation and stretch):
s.setGroupRotation([index], [x], [y], [z], [w]);
Sets the absolute rotation of the group to the specified quaternion.
s.setGroupStretch([index], [stretchFactor]);
Sets the absolute stretch factor.
s.setGroupRotationByName([name], [x], [y], [z], [w]);
s.setGroupStretchByName([name], [stretchFactor]);
Same with identification of the group by name.

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].
Example: s.setBufferValue(1, 25.0);
Gets the value stored at buffer position [index].
Example: s.getBufferValue(1);

Error handling:
Java Script syntax errors will be displayed at interpretation time.
Errors in the methods defined above, will be automatically displayed,
however, it's possible to handle these errors in the Java Script code:
All getter-methods return the value if available, 'undefined' otherwise.
All setter-methods return true if successful, 'undefined' otherwise.
Allows custom error reporting.
Example: if(s.setXYZ(i, x, y, z) != true) s.reportError("beep");
Resets the automatically generated error message to ignore the error.

Note: all 'index' parameters are 1-based, except for the 'Local Buffer' methods
  • save JS-Code
  • save user presets

OSC Out:
OSC Out Help:
Allowed objects:
{x}, {y}, {z} = Real X/Y/Z-Coordinates
{a}, {e}, {d} = Real A/E/D-Coordinates
{sx}, {sy}, {sz} = Scaled X/Y/Z-Coordinates (0..1)
{sa}, {se}, {sd} = Scaled A/E/D-Coordinates (0..1)
{i} = index
{n} = name
{g} = gain
{c} = color

User defined scaling available for sx, sy, sz, sa, se, sd:
Syntax: {s*,[lowLimit],[highLimit]}
Example: {sx,-0.5,0.5}

Dual-Scaling for sx, sy, sz, se:
Syntax: {s*,[lowLimit],[zeroValue],[highLimit]}
Example: {sz, 1.0, 0.1, 1.0}

Constant values:
{ci,[int]} = Constant integer value
{cf,[float]} = Constant float value
{cs,[string]} = Constant string

Every object can also be dynamically calculated using a JavaScript expression:
{expr, #}
where # defines the expression.

The object p represents the current source point, the following methods provide access to the point's information:
- p.getX()
- p.getY()
- p.getZ()
- p.getA()
- p.getE()
- p.getD()
- p.getName()
- p.getColor()
- p.getGain()
- p.getIndex()

Example to calculate the distance from (0,0,0) of the projection to the XY-plane:
{expr, Math.sqrt(Math.pow(p.getX(), 2) + Math.pow(p.getY(), 2))}
  • Scaling possibility and easy forwarding of OSC data to other FX plugins or applications.

ICST Multi-AmbiEncoder:

ICST AmbiPlugins Reaper template:

  • Project templates

ICST AmbiPlugins TrackTemplates
  • ICST Ambisonics Plugins
  • ICST Ambisonics Plugins 3rd party

© 2023-01-24