diff options
Diffstat (limited to 'src/audio/mock_audio_backend.h')
| -rw-r--r-- | src/audio/mock_audio_backend.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/audio/mock_audio_backend.h b/src/audio/mock_audio_backend.h new file mode 100644 index 0000000..963d9cb --- /dev/null +++ b/src/audio/mock_audio_backend.h @@ -0,0 +1,56 @@ +// This file is part of the 64k demo project. +// It implements a test-only mock audio backend for event recording. +// Used for tracker timing verification and audio synchronization tests. + +#pragma once + +#if !defined(STRIP_ALL) + +#include "audio_backend.h" +#include <vector> + +// Event structure for recorded voice triggers +struct VoiceTriggerEvent { + float timestamp_sec; + int spectrogram_id; + float volume; + float pan; +}; + +// Mock audio backend that records all voice trigger events +// Used for testing tracker timing and synchronization +class MockAudioBackend : public AudioBackend { + public: + MockAudioBackend(); + ~MockAudioBackend() override; + + // AudioBackend interface (no-ops for mock) + void init() override; + void start() override; + void shutdown() override; + + // Event recording hooks + void on_voice_triggered(float timestamp, int spectrogram_id, float volume, + float pan) override; + void on_frames_rendered(int num_frames) override; + + // Test interface methods + const std::vector<VoiceTriggerEvent>& get_events() const { + return recorded_events_; + } + void clear_events() { recorded_events_.clear(); } + + // Manual time control for deterministic testing + void advance_time(float delta_sec) { current_time_sec_ += delta_sec; } + void set_time(float time_sec) { current_time_sec_ = time_sec; } + float get_current_time() const { return current_time_sec_; } + + // Sample rate used for frame-to-time conversion + static const int kSampleRate = 32000; + + private: + std::vector<VoiceTriggerEvent> recorded_events_; + float current_time_sec_; +}; + +#endif /* !defined(STRIP_ALL) */ |
