Async 1.8.0
AsyncAudioDelayLine.h
Go to the documentation of this file.
1
28#ifndef ASYNC_AUDIO_DELAY_LINE_INCLUDED
29#define ASYNC_AUDIO_DELAY_LINE_INCLUDED
30
31
32/****************************************************************************
33 *
34 * System Includes
35 *
36 ****************************************************************************/
37
38
39
40/****************************************************************************
41 *
42 * Project Includes
43 *
44 ****************************************************************************/
45
46#include <AsyncAudioSink.h>
47#include <AsyncAudioSource.h>
48
49
50/****************************************************************************
51 *
52 * Local Includes
53 *
54 ****************************************************************************/
55
56
57
58/****************************************************************************
59 *
60 * Forward declarations
61 *
62 ****************************************************************************/
63
64
65
66/****************************************************************************
67 *
68 * Namespace
69 *
70 ****************************************************************************/
71
72namespace Async
73{
74
75
76/****************************************************************************
77 *
78 * Forward declarations of classes inside of the declared namespace
79 *
80 ****************************************************************************/
81
82
83
84/****************************************************************************
85 *
86 * Defines & typedefs
87 *
88 ****************************************************************************/
89
90
91
92/****************************************************************************
93 *
94 * Exported Global Variables
95 *
96 ****************************************************************************/
97
98
99
100/****************************************************************************
101 *
102 * Class definitions
103 *
104 ****************************************************************************/
105
118{
119 public:
124 explicit AudioDelayLine(int length_ms);
125
130
140 void setFadeTime(int time_ms);
141
153 void mute(bool do_mute, int time_ms=0);
154
163 void clear(int time_ms=-1);
164
174 int writeSamples(const float *samples, int count);
175
184 void flushSamples(void);
185
194 void resumeOutput(void);
195
205
206
207 protected:
208
209 private:
210 static const int DEFAULT_FADE_TIME = 10; // 10ms default fade time
211
212 float *buf;
213 int size;
214 int ptr;
215 int flush_cnt;
216 bool is_muted;
217 int mute_cnt;
218 int last_clear;
219 float *fade_gain;
220 int fade_len;
221 int fade_pos;
222 int fade_dir;
223
225 AudioDelayLine& operator=(const AudioDelayLine&);
226 void writeRemainingSamples(void);
227
228 inline float currentFadeGain(void)
229 {
230 if (fade_gain == 0)
231 {
232 return 1.0f;
233 }
234
235 float gain = fade_gain[fade_pos];
236 fade_pos += fade_dir;
237
238 if ((fade_dir > 0) && (fade_pos >= fade_len-1))
239 {
240 fade_dir = 0;
241 fade_pos = fade_len-1;
242 }
243 else if ((fade_dir < 0) && (fade_pos <= 0))
244 {
245 fade_dir = 0;
246 fade_pos = 0;
247 }
248
249 return gain;
250
251 } /* AudioDelayLine::currentFadeGain */
252
253}; /* class AudioDelayLine */
254
255
256} /* namespace */
257
258#endif /* ASYNC_AUDIO_DELAY_LINE_INCLUDED */
259
260
261
262/*
263 * This file has not been truncated
264 */
265
This file contains the base class for an audio sink.
This file contains the base class for an audio source.
This class implements an audio delay line.
AudioDelayLine(int length_ms)
Constuctor.
~AudioDelayLine(void)
Destructor.
void flushSamples(void)
Tell the sink to flush the previously written samples.
void mute(bool do_mute, int time_ms=0)
Mute audio.
void resumeOutput(void)
Resume audio output to the sink.
int writeSamples(const float *samples, int count)
Write samples into the delay line.
void allSamplesFlushed(void)
The registered sink has flushed all samples.
void clear(int time_ms=-1)
Clear samples in the delay line.
void setFadeTime(int time_ms)
Set the fade in/out time when muting and clearing.
The base class for an audio sink.
The base class for an audio source.
Namespace for the asynchronous programming classes.