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 "dsp/hardware_audio_interface.h"
7#include "dsp/iaudio_callback.h"
8
9namespace zrythm::test_helpers
10{
11
18class MockHardwareAudioInterface : public dsp::IHardwareAudioInterface
19{
20public:
21 explicit MockHardwareAudioInterface (
22 units::sample_rate_t sample_rate = units::sample_rate (48000),
23 nframes_t block_length = 256)
24 : sample_rate_ (sample_rate), block_length_ (block_length)
25 {
26 }
27
28 [[nodiscard]] nframes_t get_block_length () const override
29 {
30 return block_length_;
31 }
32 [[nodiscard]] units::sample_rate_t get_sample_rate () const override
33 {
34 return sample_rate_;
35 }
36
37 void add_audio_callback (dsp::IAudioCallback * callback) override
38 {
39 assert (callback_ == nullptr);
40 callback_ = callback;
41 if (callback_ != nullptr)
42 {
43 callback_->about_to_start ();
44 }
45 }
46
47 void remove_audio_callback (dsp::IAudioCallback * callback) override
48 {
49 assert (callback == callback_);
50 if (callback_ != nullptr)
51 {
52 callback_->stopped ();
53 }
54 callback_ = nullptr;
55 }
56
57private:
58 units::sample_rate_t sample_rate_;
59 nframes_t block_length_;
60 dsp::IAudioCallback * callback_ = nullptr;
61};
62
63} // namespace zrythm::test_helpers
Pure-abstract audio callback interface.
Abstraction for hardware audio interface.
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.
nframes_t get_block_length() const override
Returns the current block length (buffer size) in frames.
uint32_t nframes_t
Frame count.
Definition types.h:58