mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Add support for AAX SDK 2.5.0
This commit is contained in:
parent
6faa87d8f3
commit
39cd0ef532
5 changed files with 379 additions and 44 deletions
|
|
@ -107,6 +107,34 @@ String AudioChannelSet::getChannelTypeName (AudioChannelSet::ChannelType type)
|
|||
case ambisonicACN33: return NEEDS_TRANS("Ambisonic 33");
|
||||
case ambisonicACN34: return NEEDS_TRANS("Ambisonic 34");
|
||||
case ambisonicACN35: return NEEDS_TRANS("Ambisonic 35");
|
||||
case ambisonicACN36: return NEEDS_TRANS("Ambisonic 36");
|
||||
case ambisonicACN37: return NEEDS_TRANS("Ambisonic 37");
|
||||
case ambisonicACN38: return NEEDS_TRANS("Ambisonic 38");
|
||||
case ambisonicACN39: return NEEDS_TRANS("Ambisonic 39");
|
||||
case ambisonicACN40: return NEEDS_TRANS("Ambisonic 40");
|
||||
case ambisonicACN41: return NEEDS_TRANS("Ambisonic 41");
|
||||
case ambisonicACN42: return NEEDS_TRANS("Ambisonic 42");
|
||||
case ambisonicACN43: return NEEDS_TRANS("Ambisonic 43");
|
||||
case ambisonicACN44: return NEEDS_TRANS("Ambisonic 44");
|
||||
case ambisonicACN45: return NEEDS_TRANS("Ambisonic 45");
|
||||
case ambisonicACN46: return NEEDS_TRANS("Ambisonic 46");
|
||||
case ambisonicACN47: return NEEDS_TRANS("Ambisonic 47");
|
||||
case ambisonicACN48: return NEEDS_TRANS("Ambisonic 48");
|
||||
case ambisonicACN49: return NEEDS_TRANS("Ambisonic 49");
|
||||
case ambisonicACN50: return NEEDS_TRANS("Ambisonic 50");
|
||||
case ambisonicACN51: return NEEDS_TRANS("Ambisonic 51");
|
||||
case ambisonicACN52: return NEEDS_TRANS("Ambisonic 52");
|
||||
case ambisonicACN53: return NEEDS_TRANS("Ambisonic 53");
|
||||
case ambisonicACN54: return NEEDS_TRANS("Ambisonic 54");
|
||||
case ambisonicACN55: return NEEDS_TRANS("Ambisonic 55");
|
||||
case ambisonicACN56: return NEEDS_TRANS("Ambisonic 56");
|
||||
case ambisonicACN57: return NEEDS_TRANS("Ambisonic 57");
|
||||
case ambisonicACN58: return NEEDS_TRANS("Ambisonic 58");
|
||||
case ambisonicACN59: return NEEDS_TRANS("Ambisonic 59");
|
||||
case ambisonicACN60: return NEEDS_TRANS("Ambisonic 60");
|
||||
case ambisonicACN61: return NEEDS_TRANS("Ambisonic 61");
|
||||
case ambisonicACN62: return NEEDS_TRANS("Ambisonic 62");
|
||||
case ambisonicACN63: return NEEDS_TRANS("Ambisonic 63");
|
||||
case bottomFrontLeft: return NEEDS_TRANS("Bottom Front Left");
|
||||
case bottomFrontCentre: return NEEDS_TRANS("Bottom Front Centre");
|
||||
case bottomFrontRight: return NEEDS_TRANS("Bottom Front Right");
|
||||
|
|
@ -191,6 +219,34 @@ String AudioChannelSet::getAbbreviatedChannelTypeName (AudioChannelSet::ChannelT
|
|||
case ambisonicACN33: return "ACN33";
|
||||
case ambisonicACN34: return "ACN34";
|
||||
case ambisonicACN35: return "ACN35";
|
||||
case ambisonicACN36: return "ACN36";
|
||||
case ambisonicACN37: return "ACN37";
|
||||
case ambisonicACN38: return "ACN38";
|
||||
case ambisonicACN39: return "ACN39";
|
||||
case ambisonicACN40: return "ACN40";
|
||||
case ambisonicACN41: return "ACN41";
|
||||
case ambisonicACN42: return "ACN42";
|
||||
case ambisonicACN43: return "ACN43";
|
||||
case ambisonicACN44: return "ACN44";
|
||||
case ambisonicACN45: return "ACN45";
|
||||
case ambisonicACN46: return "ACN46";
|
||||
case ambisonicACN47: return "ACN47";
|
||||
case ambisonicACN48: return "ACN48";
|
||||
case ambisonicACN49: return "ACN49";
|
||||
case ambisonicACN50: return "ACN50";
|
||||
case ambisonicACN51: return "ACN51";
|
||||
case ambisonicACN52: return "ACN52";
|
||||
case ambisonicACN53: return "ACN53";
|
||||
case ambisonicACN54: return "ACN54";
|
||||
case ambisonicACN55: return "ACN55";
|
||||
case ambisonicACN56: return "ACN56";
|
||||
case ambisonicACN57: return "ACN57";
|
||||
case ambisonicACN58: return "ACN58";
|
||||
case ambisonicACN59: return "ACN59";
|
||||
case ambisonicACN60: return "ACN60";
|
||||
case ambisonicACN61: return "ACN61";
|
||||
case ambisonicACN62: return "ACN62";
|
||||
case ambisonicACN63: return "ACN63";
|
||||
case topSideLeft: return "Tsl";
|
||||
case topSideRight: return "Tsr";
|
||||
case bottomFrontLeft: return "Bfl";
|
||||
|
|
@ -208,9 +264,6 @@ String AudioChannelSet::getAbbreviatedChannelTypeName (AudioChannelSet::ChannelT
|
|||
default: break;
|
||||
}
|
||||
|
||||
if (type >= ambisonicACN4 && type <= ambisonicACN35)
|
||||
return "ACN" + String (type - ambisonicACN4 + 4);
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
@ -283,6 +336,34 @@ AudioChannelSet::ChannelType AudioChannelSet::getChannelTypeFromAbbreviation (co
|
|||
if (abbr == "ACN33") return ambisonicACN33;
|
||||
if (abbr == "ACN34") return ambisonicACN34;
|
||||
if (abbr == "ACN35") return ambisonicACN35;
|
||||
if (abbr == "ACN36") return ambisonicACN36;
|
||||
if (abbr == "ACN37") return ambisonicACN37;
|
||||
if (abbr == "ACN38") return ambisonicACN38;
|
||||
if (abbr == "ACN39") return ambisonicACN39;
|
||||
if (abbr == "ACN40") return ambisonicACN40;
|
||||
if (abbr == "ACN41") return ambisonicACN41;
|
||||
if (abbr == "ACN42") return ambisonicACN42;
|
||||
if (abbr == "ACN43") return ambisonicACN43;
|
||||
if (abbr == "ACN44") return ambisonicACN44;
|
||||
if (abbr == "ACN45") return ambisonicACN45;
|
||||
if (abbr == "ACN46") return ambisonicACN46;
|
||||
if (abbr == "ACN47") return ambisonicACN47;
|
||||
if (abbr == "ACN48") return ambisonicACN48;
|
||||
if (abbr == "ACN49") return ambisonicACN49;
|
||||
if (abbr == "ACN50") return ambisonicACN50;
|
||||
if (abbr == "ACN51") return ambisonicACN51;
|
||||
if (abbr == "ACN52") return ambisonicACN52;
|
||||
if (abbr == "ACN53") return ambisonicACN53;
|
||||
if (abbr == "ACN54") return ambisonicACN54;
|
||||
if (abbr == "ACN55") return ambisonicACN55;
|
||||
if (abbr == "ACN56") return ambisonicACN56;
|
||||
if (abbr == "ACN57") return ambisonicACN57;
|
||||
if (abbr == "ACN58") return ambisonicACN58;
|
||||
if (abbr == "ACN59") return ambisonicACN59;
|
||||
if (abbr == "ACN60") return ambisonicACN60;
|
||||
if (abbr == "ACN61") return ambisonicACN61;
|
||||
if (abbr == "ACN62") return ambisonicACN62;
|
||||
if (abbr == "ACN63") return ambisonicACN63;
|
||||
if (abbr == "Tsl") return topSideLeft;
|
||||
if (abbr == "Tsr") return topSideRight;
|
||||
if (abbr == "Bfl") return bottomFrontLeft;
|
||||
|
|
@ -338,6 +419,8 @@ String AudioChannelSet::getDescription() const
|
|||
if (*this == createLCRS()) return "LCRS";
|
||||
|
||||
if (*this == create5point0()) return "5.0 Surround";
|
||||
if (*this == create5point0point2()) return "5.0.2 Surround";
|
||||
if (*this == create5point0point4()) return "5.0.4 Surround";
|
||||
if (*this == create5point1()) return "5.1 Surround";
|
||||
if (*this == create5point1point2()) return "5.1.2 Surround";
|
||||
if (*this == create5point1point4()) return "5.1.4 Surround";
|
||||
|
|
@ -351,9 +434,13 @@ String AudioChannelSet::getDescription() const
|
|||
if (*this == create7point1SDDS()) return "7.1 Surround SDDS";
|
||||
if (*this == create7point0point2()) return "7.0.2 Surround";
|
||||
if (*this == create7point0point4()) return "7.0.4 Surround";
|
||||
if (*this == create7point0point6()) return "7.0.6 Surround";
|
||||
if (*this == create7point1point2()) return "7.1.2 Surround";
|
||||
if (*this == create7point1point4()) return "7.1.4 Surround";
|
||||
if (*this == create7point1point6()) return "7.1.6 Surround";
|
||||
if (*this == create9point0point4()) return "9.0.4 Surround";
|
||||
if (*this == create9point1point4()) return "9.1.4 Surround";
|
||||
if (*this == create9point0point6()) return "9.0.6 Surround";
|
||||
if (*this == create9point1point6()) return "9.1.6 Surround";
|
||||
|
||||
if (*this == quadraphonic()) return "Quadraphonic";
|
||||
|
|
@ -386,11 +473,11 @@ String AudioChannelSet::getDescription() const
|
|||
|
||||
bool AudioChannelSet::isDiscreteLayout() const noexcept
|
||||
{
|
||||
for (auto& speaker : getChannelTypes())
|
||||
if (speaker <= ambisonicACN35)
|
||||
return false;
|
||||
const auto channelTypes = getChannelTypes();
|
||||
|
||||
return true;
|
||||
return std::none_of (std::begin (channelTypes),
|
||||
std::end (channelTypes),
|
||||
[] (const auto& t) { return t < discreteChannel0; });
|
||||
}
|
||||
|
||||
int AudioChannelSet::size() const noexcept
|
||||
|
|
@ -467,26 +554,44 @@ AudioChannelSet AudioChannelSet::quadraphonic() { return AudioChannelSet
|
|||
AudioChannelSet AudioChannelSet::pentagonal() { return AudioChannelSet ({ left, right, centre, leftSurroundRear, rightSurroundRear }); }
|
||||
AudioChannelSet AudioChannelSet::hexagonal() { return AudioChannelSet ({ left, right, centre, centreSurround, leftSurroundRear, rightSurroundRear }); }
|
||||
AudioChannelSet AudioChannelSet::octagonal() { return AudioChannelSet ({ left, right, centre, leftSurround, rightSurround, centreSurround, wideLeft, wideRight }); }
|
||||
AudioChannelSet AudioChannelSet::create5point0point2() { return AudioChannelSet ({ left, right, centre, leftSurround, rightSurround, topSideLeft, topSideRight }); }
|
||||
AudioChannelSet AudioChannelSet::create5point1point2() { return AudioChannelSet ({ left, right, centre, LFE, leftSurround, rightSurround, topSideLeft, topSideRight }); }
|
||||
AudioChannelSet AudioChannelSet::create5point0point4() { return AudioChannelSet ({ left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create5point1point4() { return AudioChannelSet ({ left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create7point0point2() { return AudioChannelSet ({ left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topSideLeft, topSideRight }); }
|
||||
AudioChannelSet AudioChannelSet::create7point1point2() { return AudioChannelSet ({ left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topSideLeft, topSideRight }); }
|
||||
AudioChannelSet AudioChannelSet::create7point0point4() { return AudioChannelSet ({ left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topFrontLeft, topFrontRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create7point1point4() { return AudioChannelSet ({ left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topFrontLeft, topFrontRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create7point0point6() { return AudioChannelSet ({ left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create7point1point6() { return AudioChannelSet ({ left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create9point0point4() { return AudioChannelSet ({ left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create9point1point4() { return AudioChannelSet ({ left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create9point0point6() { return AudioChannelSet ({ left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight }); }
|
||||
AudioChannelSet AudioChannelSet::create9point1point6() { return AudioChannelSet ({ left, right, centre, LFE, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, wideLeft, wideRight, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight }); }
|
||||
|
||||
AudioChannelSet AudioChannelSet::ambisonic (int order)
|
||||
{
|
||||
jassert (isPositiveAndBelow (order, 6));
|
||||
jassert (isPositiveAndBelow (order, 8));
|
||||
|
||||
if (order == 0)
|
||||
return AudioChannelSet ((uint32) (1 << ambisonicACN0));
|
||||
static constexpr std::pair<int, int> continuousRanges[] { { ambisonicACN0, ambisonicACN3 },
|
||||
{ ambisonicACN4, ambisonicACN35 },
|
||||
{ ambisonicACN36, ambisonicACN63 } };
|
||||
|
||||
AudioChannelSet set ((1u << ambisonicACN0) | (1u << ambisonicACN1) | (1u << ambisonicACN2) | (1u << ambisonicACN3));
|
||||
AudioChannelSet set;
|
||||
|
||||
auto numAmbisonicChannels = (order + 1) * (order + 1);
|
||||
set.channels.setRange (ambisonicACN4, numAmbisonicChannels - 4, true);
|
||||
const auto setBits = [&set] (auto range, auto maxNumToSet)
|
||||
{
|
||||
const auto numToSet = std::min (maxNumToSet, range.second - range.first + 1);
|
||||
set.channels.setRange (range.first, numToSet, true);
|
||||
return numToSet;
|
||||
};
|
||||
|
||||
const auto numAmbisonicChannels = (order + 1) * (order + 1);
|
||||
|
||||
for (int rangeIdx = 0, bitsSet = 0; bitsSet < numAmbisonicChannels; ++rangeIdx)
|
||||
{
|
||||
bitsSet += setBits (continuousRanges[rangeIdx], numAmbisonicChannels - bitsSet);
|
||||
}
|
||||
|
||||
return set;
|
||||
}
|
||||
|
|
@ -636,7 +741,7 @@ int JUCE_CALLTYPE AudioChannelSet::getAmbisonicOrderForNumChannels (int numChann
|
|||
auto sqrtMinusOne = std::sqrt (static_cast<float> (numChannels)) - 1.0f;
|
||||
auto ambisonicOrder = jmax (0, static_cast<int> (std::floor (sqrtMinusOne)));
|
||||
|
||||
if (ambisonicOrder > 5)
|
||||
if (ambisonicOrder > 7)
|
||||
return -1;
|
||||
|
||||
return (static_cast<float> (ambisonicOrder) == sqrtMinusOne ? ambisonicOrder : -1);
|
||||
|
|
|
|||
|
|
@ -196,12 +196,24 @@ public:
|
|||
*/
|
||||
static AudioChannelSet JUCE_CALLTYPE create7point1SDDS();
|
||||
|
||||
/** Creates a set for a 5.0.2 surround setup (left, right, centre, leftSurround, rightSurround, topSideLeft, topSideRight).
|
||||
|
||||
Is equivalent to: AAX_eStemFormat_5_0_2 (AAX).
|
||||
*/
|
||||
static AudioChannelSet JUCE_CALLTYPE create5point0point2();
|
||||
|
||||
/** Creates a set for a 5.1.2 surround setup (left, right, centre, LFE, leftSurround, rightSurround, topSideLeft, topSideRight).
|
||||
|
||||
Is equivalent to: kAudioChannelLayoutTag_Atmos_5_1_2 (CoreAudio).
|
||||
*/
|
||||
static AudioChannelSet JUCE_CALLTYPE create5point1point2();
|
||||
|
||||
/** Creates a set for a 5.0.4 surround setup (left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
|
||||
|
||||
Is equivalent to: AAX_eStemFormat_5_0_4 (AAX).
|
||||
*/
|
||||
static AudioChannelSet JUCE_CALLTYPE create5point0point4();
|
||||
|
||||
/** Creates a set for a 5.1.4 surround setup (left, right, centre, LFE, leftSurround, rightSurround, topFrontLeft, topFrontRight, topRearLeft, topRearRight).
|
||||
|
||||
Is equivalent to: kAudioChannelLayoutTag_Atmos_5_1_4 (CoreAudio).
|
||||
|
|
@ -232,12 +244,36 @@ public:
|
|||
*/
|
||||
static AudioChannelSet JUCE_CALLTYPE create7point1point4();
|
||||
|
||||
/** Creates a set for 7.0.6 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
|
||||
|
||||
Is equivalent to: AAX_eStemFormat_7_0_6 (AAX).
|
||||
*/
|
||||
static AudioChannelSet JUCE_CALLTYPE create7point0point6();
|
||||
|
||||
/** Creates a set for Dolby Atmos 7.1.6 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, LFE, topFrontLeft, topFrontRight, topSideLeft, topSideRight, topRearLeft, topRearRight).
|
||||
|
||||
Is equivalent to: k71_6 (VST), n/a (AAX), n/a (CoreAudio)
|
||||
*/
|
||||
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).
|
||||
|
||||
Is equivalent to: 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).
|
||||
*/
|
||||
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).
|
||||
*/
|
||||
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).
|
||||
|
||||
Note that the VST3 layout arranges the front speakers "L Lc C Rc R", but the JUCE layout
|
||||
|
|
@ -419,6 +455,40 @@ public:
|
|||
bottomRearCentre = 70, /**< Bottom Rear Center (Brc) */
|
||||
bottomRearRight = 71, /**< Bottom Rear Right (Brr) */
|
||||
|
||||
//==============================================================================
|
||||
|
||||
// sixth-order ambisonic
|
||||
ambisonicACN36 = 72, /**< Sixth-order ambisonic channel number 36. */
|
||||
ambisonicACN37 = 73, /**< Sixth-order ambisonic channel number 37. */
|
||||
ambisonicACN38 = 74, /**< Sixth-order ambisonic channel number 38. */
|
||||
ambisonicACN39 = 75, /**< Sixth-order ambisonic channel number 39. */
|
||||
ambisonicACN40 = 76, /**< Sixth-order ambisonic channel number 40. */
|
||||
ambisonicACN41 = 77, /**< Sixth-order ambisonic channel number 41. */
|
||||
ambisonicACN42 = 78, /**< Sixth-order ambisonic channel number 42. */
|
||||
ambisonicACN43 = 79, /**< Sixth-order ambisonic channel number 43. */
|
||||
ambisonicACN44 = 80, /**< Sixth-order ambisonic channel number 44. */
|
||||
ambisonicACN45 = 81, /**< Sixth-order ambisonic channel number 45. */
|
||||
ambisonicACN46 = 82, /**< Sixth-order ambisonic channel number 46. */
|
||||
ambisonicACN47 = 83, /**< Sixth-order ambisonic channel number 47. */
|
||||
ambisonicACN48 = 84, /**< Sixth-order ambisonic channel number 48. */
|
||||
|
||||
// seventh-order ambisonic
|
||||
ambisonicACN49 = 85, /**< Seventh-order ambisonic channel number 49. */
|
||||
ambisonicACN50 = 86, /**< Seventh-order ambisonic channel number 50. */
|
||||
ambisonicACN51 = 87, /**< Seventh-order ambisonic channel number 51. */
|
||||
ambisonicACN52 = 88, /**< Seventh-order ambisonic channel number 52. */
|
||||
ambisonicACN53 = 89, /**< Seventh-order ambisonic channel number 53. */
|
||||
ambisonicACN54 = 90, /**< Seventh-order ambisonic channel number 54. */
|
||||
ambisonicACN55 = 91, /**< Seventh-order ambisonic channel number 55. */
|
||||
ambisonicACN56 = 92, /**< Seventh-order ambisonic channel number 56. */
|
||||
ambisonicACN57 = 93, /**< Seventh-order ambisonic channel number 57. */
|
||||
ambisonicACN58 = 94, /**< Seventh-order ambisonic channel number 58. */
|
||||
ambisonicACN59 = 95, /**< Seventh-order ambisonic channel number 59. */
|
||||
ambisonicACN60 = 96, /**< Seventh-order ambisonic channel number 60. */
|
||||
ambisonicACN61 = 97, /**< Seventh-order ambisonic channel number 61. */
|
||||
ambisonicACN62 = 98, /**< Seventh-order ambisonic channel number 62. */
|
||||
ambisonicACN63 = 99, /**< Seventh-order ambisonic channel number 63. */
|
||||
|
||||
//==============================================================================
|
||||
discreteChannel0 = 128 /**< Non-typed individual channels are indexed upwards from this value. */
|
||||
};
|
||||
|
|
@ -435,7 +505,7 @@ public:
|
|||
//==============================================================================
|
||||
enum
|
||||
{
|
||||
maxChannelsOfNamedLayout = 36
|
||||
maxChannelsOfNamedLayout = 64
|
||||
};
|
||||
|
||||
/** Adds a channel to the set. */
|
||||
|
|
|
|||
|
|
@ -50,6 +50,12 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wnon-virtual-dtor",
|
|||
|
||||
static_assert (AAX_SDK_CURRENT_REVISION >= AAX_SDK_2p4p0_REVISION, "JUCE requires AAX SDK version 2.4.0 or higher");
|
||||
|
||||
#if defined (AAX_SDK_2p5p0_REVISION) && AAX_SDK_2p5p0_REVISION <= AAX_SDK_CURRENT_REVISION
|
||||
#define JUCE_AAX_SDK_2p5p0 1
|
||||
#else
|
||||
#define JUCE_AAX_SDK_2p5p0 0
|
||||
#endif
|
||||
|
||||
#define INITACFIDS
|
||||
|
||||
#include <AAX_Exports.cpp>
|
||||
|
|
@ -115,7 +121,7 @@ namespace AAXClasses
|
|||
struct AAXChannelStreamOrder
|
||||
{
|
||||
AAX_EStemFormat aaxStemFormat;
|
||||
AudioChannelSet::ChannelType speakerOrder[10];
|
||||
std::initializer_list<AudioChannelSet::ChannelType> speakerOrder;
|
||||
};
|
||||
|
||||
static AAX_EStemFormat stemFormatForAmbisonicOrder (int order)
|
||||
|
|
@ -125,6 +131,12 @@ namespace AAXClasses
|
|||
case 1: return AAX_eStemFormat_Ambi_1_ACN;
|
||||
case 2: return AAX_eStemFormat_Ambi_2_ACN;
|
||||
case 3: return AAX_eStemFormat_Ambi_3_ACN;
|
||||
#if JUCE_AAX_SDK_2p5p0
|
||||
case 4: return AAX_eStemFormat_Ambi_4_ACN;
|
||||
case 5: return AAX_eStemFormat_Ambi_5_ACN;
|
||||
case 6: return AAX_eStemFormat_Ambi_6_ACN;
|
||||
case 7: return AAX_eStemFormat_Ambi_7_ACN;
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
@ -133,53 +145,94 @@ namespace AAXClasses
|
|||
|
||||
static AAXChannelStreamOrder aaxChannelOrder[] =
|
||||
{
|
||||
{ AAX_eStemFormat_Mono, { AudioChannelSet::centre, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
{ AAX_eStemFormat_Mono, { AudioChannelSet::centre } },
|
||||
|
||||
{ AAX_eStemFormat_Stereo, { AudioChannelSet::left, AudioChannelSet::right, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
{ AAX_eStemFormat_Stereo, { AudioChannelSet::left, AudioChannelSet::right } },
|
||||
|
||||
{ AAX_eStemFormat_LCR, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::unknown, AudioChannelSet::unknown,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
{ AAX_eStemFormat_LCR, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right } },
|
||||
|
||||
{ AAX_eStemFormat_LCRS, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::centreSurround, AudioChannelSet::unknown,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
{ AAX_eStemFormat_LCRS, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::centreSurround } },
|
||||
|
||||
{ AAX_eStemFormat_Quad, { AudioChannelSet::left, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround, AudioChannelSet::unknown,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
{ AAX_eStemFormat_Quad, { AudioChannelSet::left, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround } },
|
||||
|
||||
{ AAX_eStemFormat_5_0, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
{ AAX_eStemFormat_5_0, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround } },
|
||||
|
||||
{ AAX_eStemFormat_5_1, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround,
|
||||
AudioChannelSet::LFE, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::LFE } },
|
||||
|
||||
{ AAX_eStemFormat_6_0, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::centreSurround,
|
||||
AudioChannelSet::rightSurround, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::rightSurround } },
|
||||
|
||||
{ AAX_eStemFormat_6_1, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::centreSurround,
|
||||
AudioChannelSet::rightSurround, AudioChannelSet::LFE, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::rightSurround, AudioChannelSet::LFE } },
|
||||
|
||||
{ AAX_eStemFormat_7_0_SDDS, { AudioChannelSet::left, AudioChannelSet::leftCentre, AudioChannelSet::centre, AudioChannelSet::rightCentre, AudioChannelSet::right,
|
||||
AudioChannelSet::leftSurround, AudioChannelSet::rightSurround, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::leftSurround, AudioChannelSet::rightSurround } },
|
||||
|
||||
{ AAX_eStemFormat_7_0_DTS, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear } },
|
||||
|
||||
{ AAX_eStemFormat_7_1_SDDS, { AudioChannelSet::left, AudioChannelSet::leftCentre, AudioChannelSet::centre, AudioChannelSet::rightCentre, AudioChannelSet::right,
|
||||
AudioChannelSet::leftSurround, AudioChannelSet::rightSurround, AudioChannelSet::LFE, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::leftSurround, AudioChannelSet::rightSurround, AudioChannelSet::LFE } },
|
||||
|
||||
{ AAX_eStemFormat_7_1_DTS, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::LFE, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::LFE } },
|
||||
|
||||
{ AAX_eStemFormat_7_0_2, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight, AudioChannelSet::unknown } },
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight } },
|
||||
|
||||
{ AAX_eStemFormat_7_1_2, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::LFE, AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight } },
|
||||
|
||||
{ AAX_eStemFormat_None, { AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown,
|
||||
AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown, AudioChannelSet::unknown } },
|
||||
#if JUCE_AAX_SDK_2p5p0
|
||||
{ AAX_eStemFormat_5_0_2, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround,
|
||||
AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight } },
|
||||
|
||||
{ AAX_eStemFormat_5_1_2, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround,
|
||||
AudioChannelSet::LFE, AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight } },
|
||||
|
||||
{ AAX_eStemFormat_5_0_4, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround,
|
||||
AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_5_1_4, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurround, AudioChannelSet::rightSurround,
|
||||
AudioChannelSet::LFE, AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_7_0_4, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight,
|
||||
AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_7_1_4, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::LFE, AudioChannelSet::topFrontLeft,
|
||||
AudioChannelSet::topFrontRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_7_0_6, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight,
|
||||
AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_7_1_6, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide,
|
||||
AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear, AudioChannelSet::LFE, AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight,
|
||||
AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_9_0_4, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::wideLeft, AudioChannelSet::wideRight,
|
||||
AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide, AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear,
|
||||
AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_9_1_4, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::wideLeft, AudioChannelSet::wideRight,
|
||||
AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide, AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear,
|
||||
AudioChannelSet::LFE, AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight, AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_9_0_6, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::wideLeft, AudioChannelSet::wideRight,
|
||||
AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide, AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear,
|
||||
AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight, AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight, AudioChannelSet::topRearLeft,
|
||||
AudioChannelSet::topRearRight } },
|
||||
|
||||
{ AAX_eStemFormat_9_1_6, { AudioChannelSet::left, AudioChannelSet::centre, AudioChannelSet::right, AudioChannelSet::wideLeft, AudioChannelSet::wideRight,
|
||||
AudioChannelSet::leftSurroundSide, AudioChannelSet::rightSurroundSide, AudioChannelSet::leftSurroundRear, AudioChannelSet::rightSurroundRear,
|
||||
AudioChannelSet::LFE, AudioChannelSet::topFrontLeft, AudioChannelSet::topFrontRight, AudioChannelSet::topSideLeft, AudioChannelSet::topSideRight,
|
||||
AudioChannelSet::topRearLeft, AudioChannelSet::topRearRight } },
|
||||
#endif
|
||||
|
||||
{ AAX_eStemFormat_None, {} },
|
||||
};
|
||||
|
||||
static AAX_EStemFormat aaxFormats[] =
|
||||
|
|
@ -201,7 +254,25 @@ namespace AAXClasses
|
|||
AAX_eStemFormat_7_1_2,
|
||||
AAX_eStemFormat_Ambi_1_ACN,
|
||||
AAX_eStemFormat_Ambi_2_ACN,
|
||||
AAX_eStemFormat_Ambi_3_ACN
|
||||
AAX_eStemFormat_Ambi_3_ACN,
|
||||
#if JUCE_AAX_SDK_2p5p0
|
||||
AAX_eStemFormat_5_0_2,
|
||||
AAX_eStemFormat_5_1_2,
|
||||
AAX_eStemFormat_5_0_4,
|
||||
AAX_eStemFormat_5_1_4,
|
||||
AAX_eStemFormat_7_0_4,
|
||||
AAX_eStemFormat_7_1_4,
|
||||
AAX_eStemFormat_7_0_6,
|
||||
AAX_eStemFormat_7_1_6,
|
||||
AAX_eStemFormat_9_0_4,
|
||||
AAX_eStemFormat_9_1_4,
|
||||
AAX_eStemFormat_9_0_6,
|
||||
AAX_eStemFormat_9_1_6,
|
||||
AAX_eStemFormat_Ambi_4_ACN,
|
||||
AAX_eStemFormat_Ambi_5_ACN,
|
||||
AAX_eStemFormat_Ambi_6_ACN,
|
||||
AAX_eStemFormat_Ambi_7_ACN,
|
||||
#endif
|
||||
};
|
||||
|
||||
static AAX_EStemFormat getFormatForAudioChannelSet (const AudioChannelSet& set, bool ignoreLayout) noexcept
|
||||
|
|
@ -224,6 +295,14 @@ namespace AAXClasses
|
|||
case 8: return AAX_eStemFormat_7_1_DTS;
|
||||
case 9: return AAX_eStemFormat_7_0_2;
|
||||
case 10: return AAX_eStemFormat_7_1_2;
|
||||
#if JUCE_AAX_SDK_2p5p0
|
||||
case 11: return AAX_eStemFormat_7_0_4;
|
||||
case 12: return AAX_eStemFormat_7_1_4;
|
||||
case 13: return AAX_eStemFormat_9_0_4;
|
||||
case 14: return AAX_eStemFormat_9_1_4;
|
||||
case 15: return AAX_eStemFormat_9_0_6;
|
||||
case 16: return AAX_eStemFormat_9_1_6;
|
||||
#endif
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
@ -254,6 +333,21 @@ namespace AAXClasses
|
|||
if (set == AudioChannelSet::create7point0point2()) return AAX_eStemFormat_7_0_2;
|
||||
if (set == AudioChannelSet::create7point1point2()) return AAX_eStemFormat_7_1_2;
|
||||
|
||||
#if JUCE_AAX_SDK_2p5p0
|
||||
if (set == AudioChannelSet::create5point0point2()) return AAX_eStemFormat_5_0_2;
|
||||
if (set == AudioChannelSet::create5point1point2()) return AAX_eStemFormat_5_1_2;
|
||||
if (set == AudioChannelSet::create5point0point4()) return AAX_eStemFormat_5_0_4;
|
||||
if (set == AudioChannelSet::create5point1point4()) return AAX_eStemFormat_5_1_4;
|
||||
if (set == AudioChannelSet::create7point0point4()) return AAX_eStemFormat_7_0_4;
|
||||
if (set == AudioChannelSet::create7point1point4()) return AAX_eStemFormat_7_1_4;
|
||||
if (set == AudioChannelSet::create7point0point6()) return AAX_eStemFormat_7_0_6;
|
||||
if (set == AudioChannelSet::create7point1point6()) return AAX_eStemFormat_7_1_6;
|
||||
if (set == AudioChannelSet::create9point0point4()) return AAX_eStemFormat_9_0_4;
|
||||
if (set == AudioChannelSet::create9point1point4()) return AAX_eStemFormat_9_1_4;
|
||||
if (set == AudioChannelSet::create9point0point6()) return AAX_eStemFormat_9_0_6;
|
||||
if (set == AudioChannelSet::create9point1point6()) return AAX_eStemFormat_9_1_6;
|
||||
#endif
|
||||
|
||||
auto order = set.getAmbisonicOrder();
|
||||
if (order >= 0)
|
||||
return stemFormatForAmbisonicOrder (order);
|
||||
|
|
@ -286,9 +380,30 @@ namespace AAXClasses
|
|||
case AAX_eStemFormat_Ambi_1_ACN: return AudioChannelSet::ambisonic (1);
|
||||
case AAX_eStemFormat_Ambi_2_ACN: return AudioChannelSet::ambisonic (2);
|
||||
case AAX_eStemFormat_Ambi_3_ACN: return AudioChannelSet::ambisonic (3);
|
||||
|
||||
#if JUCE_AAX_SDK_2p5p0
|
||||
case AAX_eStemFormat_5_0_2: return AudioChannelSet::create5point0point2();
|
||||
case AAX_eStemFormat_5_1_2: return AudioChannelSet::create5point1point2();
|
||||
case AAX_eStemFormat_5_0_4: return AudioChannelSet::create5point0point4();
|
||||
case AAX_eStemFormat_5_1_4: return AudioChannelSet::create5point1point4();
|
||||
case AAX_eStemFormat_7_0_4: return AudioChannelSet::create7point0point4();
|
||||
case AAX_eStemFormat_7_1_4: return AudioChannelSet::create7point1point4();
|
||||
case AAX_eStemFormat_7_0_6: return AudioChannelSet::create7point0point6();
|
||||
case AAX_eStemFormat_7_1_6: return AudioChannelSet::create7point1point6();
|
||||
case AAX_eStemFormat_9_0_4: return AudioChannelSet::create9point0point4();
|
||||
case AAX_eStemFormat_9_1_4: return AudioChannelSet::create9point1point4();
|
||||
case AAX_eStemFormat_9_0_6: return AudioChannelSet::create9point0point6();
|
||||
case AAX_eStemFormat_9_1_6: return AudioChannelSet::create9point1point6();
|
||||
case AAX_eStemFormat_Ambi_4_ACN: return AudioChannelSet::ambisonic (4);
|
||||
case AAX_eStemFormat_Ambi_5_ACN: return AudioChannelSet::ambisonic (5);
|
||||
case AAX_eStemFormat_Ambi_6_ACN: return AudioChannelSet::ambisonic (6);
|
||||
case AAX_eStemFormat_Ambi_7_ACN: return AudioChannelSet::ambisonic (7);
|
||||
#else
|
||||
case AAX_eStemFormat_Reserved_1:
|
||||
case AAX_eStemFormat_Reserved_2:
|
||||
case AAX_eStemFormat_Reserved_3:
|
||||
#endif
|
||||
|
||||
case AAX_eStemFormatNum:
|
||||
case AAX_eStemFormat_Any:
|
||||
case AAX_eStemFormat_INT32_MAX:
|
||||
|
|
@ -345,11 +460,12 @@ namespace AAXClasses
|
|||
|
||||
auto& channelOrder = aaxChannelOrder[layoutIndex];
|
||||
auto channelType = channelSet.getTypeOfChannel (static_cast<int> (juceIndex));
|
||||
auto numSpeakers = numElementsInArray (channelOrder.speakerOrder);
|
||||
const auto& speakerOrder = channelOrder.speakerOrder;
|
||||
|
||||
for (int i = 0; i < numSpeakers && channelOrder.speakerOrder[i] != 0; ++i)
|
||||
if (channelOrder.speakerOrder[i] == channelType)
|
||||
return i;
|
||||
const auto it = std::find (std::cbegin (speakerOrder), std::cend (speakerOrder), channelType);
|
||||
|
||||
if (it != std::cend (speakerOrder))
|
||||
return (int) std::distance (std::cbegin (speakerOrder), it);
|
||||
|
||||
return juceIndex;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -274,6 +274,34 @@ static std::optional<Steinberg::Vst::Speaker> getSpeakerType (const AudioChannel
|
|||
case AudioChannelSet::ambisonicACN33:
|
||||
case AudioChannelSet::ambisonicACN34:
|
||||
case AudioChannelSet::ambisonicACN35:
|
||||
case AudioChannelSet::ambisonicACN36:
|
||||
case AudioChannelSet::ambisonicACN37:
|
||||
case AudioChannelSet::ambisonicACN38:
|
||||
case AudioChannelSet::ambisonicACN39:
|
||||
case AudioChannelSet::ambisonicACN40:
|
||||
case AudioChannelSet::ambisonicACN41:
|
||||
case AudioChannelSet::ambisonicACN42:
|
||||
case AudioChannelSet::ambisonicACN43:
|
||||
case AudioChannelSet::ambisonicACN44:
|
||||
case AudioChannelSet::ambisonicACN45:
|
||||
case AudioChannelSet::ambisonicACN46:
|
||||
case AudioChannelSet::ambisonicACN47:
|
||||
case AudioChannelSet::ambisonicACN48:
|
||||
case AudioChannelSet::ambisonicACN49:
|
||||
case AudioChannelSet::ambisonicACN50:
|
||||
case AudioChannelSet::ambisonicACN51:
|
||||
case AudioChannelSet::ambisonicACN52:
|
||||
case AudioChannelSet::ambisonicACN53:
|
||||
case AudioChannelSet::ambisonicACN54:
|
||||
case AudioChannelSet::ambisonicACN55:
|
||||
case AudioChannelSet::ambisonicACN56:
|
||||
case AudioChannelSet::ambisonicACN57:
|
||||
case AudioChannelSet::ambisonicACN58:
|
||||
case AudioChannelSet::ambisonicACN59:
|
||||
case AudioChannelSet::ambisonicACN60:
|
||||
case AudioChannelSet::ambisonicACN61:
|
||||
case AudioChannelSet::ambisonicACN62:
|
||||
case AudioChannelSet::ambisonicACN63:
|
||||
case AudioChannelSet::wideLeft:
|
||||
case AudioChannelSet::wideRight:
|
||||
case AudioChannelSet::unknown:
|
||||
|
|
|
|||
|
|
@ -1214,7 +1214,23 @@ int32 AudioProcessor::getAAXPluginIDForMainBusConfig (const AudioChannelSet& mai
|
|||
AudioChannelSet::create7point1point2(),
|
||||
AudioChannelSet::ambisonic (1),
|
||||
AudioChannelSet::ambisonic (2),
|
||||
AudioChannelSet::ambisonic (3)
|
||||
AudioChannelSet::ambisonic (3),
|
||||
AudioChannelSet::create5point0point2(),
|
||||
AudioChannelSet::create5point1point2(),
|
||||
AudioChannelSet::create5point0point4(),
|
||||
AudioChannelSet::create5point1point4(),
|
||||
AudioChannelSet::create7point0point4(),
|
||||
AudioChannelSet::create7point1point4(),
|
||||
AudioChannelSet::create7point0point6(),
|
||||
AudioChannelSet::create7point1point6(),
|
||||
AudioChannelSet::create9point0point4(),
|
||||
AudioChannelSet::create9point1point4(),
|
||||
AudioChannelSet::create9point0point6(),
|
||||
AudioChannelSet::create9point1point6(),
|
||||
AudioChannelSet::ambisonic (4),
|
||||
AudioChannelSet::ambisonic (5),
|
||||
AudioChannelSet::ambisonic (6),
|
||||
AudioChannelSet::ambisonic (7)
|
||||
};
|
||||
|
||||
const auto index = (int) std::distance (std::begin (sets), std::find (std::begin (sets), std::end (sets), set));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue