comparison audioio/AudioCallbackPlaySource.h @ 12:ee967635c728

* Some work on making the time stretcher squash as well as stretch
author Chris Cannam
date Tue, 12 Sep 2006 16:43:00 +0000
parents cd5d7ff8ef38
children 085f34c73939
comparison
equal deleted inserted replaced
11:0dbd08e365ce 12:ee967635c728
175 * audio data, in all channels. This may safely be called from a 175 * audio data, in all channels. This may safely be called from a
176 * realtime thread. 176 * realtime thread.
177 */ 177 */
178 size_t getSourceSamples(size_t count, float **buffer); 178 size_t getSourceSamples(size_t count, float **buffer);
179 179
180 void setSlowdownFactor(size_t factor); 180 void setSlowdownFactor(float factor);
181 181
182 signals: 182 signals:
183 void modelReplaced(); 183 void modelReplaced();
184 184
185 void playStatusChanged(bool isPlaying); 185 void playStatusChanged(bool isPlaying);
245 void unifyRingBuffers(); 245 void unifyRingBuffers();
246 246
247 class TimeStretcherData 247 class TimeStretcherData
248 { 248 {
249 public: 249 public:
250 TimeStretcherData(size_t channels, size_t factor, size_t blockSize); 250 TimeStretcherData(size_t channels, float factor, size_t blockSize);
251 ~TimeStretcherData(); 251 ~TimeStretcherData();
252 252
253 size_t getFactor() const { return m_factor; } 253 float getFactor() const { return m_factor; }
254 IntegerTimeStretcher *getStretcher(size_t channel); 254 IntegerTimeStretcher *getStretcher(size_t channel);
255 float *getOutputBuffer(size_t channel); 255 float *getOutputBuffer(size_t channel);
256 float *getInputBuffer(); 256 float *getInputBuffer();
257 257
258 void run(size_t channel); 258 void run(size_t channel);
262 TimeStretcherData &operator=(const TimeStretcherData &); // not provided 262 TimeStretcherData &operator=(const TimeStretcherData &); // not provided
263 263
264 typedef std::pair<IntegerTimeStretcher *, float *> StretcherBuffer; 264 typedef std::pair<IntegerTimeStretcher *, float *> StretcherBuffer;
265 std::map<size_t, StretcherBuffer> m_stretcher; 265 std::map<size_t, StretcherBuffer> m_stretcher;
266 float *m_stretchInputBuffer; 266 float *m_stretchInputBuffer;
267 size_t m_factor; 267 float m_factor;
268 size_t m_blockSize; 268 size_t m_blockSize;
269 }; 269 };
270 270
271 size_t m_slowdownCounter; 271 size_t m_slowdownCounter;
272 TimeStretcherData *m_timeStretcher; 272 TimeStretcherData *m_timeStretcher;