27 : currentSampleRate (0.0), bufferSizeExpected (0)
39 if (input !=
nullptr && ! inputs.contains (input))
46 localRate = currentSampleRate;
47 localBufferSize = bufferSizeExpected;
55 inputsToDelete.
setBit (inputs.size(), deleteWhenRemoved);
64 std::unique_ptr<AudioSource> toDelete;
68 const int index = inputs.indexOf (input);
73 if (inputsToDelete [index])
74 toDelete.reset (input);
77 inputs.remove (index);
91 for (
int i = inputs.size(); --i >= 0;)
92 if (inputsToDelete[i])
93 toDelete.
add (inputs.getUnchecked(i));
98 for (
int i = toDelete.
size(); --i >= 0;)
104 tempBuffer.
setSize (2, samplesPerBlockExpected);
108 currentSampleRate = sampleRate;
109 bufferSizeExpected = samplesPerBlockExpected;
111 for (
int i = inputs.size(); --i >= 0;)
112 inputs.getUnchecked(i)->prepareToPlay (samplesPerBlockExpected, sampleRate);
119 for (
int i = inputs.size(); --i >= 0;)
120 inputs.getUnchecked(i)->releaseResources();
124 currentSampleRate = 0;
125 bufferSizeExpected = 0;
132 if (inputs.size() > 0)
134 inputs.getUnchecked(0)->getNextAudioBlock (info);
136 if (inputs.size() > 1)
143 for (
int i = 1; i < inputs.size(); ++i)
145 inputs.getUnchecked(i)->getNextAudioBlock (info2);
void clearActiveBufferRegion() const
void getNextAudioBlock(const AudioSourceChannelInfo &) override
void releaseResources() override
virtual void releaseResources()=0
void setSize(int newNumChannels, int newNumSamples, bool keepExistingContent=false, bool clearExtraSpace=false, bool avoidReallocating=false)
int getNumChannels() const noexcept
virtual void prepareToPlay(int samplesPerBlockExpected, double sampleRate)=0
int size() const noexcept
ObjectClass * getUnchecked(int index) const noexcept
AudioBuffer< float > * buffer
void addFrom(int destChannel, int destStartSample, const AudioBuffer &source, int sourceChannel, int sourceStartSample, int numSamples, Type gainToApplyToSource=Type(1)) noexcept
~MixerAudioSource() override
ObjectClass * add(ObjectClass *newObject)
void shiftBits(int howManyBitsLeft, int startBit)
int getNumSamples() const noexcept
void removeInputSource(AudioSource *input)
void prepareToPlay(int samplesPerBlockExpected, double sampleRate) override
void setBit(int bitNumber)
void addInputSource(AudioSource *newInput, bool deleteWhenRemoved)