1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

VST3: Add support for new wide/Atmos speaker layouts

This commit is contained in:
reuk 2024-05-30 13:57:42 +01:00
parent 34e454e3f1
commit a42a498f5e
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C
4 changed files with 158 additions and 35 deletions

View file

@ -268,33 +268,51 @@ public:
*/
static AudioChannelSet JUCE_CALLTYPE create7point1point6();
/** Creates a set for a 9.0.4 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
/** Creates a set for a 9.0.4 Atmos surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
Is equivalent to: k90_4 (VST3), AAX_eStemFormat_9_0_4 (AAX).
Is equivalent to: k90_4_W (VST3), AAX_eStemFormat_9_0_4 (AAX).
@see create9point0point4ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point4();
/** Creates a set for a 9.1.4 surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
/** Creates a set for a 9.1.4 Atmos surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
Is equivalent to: k91_4 (VST3), AAX_eStemFormat_9_1_4 (AAX).
Is equivalent to: k91_4_W (VST3), AAX_eStemFormat_9_1_4 (AAX).
@see create9point1point4ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point1point4();
/** Creates a set for a 9.0.6 surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
/** Creates a set for a 9.0.6 Atmos surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
Is equivalent to: k90_6 (VST3), AAX_eStemFormat_9_0_6 (AAX).
Is equivalent to: k90_6_W (VST3), AAX_eStemFormat_9_0_6 (AAX).
@see create9point0point6ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point6();
/** Creates a set for a 9.1.6 surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
/** Creates a set for a 9.1.6 Atmos surround setup (left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
Note that the VST3 layout arranges the front speakers "L Lc C Rc R", but the JUCE layout
uses the arrangement "wideLeft left centre right wideRight". To maintain the relative
positions of the speakers, the channels will be remapped accordingly. This means that the
VST3 host's "L" channel will be received on a JUCE plugin's "wideLeft" channel, the
"Lc" channel will be received on a JUCE plugin's "left" channel, and so on.
Older versions of the VST3 SDK only supported ITU versions of the 9.0.4, 9.1.4, 9.0.6, and
9.1.6 layouts, which have the front-channel ordering "L Lc C Rc R".
To maintain the correct relative channel ordering, JUCE would perform the following mapping:
L -> wideLeft, Lc -> left, Rc -> right, R -> wideRight
Is equivalent to: k91_6 (VST3), kAudioChannelLayoutTag_Atmos_9_1_6 (CoreAudio).
The version of the VST3 SDK bundled with JUCE now supports Atmos versions of the above
layouts, which have the front-channel ordering "Lw L C R Rw". This order matches the
JUCE ordering, so no remapping is required.
create9point0point4(), create9point1point4(), create9point0point6(), and
create9point1point6() now correspond to the VST3 k90_4_W, k91_4_W, k90_6_W, and k91_6_W
Atmos layouts respectively.
If you need to support the old ITU layouts, use create9point0point4ITU(),
create9point1point4ITU(), create9point0point6ITU(), and create9point1point6ITU() instead.
Is equivalent to: k91_6_W (VST3), kAudioChannelLayoutTag_Atmos_9_1_6 (CoreAudio).
@see create9point1point6ITU()
*/
static AudioChannelSet JUCE_CALLTYPE create9point1point6();