3#include "BaseAudioReader.h"
64 int32_t
read(Signal32& outputSignal)
override
72 Signal32& outputSignal,
double timeStretch = 1.0,
73 double pitchFactor = 1.0)
75 PPK_ASSERT(outputSignal.getNumOfChannels() == 2);
77 int num_samples = outputSignal.getNumOfDataPoints();
79 bool end_of_file =
false;
80 _time_and_pitch->setTimeStretchAndPitchFactor(timeStretch, pitchFactor);
81 while (num_samples > 0)
85 num_samples_to_retrieve)
89 _sig.ensureDimensions(2, feed_now);
92 if (samples_read < feed_now)
113 float* dmp[2] = { outputSignal.getWriteChannelPtr(0),
114 outputSignal.getWriteChannelPtr(1) };
122 float* smp[2] = { outputSignal.getWriteChannelPtr(0) + p,
123 outputSignal.getWriteChannelPtr(1) + p };
125 int num_samples_retrieved =
std::min(
126 num_samples_to_retrieve,
130 p += num_samples_retrieved;
131 num_samples -= num_samples_retrieved;
157 if (n < sig.getNumOfDataPoints())
161 sig.setToValue(0.f, n, n + silent_n, -1);
static Settings & settings()
int _silent_samples_to_append
std::unique_ptr< TimeAndPitch > _time_and_pitch
int32_t read(Signal32 &outputSignal) override
int64_t getNumOfSourceSamples() const override
int32_t _read_from_base_reader_append_silence(Signal32 &sig)
TimeAndPitchAudioReader(std::unique_ptr< BaseAudioReader > reader)
int32_t readTimeAndPitch(Signal32 &outputSignal, double timeStretch=1.0, double pitchFactor=1.0)
bool setPosition(int64_t newSamplePosition) override
set the position based on input samples
void setQuality(const TimeAndPitch::QualitySettings &settings)
bool canSeek() const override
int _initial_samples_to_discard
std::unique_ptr< BaseAudioReader > _base_reader
void setLooping(bool flag)
AudioFormat getFormat() const override
int64_t getPosition() const override
static constexpr int _block_size
virtual ~TimeAndPitchAudioReader()
std::shared_ptr< TimeAndPitchAudioReader > SharedTimeAndPitchAudioReader