33 releaseMasterResources();
42 if (source ==
nullptr)
109 if ((! playing) && masterSource !=
nullptr)
128 while (--n >= 0 && ! stopped)
137 if (sampleRate > 0.0)
143 if (sampleRate > 0.0)
151 if (sampleRate > 0.0)
165 if (positionableSource !=
nullptr)
167 if (sampleRate > 0 && sourceSampleRate > 0)
172 if (resamplerSource !=
nullptr)
181 if (positionableSource !=
nullptr)
183 const double ratio = (sampleRate > 0 && sourceSampleRate > 0) ? sampleRate / sourceSampleRate : 1.0;
194 if (positionableSource !=
nullptr)
196 const double ratio = (sampleRate > 0 && sourceSampleRate > 0) ? sampleRate / sourceSampleRate : 1.0;
206 return positionableSource !=
nullptr && positionableSource->
isLooping();
221 if (masterSource !=
nullptr)
224 if (resamplerSource !=
nullptr && sourceSampleRate > 0)
230void AudioTransportSource::releaseMasterResources()
234 if (masterSource !=
nullptr)
242 releaseMasterResources();
249 if (masterSource !=
nullptr && ! stopped)
256 for (
int i =
info.buffer->getNumChannels(); --i >= 0;)
257 info.buffer->applyGainRamp (i,
info.startSample, jmin (256,
info.numSamples), 1.0f, 0.0f);
259 if (
info.numSamples > 256)
260 info.buffer->clear (
info.startSample + 256,
info.numSamples - 256);
271 for (
int i =
info.buffer->getNumChannels(); --i >= 0;)
272 info.buffer->applyGainRamp (i,
info.startSample,
info.numSamples, lastGain, gain);
276 info.clearActiveBufferRegion();
virtual void releaseResources()=0
virtual void prepareToPlay(int samplesPerBlockExpected, double sampleRate)=0
virtual void getNextAudioBlock(const AudioSourceChannelInfo &bufferToFill)=0
bool hasStreamFinished() const noexcept
void prepareToPlay(int samplesPerBlockExpected, double sampleRate) override
int64 getNextReadPosition() const override
double getCurrentPosition() const
void releaseResources() override
void getNextAudioBlock(const AudioSourceChannelInfo &) override
int64 getTotalLength() const override
~AudioTransportSource() override
void setPosition(double newPosition)
double getLengthInSeconds() const
void setGain(float newGain) noexcept
void setSource(PositionableAudioSource *newSource, int readAheadBufferSize=0, TimeSliceThread *readAheadThread=nullptr, double sourceSampleRateToCorrectFor=0.0, int maxNumChannels=2)
bool isLooping() const override
void setNextReadPosition(int64 newPosition) override
virtual bool isLooping() const =0
virtual int64 getNextReadPosition() const =0
virtual int64 getTotalLength() const =0
virtual void setNextReadPosition(int64 newPosition)=0
void setResamplingRatio(double samplesInPerOutputSample)
static void JUCE_CALLTYPE sleep(int milliseconds)