From b5ad7b02612bf30a491d3aeb4583056a21252d52 Mon Sep 17 00:00:00 2001 From: cflip Date: Wed, 8 Dec 2021 17:55:57 -0700 Subject: Use returned sample rate instead of hardcoded --- main.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/main.cpp b/main.cpp index 1f3b6af..1572494 100644 --- a/main.cpp +++ b/main.cpp @@ -4,7 +4,6 @@ #include const float AMPLITUDE = 0.2f; -const int SAMPLE_RATE = 44100; const float sequence[8] = { 130.81f, 220.f, 130.81f, 440.f, 330.f, 440.f, 130.81f, 261.63f }; @@ -12,6 +11,7 @@ struct CallbackInfo { int samplesDone; int samplesPerStep; int currentStep; + int sampleRate; }; void AudioCallback(void *userData, Uint8 *rawBuffer, int bytes) @@ -22,7 +22,7 @@ void AudioCallback(void *userData, Uint8 *rawBuffer, int bytes) for (int i = 0; i < length; i++, info->samplesDone++) { float freq = sequence[info->currentStep]; - float time = (float)info->samplesDone / (float)SAMPLE_RATE; + float time = (float)info->samplesDone / (float)info->sampleRate; if (info->samplesDone >= info->samplesPerStep) { info->samplesDone = 0; @@ -67,12 +67,9 @@ int main(int argc, char** argv) SDL_Event event; CallbackInfo info; - info.samplesDone = 0; - info.samplesPerStep = SAMPLE_RATE * 0.2f; - info.currentStep = 0; SDL_AudioSpec desiredSpec; - desiredSpec.freq = SAMPLE_RATE; + desiredSpec.freq = 44100; desiredSpec.format = AUDIO_F32SYS; desiredSpec.channels = 1; desiredSpec.samples = 2048; @@ -85,9 +82,13 @@ int main(int argc, char** argv) return 1; } - if (desiredSpec.format != obtainedSpec.format) { + if (desiredSpec.format != obtainedSpec.format) std::cerr << "Different format: " << obtainedSpec.format << std::endl; - } + + info.samplesDone = 0; + info.samplesPerStep = obtainedSpec.freq * 0.4f; + info.currentStep = 0; + info.sampleRate = obtainedSpec.freq; SDL_PauseAudio(0); -- cgit v1.2.3