summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/audio.cc15
-rw-r--r--src/audio/audio.h2
2 files changed, 17 insertions, 0 deletions
diff --git a/src/audio/audio.cc b/src/audio/audio.cc
index 6249479..517e376 100644
--- a/src/audio/audio.cc
+++ b/src/audio/audio.cc
@@ -38,7 +38,9 @@ void audio_init() {
printf("Failed to open playback device.\n");
return;
}
+}
+void audio_start() {
if (ma_device_start(&g_device) != MA_SUCCESS) {
printf("Failed to start playback device.\n");
ma_device_uninit(&g_device);
@@ -46,6 +48,19 @@ void audio_init() {
}
}
+void audio_render_silent(float duration_sec) {
+ const int sample_rate = 32000;
+ const int chunk_size = 512;
+ int total_frames = (int)(duration_sec * sample_rate);
+ float buffer[chunk_size * 2]; // Stereo
+
+ while (total_frames > 0) {
+ int frames_to_render = (total_frames > chunk_size) ? chunk_size : total_frames;
+ synth_render(buffer, frames_to_render);
+ total_frames -= frames_to_render;
+ }
+}
+
void audio_update() {
}
diff --git a/src/audio/audio.h b/src/audio/audio.h
index dd43d97..67c83c2 100644
--- a/src/audio/audio.h
+++ b/src/audio/audio.h
@@ -5,5 +5,7 @@
#pragma once
void audio_init();
+void audio_start(); // Starts the audio device callback
+void audio_render_silent(float duration_sec); // Fast-forwards audio state
void audio_update();
void audio_shutdown();