12class MockAudioIODevice :
public juce::AudioIODevice
16 : AudioIODevice (
"Mock Audio Device",
"Mock Audio"),
17 sample_rate_ (44100.0), buffer_size_ (512), is_running_ (
false)
21 juce::StringArray getOutputChannelNames ()
override
23 return {
"Left",
"Right" };
26 juce::StringArray getInputChannelNames ()
override
28 return {
"Input Left",
"Input Right" };
31 juce::Array<double> getAvailableSampleRates ()
override
33 return { 44100.0, 48000.0, 96000.0 };
36 juce::Array<int> getAvailableBufferSizes ()
override
38 return { 128, 256, 512, 1024 };
42 const juce::BigInteger &inputChannels,
43 const juce::BigInteger &outputChannels,
44 double requestedSampleRate,
45 int requestedBufferSize)
override
47 sample_rate_ = requestedSampleRate;
48 buffer_size_ = requestedBufferSize;
52 void close ()
override { is_running_ =
false; }
54 bool isOpen ()
override {
return true; }
56 void start (juce::AudioIODeviceCallback * callback)
override
58 if (callback !=
nullptr)
61 this->callback_ = callback;
62 callback->audioDeviceAboutToStart (
this);
68 if (callback_ !=
nullptr)
70 callback_->audioDeviceStopped ();
76 bool isPlaying ()
override {
return is_running_; }
78 juce::String getLastError ()
override {
return {}; }
80 int getCurrentBufferSizeSamples ()
override {
return buffer_size_; }
81 double getCurrentSampleRate ()
override {
return sample_rate_; }
82 int getCurrentBitDepth ()
override {
return 16; }
84 juce::BigInteger getActiveOutputChannels ()
const override
86 juce::BigInteger channels;
87 channels.setRange (0, 2,
true);
91 juce::BigInteger getActiveInputChannels ()
const override
93 juce::BigInteger channels;
94 channels.setRange (0, 2,
true);
98 int getOutputLatencyInSamples ()
override {
return 0; }
99 int getInputLatencyInSamples ()
override {
return 0; }
101 int getDefaultBufferSize ()
override {
return 256; }
107 juce::AudioIODeviceCallback * callback_ =
nullptr;
110class MockAudioIODeviceType :
public juce::AudioIODeviceType
113 MockAudioIODeviceType () : AudioIODeviceType (
"Mock Audio") { }
115 void scanForDevices ()
override
120 juce::StringArray getDeviceNames (
bool wantInputNames)
const override
122 return {
"Mock Audio Device" };
125 int getDefaultDeviceIndex (
bool forInput)
const override {
return 0; }
128 getIndexOfDevice (juce::AudioIODevice * device,
bool asInput)
const override
133 bool hasSeparateInputsAndOutputs ()
const override {
return false; }
135 juce::AudioIODevice * createDevice (
136 const juce::String &outputDeviceName,
137 const juce::String &inputDeviceName)
override