Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
mock_hardware_audio_interface.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <cassert>
7
8#include "dsp/hardware_audio_interface.h"
9#include "dsp/iaudio_callback.h"
10
11namespace zrythm::test_helpers
12{
13
20class MockHardwareAudioInterface : public dsp::IHardwareAudioInterface
21{
22public:
23 explicit MockHardwareAudioInterface (
24 units::sample_rate_t sample_rate = units::sample_rate (48000),
25 units::sample_u32_t block_length = units::samples (256))
26 : sample_rate_ (sample_rate), block_length_ (block_length)
27 {
28 }
29
30 [[nodiscard]] units::sample_u32_t get_block_length () const override
31 {
32 return block_length_;
33 }
34 [[nodiscard]] units::sample_rate_t get_sample_rate () const override
35 {
36 return sample_rate_;
37 }
38
39 void add_audio_callback (dsp::IAudioCallback * callback) override
40 {
41 assert (callback_ == nullptr);
42 callback_ = callback;
43 if (callback_ != nullptr)
44 {
45 callback_->about_to_start ();
46 }
47 }
48
49 void remove_audio_callback (dsp::IAudioCallback * callback) override
50 {
51 assert (callback == callback_);
52 if (callback_ != nullptr)
53 {
54 callback_->stopped ();
55 }
56 callback_ = nullptr;
57 }
58
59private:
60 units::sample_rate_t sample_rate_;
61 units::sample_u32_t block_length_;
62 dsp::IAudioCallback * callback_ = nullptr;
63};
64
65} // namespace zrythm::test_helpers
Pure-abstract audio callback interface.
Abstraction for hardware audio interface.
units::sample_u32_t get_block_length() const override
Returns the current block length (buffer size) in frames.
void remove_audio_callback(dsp::IAudioCallback *callback) override
Removes a previously added audio callback.
void add_audio_callback(dsp::IAudioCallback *callback) override
Adds an audio callback to receive audio I/O events.
units::sample_rate_t get_sample_rate() const override
Returns the current sample rate.