Classes (extension) | UGens > Multichannel > Panners

VBAPSpeakerArray : Object
ExtensionExtension

Vector Base Amplitude Panning Speaker Array
Source: vbap.sc

Description

VBAPSpeakerArray represents an array of speakers configured for use with VBAP. It provides functions for calculating optimised pairs and triplets based on speaker location.

VBAP was created by Ville Pulkki. For more information on VBAP see http://www.acoustics.hut.fi/research/cat/vbap/

This version of VBAP for SC was ported from the ver. 0.99 PD code by Scott Wilson, as part of the BEASTMulch project. Development was partially funded by the Arts and Humanities Research Council: http://www.ahrc.ac.uk

Class Methods

VBAPSpeakerArray.new(dim, directions)

Create a new VBAPSpeakerArray.

Arguments:

dim

Number of dimensions in the array, either 2 (ring or partial ring), or 3 (partial or full dome or sphere).

directions

An Array containing speaker locations in degrees. If dim is 2 this will be an array of azimuth angles, if dim is 3 this will be an array of arrays of [azimuth, elevation] angle pairs.

Angles are given in degrees, with azimuth +/- 180 degrees from the median plane (i.e. straight ahead), and elevation +/- 90 degrees from the azimuth plane.

The order of the speakers corresponds to the order of the outputs when using a VBAP UGen.

Discussion:

2D and 3D examples

VBAPSpeakerArray.new(2, [ -30, 30, 0, -110, 110 ]); // 5.1 array

VBAPSpeakerArray.new(3, [[-22.5, 14.97], [22.5, 14.97], [-67.5, 14.97], [67.5, 14.97], [-112.5, 14.97], [112.5, 14.97], [-157.5, 14.97], [157.5, 14.97], [-45, 0], [45, 0], [-90, 0], [90, 0], [-135, 0], [135, 0], [0, 0], [180, 0]]); // zig zag partial dome

VBAPSpeakerArray.maxNumSpeakers

VBAPSpeakerArray.maxNumSpeakers = value

Set/get the maximum number of speakers in an array. Default is 55. (This limitation will be removed in a later version.)

Inherited class methods

Instance Methods

.dim

Returns an Integer corresponding to the receiver's number of dimensions.

.numSpeakers

Returns an Integer indicating the number of speakers in this array.

.speakers

Returns an Array containing instances of VBAPSpeaker.

.getSetsAndMatrices

Sort the speaker array into loudspeaker pairs or triplets and return this data in a form appropriate for loading into a buffer. Once loaded this data can be used by a VBAP UGen.

Discussion:

a = VBAPSpeakerArray.new(2, [0, 45, 90, 135, 180, -135, -90, -45]); // 8 channel ring
b = Buffer.loadCollection(s, a.getSetsAndMatrices);

.loadToBuffer(server)

A shortcut for calling getSetsAndMatrices and loading into a Buffer. Returns a Buffer object.

Discussion:

a = VBAPSpeakerArray.new(2, [0, 45, 90, 135, 180, -135, -90, -45]); // 8 channel ring
b = a.loadToBuffer;

Inherited instance methods

Undocumented instance methods

.anglesToCartesian

.any_ls_inside_triplet(a, b, c)

.calc_2D_inv_tmatrix(azi1, azi2, inv_mat)

.calculate_3x3_matrixes

.choose_ls_triplets

.choose_ls_tuplets

.initFromDirections(directions)

.lines_intersect(i, j, k, l)

.sort_2D_lss

.unq_cross_prod(v1, v2)

.vec_angle(v1, v2)

.vec_length(v1)

.vec_prod(v1, v2)

.vol_p_side_lgth(i, j, k)

Examples

See VBAP for further examples.