summaryrefslogtreecommitdiff
path: root/src/audio/wav_dump_backend.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/wav_dump_backend.cc')
-rw-r--r--src/audio/wav_dump_backend.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/audio/wav_dump_backend.cc b/src/audio/wav_dump_backend.cc
index bcf43c0..d1acf66 100644
--- a/src/audio/wav_dump_backend.cc
+++ b/src/audio/wav_dump_backend.cc
@@ -5,6 +5,8 @@
#if !defined(STRIP_ALL)
+#include "audio.h"
+#include "ring_buffer.h"
#include "synth.h"
#include "tracker.h"
#include <assert.h>
@@ -57,6 +59,9 @@ void WavDumpBackend::start() {
float tempo_scale = 1.0f;
float physical_time = 0.0f;
+ // Get ring buffer for reading
+ AudioRingBuffer* ring_buffer = audio_get_ring_buffer();
+
// Temporary buffer for each update chunk (stereo)
std::vector<float> chunk_buffer(samples_per_update);
@@ -83,9 +88,13 @@ void WavDumpBackend::start() {
// Update tracker (triggers patterns)
tracker_update(music_time);
- // Render audio immediately after tracker update (keeps synth time in sync)
- // Note: synth_render expects number of FRAMES, outputs stereo (2 samples/frame)
- synth_render(chunk_buffer.data(), frames_per_update);
+ // Fill ring buffer with upcoming audio
+ audio_render_ahead(music_time, update_dt);
+
+ // Read from ring buffer (same as audio callback would do)
+ if (ring_buffer != nullptr) {
+ ring_buffer->read(chunk_buffer.data(), samples_per_update);
+ }
// Convert float to int16 and write to WAV (stereo interleaved)
for (int i = 0; i < samples_per_update; ++i) {