// This file is part of the 64k demo project. // WAV dump backend for debugging audio output to file instead of device. // Stripped in final build (STRIP_ALL). #if !defined(DEMO_AUDIO_WAV_DUMP_BACKEND_H) #define DEMO_AUDIO_WAV_DUMP_BACKEND_H #include "audio_backend.h" #include #include #if !defined(STRIP_ALL) // WAV file dump backend for debugging // Captures audio from synth_render() and writes to .wav file class WavDumpBackend : public AudioBackend { public: WavDumpBackend(); ~WavDumpBackend(); // AudioBackend interface void init() override; void start() override; void shutdown() override; // Set output filename (call before init()) void set_output_file(const char* filename); // Get total samples written size_t get_samples_written() const { return samples_written_; } private: // Write WAV header with known sample count void write_wav_header(FILE* file, uint32_t num_samples); // Update WAV header with final sample count void update_wav_header(); FILE* wav_file_; std::vector sample_buffer_; size_t samples_written_; const char* output_filename_; bool is_active_; static const int kSampleRate = 32000; static const int kBufferSize = 1024; }; #endif /* !defined(STRIP_ALL) */ #endif /* DEMO_AUDIO_WAV_DUMP_BACKEND_H */