Browse Source

VST3: Map k91_4 and k90_4 to the canonical JUCE 9.1.4 and 9.0.4 layouts

v7.0.9
attila Attila Szarvas 2 years ago
parent
commit
221d1aa6cf
3 changed files with 37 additions and 3 deletions
  1. +32
    -0
      BREAKING-CHANGES.txt
  2. +3
    -3
      modules/juce_audio_basics/buffers/juce_AudioChannelSet.h
  3. +2
    -0
      modules/juce_audio_processors/format_types/juce_VST3Common.h

+ 32
- 0
BREAKING-CHANGES.txt View File

@@ -4,6 +4,38 @@ JUCE breaking changes
develop
=======

Change
------
The k91_4 and k90_4 VST3 layouts are now mapped to the canonical JUCE 9.1.4 and
9.0.4 AudioChannelSets. This has a different ChannelType layout than the
AudioChannelSet previously used with such VST3 SpeakerArrangements.

Possible Issues
---------------
VST3 plugins that were prepared to work with the k91_4 and k90_4
SpeakerArrangements may now have incorrect channel mapping. The channels
previously accessible through ChannelType::left and right are now accessible
through ChannelType::wideLeft and wideRight, and channels previously accessible
through ChannelType::leftCentre and rightCentre are now accessible through
ChannelType::left and right.

Workaround
----------
Code that accesses the channels that correspond to the VST3 Speakers kSpeakerL,
kSpeakerR, kSpeakerLc and kSpeakerRc needs to be updated. These channels are now
accessible respectively through ChannelTypes wideLeft, wideRight, left and
right. Previously they were accessible respectively through left, right,
leftCentre and rightCentre.

Rationale
---------
This change allows developers to handle the 9.1.4 and 9.0.4 surround layouts
with one codepath across all plugin formats. Previously the
AudioChannelSet::create9point1point4() and create9point0point4() layouts would
only be used in CoreAudio and AAX, but a different AudioChannelSet would be used
in VST3 even though they were functionally equivalent.


Change
------
The signatures of the ContentSharer member functions have been updated. The


+ 3
- 3
modules/juce_audio_basics/buffers/juce_AudioChannelSet.h View File

@@ -258,19 +258,19 @@ public:
/** Creates a set for a 9.0.4 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
Is equivalent to: AAX_eStemFormat_9_0_4 (AAX).
Is equivalent to: k90_4 (VST3), AAX_eStemFormat_9_0_4 (AAX).
*/
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).
Is equivalent to: AAX_eStemFormat_9_1_4 (AAX).
Is equivalent to: k91_4 (VST3), AAX_eStemFormat_9_1_4 (AAX).
*/
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).
Is equivalent to: AAX_eStemFormat_9_0_6 (AAX).
Is equivalent to: k90_6 (VST3), AAX_eStemFormat_9_0_6 (AAX).
*/
static AudioChannelSet JUCE_CALLTYPE create9point0point6();


+ 2
- 0
modules/juce_audio_processors/format_types/juce_VST3Common.h View File

@@ -416,6 +416,8 @@ namespace detail
{ k70_6, { X::left, X::right, X::centre, X::leftSurroundRear, X::rightSurroundRear, X::leftSurroundSide, X::rightSurroundSide, X::topFrontLeft, X::topFrontRight, X::topRearLeft, X::topRearRight, X::topSideLeft, X::topSideRight } },
// The VST3 layout uses 'left/right' and 'left-of-center/right-of-center', but the JUCE layout uses 'left/right' and 'wide-left/wide-right'.
{ k91_4, { X::wideLeft, X::wideRight, X::centre, X::LFE, X::leftSurroundRear, X::rightSurroundRear, X::left, X::right, X::leftSurroundSide, X::rightSurroundSide, X::topFrontLeft, X::topFrontRight, X::topRearLeft, X::topRearRight } },
{ k90_4, { X::wideLeft, X::wideRight, X::centre, X::leftSurroundRear, X::rightSurroundRear, X::left, X::right, X::leftSurroundSide, X::rightSurroundSide, X::topFrontLeft, X::topFrontRight, X::topRearLeft, X::topRearRight } },
{ k91_6, { X::wideLeft, X::wideRight, X::centre, X::LFE, X::leftSurroundRear, X::rightSurroundRear, X::left, X::right, X::leftSurroundSide, X::rightSurroundSide, X::topFrontLeft, X::topFrontRight, X::topRearLeft, X::topRearRight, X::topSideLeft, X::topSideRight } },
{ k90_6, { X::wideLeft, X::wideRight, X::centre, X::leftSurroundRear, X::rightSurroundRear, X::left, X::right, X::leftSurroundSide, X::rightSurroundSide, X::topFrontLeft, X::topFrontRight, X::topRearLeft, X::topRearRight, X::topSideLeft, X::topSideRight } },
};


Loading…
Cancel
Save