sonosaurus / sonobus

Source code for SonoBus, a real-time network audio streaming collaboration tool.
https://sonobus.net
GNU General Public License v3.0
1.49k stars 106 forks source link

Feature Request: Support for Multi-channel Routing #15

Open carltesta opened 3 years ago

carltesta commented 3 years ago

I'm currently using Sonobus on Linux with SuperCollider. I'd like to send SonoBus participants' audio through JACK into SuperCollider for processing and then send the audio back into SonoBus so that they can hear the processed audio. I can do this with JackTrip and the JackRouter but I'd like to try this with SonoBus as it can be easier for some folks to use. Is it possible to support a channel assignment for each participant in the SonoBus group? If each participant showed up as a JACK input/output then it would be easy to route audio where it needs to go. Otherwise some way to activate more than two audio outputs at a time in SonoBus would be helpful. Thanks!

essej commented 3 years ago

Yes, I would like to have this ability too, but I will need to hack at JUCE's Jack support, which is not well thought out for how JACK actually works. In the meantime, the VST3 plugin (which you can also build in Linux with 'make VST3') has full multi-bus output support right now... so if you can a load native VST3 in any host you have, you can get it working now. I have "fix JACK support" on my TODO list...

Spacechild1 commented 3 years ago

I'd like to send SonoBus participants' audio through JACK into SuperCollider for processing and then send the audio back into SonoBus so that they can hear the processed audio.

Why don't you use the Sonobus VST3 plugin directly in Supercollider with the VSTPlugin extension? ;-)

carltesta commented 3 years ago

Why don't you use the Sonobus VST3 plugin directly in Supercollider with the VSTPlugin extension? ;-)

For the particular use case I'm thinking of I'm running SuperCollider running on Linux. To my understanding the VSTPlugin extension wouldn't be able to run the native SonoBus GUI on Linux, is that right?

Spacechild1 commented 3 years ago

To my understanding the VSTPlugin extension wouldn't be able to run the native SonoBus GUI on Linux, is that right?

VSTPlugin has always supported the plugin GUI on Linux and Windows. The problem was with macOS, but since SC 3.11 it also works there.

carltesta commented 3 years ago

Now the question becomes: is there a build of the VST plugin on Linux? The SonoBus description only lists VSTs for Mac and Windows. I think I could build it if I know the right flags to use when building.

UPDATE: I see now the normal build process creates the VST3 file as well. I'm trying to build on Ubuntu 20.04.1 LTS and I used the install pre reqs script. When I run ./build.sh I get the following error. Any idea how to fix it?

$ ./build.sh Compiling include_juce_audio_plugin_client_Standalone.cpp Compiling client.cpp g++: fatal error: Killed signal terminated program cc1plus compilation terminated. make: *** [Makefile:285: build/intermediate/Release/include_juce_audio_plugin_client_Standalone_1a871192.o] Error 1 make: *** Waiting for unfinished jobs.... ../../deps/aoo/lib/src/client.cpp: In member function ‘void aoo::net::client::wait_for_event(float)’: ../../deps/aoo/lib/src/client.cpp:790:13: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result] 790 | read(waitpipe_[0], &c, 1); | ~~~~^~~~~~~~~~~~~~~~~~~~~ ../../deps/aoo/lib/src/client.cpp: In member function ‘void aoo::net::client::signal()’: ../../deps/aoo/lib/src/client.cpp:1221:10: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result] 1221 | write(waitpipe_[1], "\0", 1); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~