27template <
class T =
int16_t>
63 LOGD(
"readBytes: %d", (
int)len);
66 int frame_size =
sizeof(
T) * channels;
67 int frames = len / frame_size;
68 if (len >= frame_size) {
83 LOGE(
"setFrequency not supported");
100 LOGI(
"setPlayTime: playMs=%d, upPercent=%d, downPercent=%d",
playMs,
146 T* result_buffer = (
T*)buffer;
152 for (
int j = 0;
j < frames;
j++) {
161 for (
int ch = 0;
ch < channels;
ch++) {
162 *result_buffer++ = sample;
198 int frame_size,
int channels) {
219template <
class T =
int16_t>
224 float phase = 0.0f) {
225 LOGD(
"SineWaveGenerator");
238 LOGI(
"%s::begin(channels=%d, sample_rate=%d)",
"SineWaveGenerator",
246 LOGI(
"%s::begin(channels=%d, sample_rate=%d, frequency=%.2f)",
251 if (frequency > 0.0f) {
257 bool begin(
int channels,
int sample_rate,
float frequency) {
275 LOGI(
"setFrequency: %.2f", frequency);
307 LOGI(
"amplitude: %f", this->m_amplitude);
319template <
class T =
int16_t>
324 LOGD(
"FastSineGenerator");
342 float p = (
t - (
int)
t) - 0.5f;
344 return (p - 6.283211f *
pp * p + 9.132843f *
pp *
pp * p) * -6.221086f;
355template <
class T =
int16_t>
360 LOGD(
"SquareWaveGenerator");
371 return (
value >= 0) ? amplitude : -amplitude;
382template <
class T =
int16_t>
387 LOGD(
"SawToothGenerator");
405 float p = (
t - (
int)
t) - 0.5f;
417template <
class T =
int16_t>
429 int random(
int min,
int max) {
return min +
rand() % ((max + 1) - min); }
439template <
class T =
int16_t>
461 for (
int i = 0; i < 5; i++) {
486template <
class T =
int16_t>
508template <
class T =
int16_t>
572template <
class T =
int16_t>
588 template <
size_t arrayLen>
598 template <
int arrayLen>
606 for (
int j = 0;
j < size;
j++) {
609 LOGI(
"table_length: %d", (
int)size);
661 static_cast<float>(sampleRate) /
663 float angle = 2.0 *
PI / sample_count;
664 table.resize(sample_count);
665 for (
int j = 0;
j < sample_count;
j++) {
669 return sampleRate / sample_count;
693template <
class T =
int16_t>
730template <
class T =
int16_t>
748 if (
angle >= 360.0f) {
749 while (
angle >= 360.0f) {
803 0, 0.0174524, 0.0348995, 0.052336, 0.0697565, 0.0871557,
804 0.104528, 0.121869, 0.139173, 0.156434, 0.173648, 0.190809,
805 0.207912, 0.224951, 0.241922, 0.258819, 0.275637, 0.292372,
806 0.309017, 0.325568, 0.34202, 0.358368, 0.374607, 0.390731,
807 0.406737, 0.422618, 0.438371, 0.45399, 0.469472, 0.48481,
808 0.5, 0.515038, 0.529919, 0.544639, 0.559193, 0.573576,
809 0.587785, 0.601815, 0.615661, 0.62932, 0.642788, 0.656059,
810 0.669131, 0.681998, 0.694658, 0.707107, 0.71934, 0.731354,
811 0.743145, 0.75471, 0.766044, 0.777146, 0.788011, 0.798636,
812 0.809017, 0.819152, 0.829038, 0.838671, 0.848048, 0.857167,
813 0.866025, 0.87462, 0.882948, 0.891007, 0.898794, 0.906308,
814 0.913545, 0.920505, 0.927184, 0.93358, 0.939693, 0.945519,
815 0.951057, 0.956305, 0.961262, 0.965926, 0.970296, 0.97437,
816 0.978148, 0.981627, 0.984808, 0.987688, 0.990268, 0.992546,
817 0.994522, 0.996195, 0.997564, 0.99863, 0.999391, 0.999848,
818 1, 0.999848, 0.999391, 0.99863, 0.997564, 0.996195,
819 0.994522, 0.992546, 0.990268, 0.987688, 0.984808, 0.981627,
820 0.978148, 0.97437, 0.970296, 0.965926, 0.961262, 0.956305,
821 0.951057, 0.945519, 0.939693, 0.93358, 0.927184, 0.920505,
822 0.913545, 0.906308, 0.898794, 0.891007, 0.882948, 0.87462,
823 0.866025, 0.857167, 0.848048, 0.838671, 0.829038, 0.819152,
824 0.809017, 0.798636, 0.788011, 0.777146, 0.766044, 0.75471,
825 0.743145, 0.731354, 0.71934, 0.707107, 0.694658, 0.681998,
826 0.669131, 0.656059, 0.642788, 0.62932, 0.615661, 0.601815,
827 0.587785, 0.573576, 0.559193, 0.544639, 0.529919, 0.515038,
828 0.5, 0.48481, 0.469472, 0.45399, 0.438371, 0.422618,
829 0.406737, 0.390731, 0.374607, 0.358368, 0.34202, 0.325568,
830 0.309017, 0.292372, 0.275637, 0.258819, 0.241922, 0.224951,
831 0.207912, 0.190809, 0.173648, 0.156434, 0.139173, 0.121869,
832 0.104528, 0.0871557, 0.0697565, 0.052336, 0.0348995, 0.0174524,
871template <
class T =
int16_t>
884 for (
auto& generator :
vector) {
885 if (generator->isActive()) {
886 T sample = generator->readSample();
891 return count > 0.0f ? total / count : 0;
907template <
class T =
int16_t>
#define PI
Definition AudioEffectsSuite.h:27
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30