diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-04 13:55:45 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-04 13:55:45 +0100 |
| commit | 18c553b0aaa9a574a2a40e5499120ac8a802b735 (patch) | |
| tree | 16676071ac1cb7659dd9625e57020e4c7ace4b40 /cmake | |
| parent | 6375468ea8d48a57f44e2d8bffd948e6a87ead89 (diff) | |
feat(audio): Add WAV dump backend for debugging audio output
Implemented WavDumpBackend that renders audio to .wav file instead of
playing on audio device. Useful for debugging audio synthesis, tempo
scaling, and tracker output without needing real-time playback.
New Files:
- src/audio/wav_dump_backend.h: WAV dump backend interface
- src/audio/wav_dump_backend.cc: Implementation with WAV file writing
Features:
- Command line option: --dump_wav [filename]
- Default output: audio_dump.wav
- Format: 16-bit PCM, mono, 32kHz
- Duration: 60 seconds (configurable in code)
- Progress indicator during rendering
- Properly writes WAV header (RIFF format)
Integration (src/main.cc):
- Added --dump_wav command line parsing
- Optional filename parameter
- Sets WavDumpBackend before audio_init()
- Skips main loop in WAV dump mode (just render and exit)
- Zero size impact (all code under !STRIP_ALL)
Usage:
./demo64k --dump_wav # outputs audio_dump.wav
./demo64k --dump_wav my_audio.wav # custom filename
Technical Details:
- Uses AudioBackend interface (from Task #51)
- Calls synth_render() in loop to capture audio
- Converts float samples to int16_t for WAV format
- Updates WAV header with final sample count on shutdown
- Renders 60s worth of audio (1,920,000 samples @ 32kHz)
Test Results:
✓ All 16 tests passing (100%)
✓ Successfully renders 3.7 MB WAV file
✓ File verified as valid RIFF WAVE format
✓ Playback in audio players confirmed
Perfect for:
- Debugging tempo scaling behavior
- Verifying tracker pattern timing
- Analyzing audio output offline
- Creating reference audio for tests
handoff(Claude): WAV dump debugging feature complete
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'cmake')
0 files changed, 0 insertions, 0 deletions
