summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorcflip <cflip@cflip.net>2021-12-08 17:55:57 -0700
committercflip <cflip@cflip.net>2021-12-08 17:55:57 -0700
commitb5ad7b02612bf30a491d3aeb4583056a21252d52 (patch)
treea3b3dbb9ba3c35ed853f0effe6c48b0fbaab034f /main.cpp
parent1f12ebeb663197ba956581869a12d7fb99d9f7fc (diff)
Use returned sample rate instead of hardcoded
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp17
1 files 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 <iostream>
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);