diff options
Diffstat (limited to 'src/audio/wav_dump_backend.cc')
| -rw-r--r-- | src/audio/wav_dump_backend.cc | 15 |
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) { |
