Represents a set of audio channel types. More...
#include <juce_AudioChannelSet.h>
Public Types | |
enum | { maxChannelsOfNamedLayout = 8 } |
enum | ChannelType { unknown = 0, left = 1, right = 2, centre = 3, LFE = 4, leftSurround = 5, rightSurround = 6, leftCentre = 7, rightCentre = 8, centreSurround = 9, surround = centreSurround, leftSurroundSide = 10, rightSurroundSide = 11, topMiddle = 12, topFrontLeft = 13, topFrontCentre = 14, topFrontRight = 15, topRearLeft = 16, topRearCentre = 17, topRearRight = 18, LFE2 = 19, leftSurroundRear = 20, rightSurroundRear = 21, wideLeft = 22, wideRight = 23, ambisonicW = 24, ambisonicX = 25, ambisonicY = 26, ambisonicZ = 27, discreteChannel0 = 64 } |
Represents different audio channel types. More... | |
Public Member Functions | |
AudioChannelSet () noexcept | |
Creates an empty channel set. More... | |
void | addChannel (ChannelType newChannelType) |
Adds a channel to the set. More... | |
int | getChannelIndexForType (ChannelType type) const noexcept |
Returns the index for a particular channel-type. More... | |
Array< ChannelType > | getChannelTypes () const |
Returns an array of all the types in this channel set. More... | |
String | getDescription () const |
Returns the description of the current layout. More... | |
String | getSpeakerArrangementAsString () const |
Returns a string containing a whitespace-separated list of speaker types corresponding to each channel. More... | |
ChannelType | getTypeOfChannel (int channelIndex) const noexcept |
Returns the type of one of the channels in the set, by index. More... | |
int32 | getWaveChannelMask () const noexcept |
Returns a WAVEFORMATEXTENSIBLE channelMask representation (typically used in .wav files) of the receiver. More... | |
void | intersect (const AudioChannelSet &other) |
Intersect two channel layouts. More... | |
bool | isDisabled () const noexcept |
Returns true if there are no channels in the set. More... | |
bool | isDiscreteLayout () const noexcept |
Returns if this is a channel layout made-up of discrete channels. More... | |
bool | operator!= (const AudioChannelSet &) const noexcept |
bool | operator< (const AudioChannelSet &) const noexcept |
bool | operator== (const AudioChannelSet &) const noexcept |
void | removeChannel (ChannelType newChannelType) |
Removes a channel from the set. More... | |
int | size () const noexcept |
Returns the number of channels in the set. More... | |
Static Public Member Functions | |
static AudioChannelSet | ambisonic () |
Creates a set for ambisonic surround setups (ambisonicW, ambisonicX, ambisonicY, ambisonicZ). More... | |
static AudioChannelSet | canonicalChannelSet (int numChannels) |
Create a canonical channel set for a given number of channels. More... | |
static Array< AudioChannelSet > | channelSetsWithNumberOfChannels (int numChannels) |
Return an array of channel sets which have a given number of channels. More... | |
static AudioChannelSet | channelSetWithChannels (const Array< ChannelType > &) |
Creates a channel set for a list of channel types. More... | |
static AudioChannelSet | create5point0 () |
Creates a set for a 5.0 surround setup (left, right, centre, leftSurround, rightSurround). More... | |
static AudioChannelSet | create5point1 () |
Creates a set for a 5.1 surround setup (left, right, centre, leftSurround, rightSurround, LFE). More... | |
static AudioChannelSet | create6point0 () |
Creates a set for a 6.0 Cine surround setup (left, right, centre, leftSurround, rightSurround, centreSurround). More... | |
static AudioChannelSet | create6point0Music () |
Creates a set for a 6.0 Music surround setup (left, right, leftSurround, rightSurround, leftSurroundSide, rightSurroundSide). More... | |
static AudioChannelSet | create6point1 () |
Creates a set for a 6.1 Cine surround setup (left, right, centre, leftSurround, rightSurround, centreSurround, LFE). More... | |
static AudioChannelSet | create6point1Music () |
Creates a set for a 6.0 Music surround setup (left, right, leftSurround, rightSurround, leftSurroundSide, rightSurroundSide, LFE). More... | |
static AudioChannelSet | create7point0 () |
Creates a set for a DTS 7.0 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear). More... | |
static AudioChannelSet | create7point0SDDS () |
Creates a set for a SDDS 7.0 surround setup (left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre). More... | |
static AudioChannelSet | create7point1 () |
Creates a set for a DTS 7.1 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, LFE). More... | |
static AudioChannelSet | create7point1SDDS () |
Creates a set for a 7.1 surround setup (left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre, LFE). More... | |
static AudioChannelSet | createLCR () |
Creates a set containing an LCR set (left, right, centre). More... | |
static AudioChannelSet | createLCRS () |
Creates a set containing an LCRS set (left, right, centre, surround). More... | |
static AudioChannelSet | createLRS () |
Creates a set containing an LRS set (left, right, surround). More... | |
static AudioChannelSet | disabled () |
Creates a zero-channel set which can be used to indicate that a bus is disabled. More... | |
static AudioChannelSet | discreteChannels (int numChannels) |
Creates a set of untyped discrete channels. More... | |
static AudioChannelSet | fromAbbreviatedString (const String &set) |
Returns an AudioChannelSet from a string returned by getSpeakerArrangementAsString. More... | |
static AudioChannelSet | fromWaveChannelMask (int32 dwChannelMask) |
Create an AudioChannelSet from a WAVEFORMATEXTENSIBLE channelMask (typically used in .wav files). More... | |
static String | getAbbreviatedChannelTypeName (ChannelType) |
Returns the abbreviated name of a channel type. More... | |
static ChannelType | getChannelTypeFromAbbreviation (const String &abbreviation) |
Returns the channel type from an abbreviated name. More... | |
static String | getChannelTypeName (ChannelType) |
Returns the name of a given channel type. More... | |
static AudioChannelSet | hexagonal () |
Creates a set for hexagonal surround setup (left, right, leftSurroundRear, rightSurroundRear, centre, surroundCentre). More... | |
static AudioChannelSet | mono () |
Creates a one-channel mono set (centre). More... | |
static AudioChannelSet | namedChannelSet (int numChannels) |
Create a channel set for a given number of channels which is non-discrete. More... | |
static AudioChannelSet | octagonal () |
Creates a set for octagonal surround setup (left, right, leftSurround, rightSurround, centre, centreSurround, wideLeft, wideRight). More... | |
static AudioChannelSet | pentagonal () |
Creates a set for pentagonal surround setup (left, right, centre, leftSurroundRear, rightSurroundRear). More... | |
static AudioChannelSet | quadraphonic () |
Creates a set for quadraphonic surround setup (left, right, leftSurround, rightSurround) More... | |
static AudioChannelSet | stereo () |
Creates a set containing a stereo set (left, right). More... | |
Private Member Functions | |
AudioChannelSet (uint32) | |
AudioChannelSet (const Array< ChannelType > &) | |
Private Attributes | |
BigInteger | channels |
Represents a set of audio channel types.
For example, you might have a set of left + right channels, which is a stereo channel set. It is a collection of values from the AudioChannelSet::ChannelType enum, where each type may only occur once within the set.
The documentation below lists which AudioChannelSet corresponds to which native layouts used by AAX, VST2/VST3 and CoreAudio/AU. The layout tags in CoreAudio are particularly confusing. For example, the layout which is labeled as "7.1 SDDS" in Logic Pro, corresponds to CoreAudio/AU's kAudioChannelLayoutTag_DTS_7_0 tag, whereas AAX's DTS 7.1 Layout corresponds to CoreAudio/AU's kAudioChannelLayoutTag_MPEG_7_1_A format, etc. Please do not use the CoreAudio tag as an indication to the actual layout of the speakers.
Represents different audio channel types.
|
inlinenoexcept |
Creates an empty channel set.
You can call addChannel to add channels to the set.
References JUCE_CALLTYPE.
|
explicitprivate |
|
explicitprivate |
void AudioChannelSet::addChannel | ( | ChannelType | newChannelType | ) |
Adds a channel to the set.
Referenced by getChannelSetForSpeakerArrangement(), CoreAudioLayouts::toCoreAudio(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for ambisonic surround setups (ambisonicW, ambisonicX, ambisonicY, ambisonicZ).
Is equivalent to: kBFormat (VST), n/a (AAX), kAudioChannelLayoutTag_Ambisonic_B_Format (CoreAudio)
Referenced by getChannelSetForSpeakerArrangement(), and getVst3SpeakerArrangement().
|
static |
Create a canonical channel set for a given number of channels.
For example, numChannels = 1 will return mono, numChannels = 2 will return stereo, etc.
|
static |
Return an array of channel sets which have a given number of channels.
Referenced by AudioUnitHelpers::isNumberOfChannelsSupported().
|
static |
Creates a channel set for a list of channel types.
This function will assert if you supply a duplicate channel.
Note that this method ignores the order in which the channels are given, i.e. two arrays with the same elements but in a different order will still result in the same channel set.
Referenced by CoreAudioLayouts::fromCoreAudio().
|
static |
Creates a set for a 5.0 surround setup (left, right, centre, leftSurround, rightSurround).
Is equivalent to: k50 (VST), AAX_eStemFormat_5_0 (AAX), kAudioChannelLayoutTag_MPEG_5_0_A (CoreAudio)
This format is referred to as "5.0" in Cubase. This format is referred to as "5.0" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a 5.1 surround setup (left, right, centre, leftSurround, rightSurround, LFE).
Is equivalent to: k51 (VST), AAX_eStemFormat_5_1 (AAX), kAudioChannelLayoutTag_MPEG_5_1_A (CoreAudio)
This format is referred to as "5.1 (ITU 775)" in Logic Pro. This format is referred to as "5.1" in Cubase. This format is referred to as "5.1" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a 6.0 Cine surround setup (left, right, centre, leftSurround, rightSurround, centreSurround).
Is equivalent to: k60Cine (VST), AAX_eStemFormat_6_0 (AAX), kAudioChannelLayoutTag_AudioUnit_6_0 (CoreAudio)
Logic Pro incorrectly uses this for the surround format labeled "6.1 (ES/EX)". This format is referred to as "6.0 Cine" in Cubase. This format is referred to as "6.0" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a 6.0 Music surround setup (left, right, leftSurround, rightSurround, leftSurroundSide, rightSurroundSide).
Is equivalent to: k60Music (VST), n/a (AAX), kAudioChannelLayoutTag_DTS_6_0_A (CoreAudio)
This format is referred to as "6.0 Music" in Cubase.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a 6.1 Cine surround setup (left, right, centre, leftSurround, rightSurround, centreSurround, LFE).
Is equivalent to: k61Cine (VST), AAX_eStemFormat_6_1 (AAX), kAudioChannelLayoutTag_MPEG_6_1_A (CoreAudio)
This format is referred to as "6.1" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a 6.0 Music surround setup (left, right, leftSurround, rightSurround, leftSurroundSide, rightSurroundSide, LFE).
Is equivalent to: k61Music (VST), n/a (AAX), kAudioChannelLayoutTag_DTS_6_1_A (CoreAudio)
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a DTS 7.0 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear).
Is equivalent to: k70Music (VST), AAX_eStemFormat_7_0_DTS (AAX), kAudioChannelLayoutTag_AudioUnit_7_0 (CoreAudio)
This format is referred to as "7.0" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a SDDS 7.0 surround setup (left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre).
Is equivalent to: k70Cine (VST), AAX_eStemFormat_7_0_SDDS (AAX), kAudioChannelLayoutTag_AudioUnit_7_0_Front (CoreAudio)
This format is referred to as "7.0 SDDS" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a DTS 7.1 surround setup (left, right, centre, leftSurroundSide, rightSurroundSide, leftSurroundRear, rightSurroundRear, LFE).
Is equivalent to: k71CineSideFill (VST), AAX_eStemFormat_7_1_DTS (AAX), kAudioChannelLayoutTag_MPEG_7_1_C/kAudioChannelLayoutTag_ITU_3_4_1 (CoreAudio)
This format is referred to as "7.1 (3/4.1)" in Logic Pro. This format is referred to as "7.1" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set for a 7.1 surround setup (left, right, centre, leftSurround, rightSurround, leftCentre, rightCentre, LFE).
Is equivalent to: k71Cine (VST), AAX_eStemFormat_7_1_SDDS (AAX), kAudioChannelLayoutTag_MPEG_7_1_A (CoreAudio)
This format is referred to as "7.1 (SDDS)" in Logic Pro. This format is referred to as "7.1 SDDS" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set containing an LCR set (left, right, centre).
Is equivalent to: k30Cine (VST), AAX_eStemFormat_LCR (AAX), kAudioChannelLayoutTag_MPEG_3_0_A (CoreAudio)
This format is referred to as "LRC" in Cubase. This format is referred to as "LCR" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set containing an LCRS set (left, right, centre, surround).
Is equivalent to: k40Cine (VST), AAX_eStemFormat_LCRS (AAX), kAudioChannelLayoutTag_MPEG_4_0_A (CoreAudio)
This format is referred to as "LCRS (Pro Logic)" in Logic Pro. This format is referred to as "LRCS" in Cubase. This format is referred to as "LCRS" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set containing an LRS set (left, right, surround).
Is equivalent to: k30Music (VST), n/a (AAX), kAudioChannelLayoutTag_ITU_2_1 (CoreAudio)
This format is referred to as "LRS" in Cubase.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a zero-channel set which can be used to indicate that a bus is disabled.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), AudioUnitHelpers::setBusesLayout(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Creates a set of untyped discrete channels.
Referenced by CoreAudioLayouts::getCoreAudioLayoutChannels(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Returns an AudioChannelSet from a string returned by getSpeakerArrangementAsString.
|
static |
Create an AudioChannelSet from a WAVEFORMATEXTENSIBLE channelMask (typically used in .wav files).
Referenced by CoreAudioLayouts::getCoreAudioLayoutChannels().
|
static |
Returns the abbreviated name of a channel type.
For example, this method may return "Ls".
|
noexcept |
Returns the index for a particular channel-type.
Will return -1 if the this set does not contain a channel of this type.
|
static |
Returns the channel type from an abbreviated name.
|
static |
Returns the name of a given channel type.
For example, this method may return "Surround Left".
Array<ChannelType> AudioChannelSet::getChannelTypes | ( | ) | const |
Returns an array of all the types in this channel set.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), and CoreAudioLayouts::getCoreAudioLayoutChannels().
String AudioChannelSet::getDescription | ( | ) | const |
Returns the description of the current layout.
For example, this method may return "Quadraphonic". Note that the returned string may not be unique.
String AudioChannelSet::getSpeakerArrangementAsString | ( | ) | const |
Returns a string containing a whitespace-separated list of speaker types corresponding to each channel.
For example in a 5.1 arrangement, the string may be "L R C Lfe Ls Rs". If the speaker arrangement is unknown, the returned string will be empty.
|
noexcept |
Returns the type of one of the channels in the set, by index.
Referenced by SpeakerMappings::VstSpeakerConfigurationHolder::VstSpeakerConfigurationHolder().
|
noexcept |
Returns a WAVEFORMATEXTENSIBLE channelMask representation (typically used in .wav files) of the receiver.
Returns -1 if the receiver cannot be represented in a WAVEFORMATEXTENSIBLE channelMask representation.
|
static |
Creates a set for hexagonal surround setup (left, right, leftSurroundRear, rightSurroundRear, centre, surroundCentre).
Is equivalent to: n/a (VST), n/a (AAX), kAudioChannelLayoutTag_Hexagonal (CoreAudio)
|
inline |
Intersect two channel layouts.
References channels, JUCE_CALLTYPE, operator!=(), juce::operator<(), and operator==().
|
inlinenoexcept |
Returns true if there are no channels in the set.
Referenced by AudioProcessor::Bus::isEnabled().
|
noexcept |
Returns if this is a channel layout made-up of discrete channels.
|
static |
Creates a one-channel mono set (centre).
Is equivalent to: kMonoAAX (VST), AAX_eStemFormat_Mono (AAX), kAudioChannelLayoutTag_Mono (CoreAudio)
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getSpeakerType(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
static |
Create a channel set for a given number of channels which is non-discrete.
If numChannels is larger than the number of channels of the surround format with the maximum amount of channels (currently 7.1 Surround), then this function returns an empty set.
|
static |
Creates a set for octagonal surround setup (left, right, leftSurround, rightSurround, centre, centreSurround, wideLeft, wideRight).
Is equivalent to: n/a (VST), n/a (AAX), kAudioChannelLayoutTag_Octagonal (CoreAudio)
|
noexcept |
|
noexcept |
|
noexcept |
|
static |
Creates a set for pentagonal surround setup (left, right, centre, leftSurroundRear, rightSurroundRear).
Is equivalent to: n/a (VST), n/a (AAX), kAudioChannelLayoutTag_Pentagonal (CoreAudio)
|
static |
Creates a set for quadraphonic surround setup (left, right, leftSurround, rightSurround)
Is equivalent to: k40Music (VST), AAX_eStemFormat_Quad (AAX), kAudioChannelLayoutTag_Quadraphonic (CoreAudio)
This format is referred to as "Quadraphonic" in Logic Pro. This format is referred to as "Quadro" in Cubase. This format is referred to as "Quad" in Pro Tools.
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
void AudioChannelSet::removeChannel | ( | ChannelType | newChannelType | ) |
Removes a channel from the set.
|
noexcept |
Returns the number of channels in the set.
Referenced by getChannelSetForSpeakerArrangement(), AudioProcessor::BusesLayout::getNumChannels(), VST3BufferExchange< float >::mapArrangementToBuses(), and SpeakerMappings::VstSpeakerConfigurationHolder::VstSpeakerConfigurationHolder().
|
static |
Creates a set containing a stereo set (left, right).
Is equivalent to: kStereo (VST), AAX_eStemFormat_Stereo (AAX), kAudioChannelLayoutTag_Stereo (CoreAudio)
Referenced by SpeakerMappings::channelSetToVstArrangementType(), getChannelSetForSpeakerArrangement(), getVst3SpeakerArrangement(), and SpeakerMappings::vstArrangementTypeToChannelSet().
|
private |
Referenced by intersect().