Skip to content

Commit

Permalink
merge master into devel
Browse files Browse the repository at this point in the history
  • Loading branch information
fishuyo committed Mar 1, 2024
2 parents 3322ab9 + 32dfac3 commit dc13547
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 3 deletions.
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,14 @@ target_link_libraries(al PUBLIC
Gamma glfw glad rtmidi cpptoml dr_libs
nlohmann_json::nlohmann_json imgui oscpack stb serial)

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# On macOS if jack is present, RtMidi will link to jack but not provide the
# /usr/local/lib location as link directory. This statement only serves the
# purpose of working around that bug. Perhaps can be removed on future
# updates of RtMidi
link_directories("/usr/local/lib")
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

macro(Copy_dlls dest_path target DLLS_TO_COPY)
if (DLLS_TO_COPY)
foreach(LIBRARY ${DLLS_TO_COPY})
Expand Down
2 changes: 1 addition & 1 deletion external/rtmidi
Submodule rtmidi updated 104 files
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
3 changes: 3 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@

# Allolib C/C++ Libraries {#mainpage}

Library for interactive multimedia application development

Developed by:

AlloSphere Research Group
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 dc13547

Please sign in to comment.