mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Added a convenient function to get all channel sets with a particular number of channels
This commit is contained in:
parent
f415b09c7b
commit
7cdcb19d25
3 changed files with 80 additions and 6 deletions
|
|
@ -277,3 +277,60 @@ AudioChannelSet AudioChannelSet::namedChannelSet (int numChannels)
|
|||
|
||||
return AudioChannelSet();
|
||||
}
|
||||
|
||||
Array<AudioChannelSet> AudioChannelSet::channelSetsWithNumberOfChannels (int numChannels)
|
||||
{
|
||||
Array<AudioChannelSet> retval;
|
||||
|
||||
if (numChannels != 0)
|
||||
{
|
||||
retval.add (AudioChannelSet::discreteChannels (numChannels));
|
||||
|
||||
if (numChannels == 1)
|
||||
{
|
||||
retval.add (AudioChannelSet::mono());
|
||||
}
|
||||
else if (numChannels == 2)
|
||||
{
|
||||
retval.add (AudioChannelSet::stereo());
|
||||
}
|
||||
else if (numChannels == 3)
|
||||
{
|
||||
retval.add (AudioChannelSet::createLCR());
|
||||
retval.add (AudioChannelSet::createLRS());
|
||||
}
|
||||
else if (numChannels == 4)
|
||||
{
|
||||
retval.add (AudioChannelSet::quadraphonic());
|
||||
retval.add (AudioChannelSet::createLCRS());
|
||||
retval.add (AudioChannelSet::ambisonic());
|
||||
}
|
||||
else if (numChannels == 5)
|
||||
{
|
||||
retval.add (AudioChannelSet::create5point0());
|
||||
retval.add (AudioChannelSet::pentagonal());
|
||||
}
|
||||
else if (numChannels == 6)
|
||||
{
|
||||
retval.add (AudioChannelSet::create5point1());
|
||||
retval.add (AudioChannelSet::create6point0());
|
||||
retval.add (AudioChannelSet::create6point0Music());
|
||||
retval.add (AudioChannelSet::hexagonal());
|
||||
}
|
||||
else if (numChannels == 7)
|
||||
{
|
||||
retval.add (AudioChannelSet::create7point0());
|
||||
retval.add (AudioChannelSet::create7point0SDDS());
|
||||
retval.add (AudioChannelSet::create6point1());
|
||||
retval.add (AudioChannelSet::create6point1Music());
|
||||
}
|
||||
else if (numChannels == 8)
|
||||
{
|
||||
retval.add (AudioChannelSet::create7point1());
|
||||
retval.add (AudioChannelSet::create7point1SDDS());
|
||||
retval.add (AudioChannelSet::octagonal());
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -251,6 +251,9 @@ public:
|
|||
function returns an empty set.*/
|
||||
static AudioChannelSet namedChannelSet (int numChannels);
|
||||
|
||||
/** Return an array of channel sets which have a given number of channels */
|
||||
static Array<AudioChannelSet> channelSetsWithNumberOfChannels (int numChannels);
|
||||
|
||||
//==============================================================================
|
||||
/** Represents different audio channel types. */
|
||||
enum ChannelType
|
||||
|
|
|
|||
|
|
@ -1157,19 +1157,33 @@ bool AudioProcessor::Bus::isNumberOfChannelsSupported (int channels) const
|
|||
{
|
||||
if (channels == 0) return isLayoutSupported(AudioChannelSet::disabled());
|
||||
|
||||
return isLayoutSupported (supportedLayoutWithChannels (channels));
|
||||
const AudioChannelSet set = supportedLayoutWithChannels (channels);
|
||||
return (! set.isDisabled()) && isLayoutSupported (set);
|
||||
}
|
||||
|
||||
AudioChannelSet AudioProcessor::Bus::supportedLayoutWithChannels (int channels) const
|
||||
{
|
||||
if (channels == 0) return AudioChannelSet::disabled();
|
||||
|
||||
AudioChannelSet set;
|
||||
if (! (set = AudioChannelSet::namedChannelSet (channels)).isDisabled() && isLayoutSupported (set))
|
||||
return set;
|
||||
{
|
||||
AudioChannelSet set;
|
||||
if (! (set = AudioChannelSet::namedChannelSet (channels)).isDisabled() && isLayoutSupported (set))
|
||||
return set;
|
||||
|
||||
if (! (set = AudioChannelSet::discreteChannels (channels)).isDisabled() && isLayoutSupported (set))
|
||||
return set;
|
||||
if (! (set = AudioChannelSet::discreteChannels (channels)).isDisabled() && isLayoutSupported (set))
|
||||
return set;
|
||||
}
|
||||
|
||||
Array<AudioChannelSet> sets = AudioChannelSet::channelSetsWithNumberOfChannels (channels);
|
||||
const int n = sets.size();
|
||||
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
const AudioChannelSet set = sets.getReference (i);
|
||||
|
||||
if (isLayoutSupported (set))
|
||||
return set;
|
||||
}
|
||||
|
||||
return AudioChannelSet::disabled();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue