forked from stuerp/foo_vis_spectrum_analyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathToneGenerator.cpp
More file actions
25 lines (18 loc) · 755 Bytes
/
ToneGenerator.cpp
File metadata and controls
25 lines (18 loc) · 755 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/** $VER: ToneGenerator.cpp (2024.02.13) P. Stuer - Generates a waveform and can produce foobar2000-compliant audio chunks for testing purposes. **/
#include "framework.h"
#include "ToneGenerator.h"
#pragma hdrstop
/// <summary>
/// Gets a chunk of audio samples from the generator.
/// </summary>
bool ToneGenerator::GetChunk(audio_chunk & chunk, uint32_t sampleRate)
{
for (size_t i = 0; i < _Data.size(); ++i)
{
_Data[i] = (audio_sample) (::sin(_Clock / (double) sampleRate * _Frequency * M_PI * 2.) * _Amplitude + (0.5 - (double) ::rand() / (double) RAND_MAX) * _NoiseAmplitude);
_Clock++;
}
chunk.set_data(_Data.data(), _Data.size(), _ChannelCount, sampleRate);
return true;
}
ToneGenerator _ToneGenerator;