Skip to content

Commit

Permalink
add app configureAudio that takes both devIn and devOut for configuri…
Browse files Browse the repository at this point in the history
…ng separate input output devices
  • Loading branch information
fishuyo committed Feb 27, 2024
1 parent c761666 commit 32dfac3
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
4 changes: 4 additions & 0 deletions include/al/app/al_App.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,10 @@ class App {
int audioBlockSize = 512, int audioOutputs = -1,
int audioInputs = -1);

void configureAudio(AudioDevice &devIn, AudioDevice &devOut, double audioRate = -1,
int audioBlockSize = 512, int audioOutputs = -1,
int audioInputs = -1);

// Access to OSC domain
ParameterServer &parameterServer();

Expand Down
3 changes: 3 additions & 0 deletions include/al/app/al_AudioDomain.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ class AudioDomain : public AsynchronousDomain {
void configure(AudioDevice &dev, double audioRate, int audioBlockSize,
int audioOutputs, int audioInputs);

void configure(AudioDevice &devIn, AudioDevice &devOut, double audioRate, int audioBlockSize,
int audioOutputs, int audioInputs);

std::function<void(AudioIOData &io)> onSound = [](AudioIOData &) {};

protected:
Expand Down
9 changes: 9 additions & 0 deletions src/app/al_App.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,15 @@ void App::configureAudio(AudioDevice &dev, double audioRate, int audioBlockSize,
audioInputs);
}

void App::configureAudio(AudioDevice &devIn, AudioDevice &devOut, double audioRate, int audioBlockSize,
int audioOutputs, int audioInputs) {
if (audioRate < 0) {
audioRate = AudioBackend::devicePreferredSamplingRate(devIn.id());
}
audioDomain()->configure(devIn, devOut, audioRate, audioBlockSize, audioOutputs,
audioInputs);
}

ParameterServer &App::parameterServer() {
return oscDomain()->parameterServer();
}
Expand Down
18 changes: 16 additions & 2 deletions src/app/al_AudioDomain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ bool AudioDomain::cleanup(ComputationDomain * /*parent*/) {

void AudioDomain::configure(double audioRate, int audioBlockSize,
int audioOutputs, int audioInputs) {
AudioDevice dev = AudioDevice::defaultOutput();
configure(dev, audioRate, audioBlockSize, audioOutputs, audioInputs);
AudioDevice devIn = AudioDevice::defaultInput();
AudioDevice devOut = AudioDevice::defaultOutput();
configure(devIn, devOut, audioRate, audioBlockSize, audioOutputs, audioInputs);
}

void AudioDomain::configure(AudioDevice &dev, double audioRate,
Expand All @@ -55,6 +56,19 @@ void AudioDomain::configure(AudioDevice &dev, double audioRate,
audioIO().channelsOut(audioOutputs);
}

void AudioDomain::configure(AudioDevice &devIn, AudioDevice &devOut, double audioRate,
int audioBlockSize, int audioOutputs,
int audioInputs) {
audioIO().init(AudioDomain::AppAudioCB, this, audioBlockSize, audioRate,
audioOutputs, audioInputs);
audioIO().deviceIn(devIn);
audioIO().deviceOut(devOut);

// mAudioIO.device() resets the channels to the device default number
audioIO().channelsIn(audioInputs);
audioIO().channelsOut(audioOutputs);
}

void AudioDomain::AppAudioCB(AudioIOData &io) {
AudioDomain &app = io.user<AudioDomain>();
io.frame(0);
Expand Down

0 comments on commit 32dfac3

Please sign in to comment.