JackTrip macOS server with mixer question

177 views
Skip to first unread message

Eric Brown

unread,
Jan 14, 2021, 9:05:11 PM1/14/21
to jacktrip-users
I'm setting up a jacktrip server on macOS and would like to set up a mixer with the eventual goal of having individual mixes for each participant controllable from their local system.  I'd like to use SuperCollider / supernova the same way that the Virtual Studio does, but as far as I can tell, it isn't possible to get supernova to show up as a device in the jack server on macOS.  I assume it is only using the native CoreAudio.

Is there any way to make this work directly?  Or do I need to either resurrect jack router or create a couple of virtual devices using Loopback?  I'm concerned about the latency impact of all of these intermediate layers / processes.

I have seen an alternative using the Faust IDE, though I don't know if that has the ability to be controlled remotely using OSC like supernova can.

While on the topic of latency impacts of intermediate processing, has anybody looked at modifying / re-implementing the jacktrip server to natively use CoreAudio?  It seems like that might make some of these options easier as well as reduce the steps / processing in the signal chain.

Alternately has anybody set up a jacktrip server in a Docker container?  I might consider that approach as well.

Michael Dessen

unread,
Jan 15, 2021, 11:08:22 AM1/15/21
to jacktri...@googlegroups.com
Hi Eric,

I can't really answer your questions but I've been interested in similar things so in case any of this helps:

Mike Dickey told me that at least for the VS servers, client-side mixing wouldn't be difficult to implement because client mixes are already happening through the AutoPanMix class in the JackTrip-sc repository. It would just be a matter of making a simple client app that could send the appropriate OSC data and organizing things so each client receives their mix. Unfortunately, I don't have the supercollider skills to build this.

Like you, I was mostly interested in running this not just the VS system but also on my own jacktrip hub server, on a Mac. My understanding is that even if you were to set up all the SC code on your own server, the additional features in the web app (auto-pan for example, limiter, more to come) are not available, i.e. the VS web app just routes clients to your jacktrip server and doesn't do anything more. This is an unfortunate limitation but I believe if you had your own server/client app doing mixing, then that part at least should work?

I'm not sure how to answer your question about supernova being available as a device in macOS, but BlackHole works with Jack and does not add any latency, so maybe that offers a solution?

Julius made a helpful Faust mixer tutorial but I don't know if that can easily be controlled by clients sending OSC. I made a Max patch (client/server app) last summer that basically does that, but it is a really ugly, inefficient design, because I'm not a programmer. It takes a lot of custom routing to set up the first time for a group, then you can use jmess to reload. I'm happy to share it but I think there will be much more efficient options coming soon, since mixing capacities will be a big priority once the new 1.3 release of jacktrip is done. And Sonobus is a better solution now for most people running small groups anyway. (I wrote that Max patch before Sonobus came out and have not much needed it since.)

Others can better answer your jacktrip/CoreAudio question. I love the idea but don't know of anyone working on that. Maybe ask on the git repo?

Please keep us posted on whatever you find out, thanks!

Michael
> --
> You received this message because you are subscribed to the Google Groups "jacktrip-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to jacktrip-user...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/3ecdb6b3-f942-4b99-a1bd-abe74a5f409dn%40googlegroups.com.

Eric Brown

unread,
Jan 16, 2021, 6:25:54 PM1/16/21
to jacktri...@googlegroups.com
Thank Michael.  We're definitely thinking along the same lines.  I haven't yet found a way to get SC to provide Jack integration on macOS.  It may be possible with changes to the project, but I'm not ready to tackle that.

I've been playing around with Loopback (commercial product from Rogue Amoeba similar to BlackHole but with a configurable UI).  My hope was that I could use that to effectively pipe the input/output of Jack into Logic Pro for flexible/live mixing.  That wouldn't give me local control for each client, but at least would give me everything I need to provide custom mixes for each client.  Unfortunately I've run into a problem setting that up.  The first was that I effectively needed two loopback devices - one to take Jack output to Logic Pro input and the other for the reverse direction.  Jack doesn't support separate native audio devices, so I then had to create an aggregate device in Audio Midi Setup.  Unfortunately when Logic Pro is running and using the two Mixer virtual devices I created, Jack would get an error opening the aggregate device.  I'm guessing the devices are set up to only allow a single client at a time (which is a problem since by definition we need two clients - one to send, one to receive).

Does anybody have any suggestions to get around this?  I was kind of looking forward to being able to use the flexible Logic interface / routing with the Jack server.

I started to look at resurrecting JackRouter since it should just bridge the Jack server into CoreAudio, but I have yet to get it to build.  I've worked through probably 10 different build issues so far with no end in sight.  Does anybody have a recent, working JackRouter on macOS?

So I'm back looking at Faust.  It generally does seem to do what I want, though I'll have to spend some time crafting the specific mixer/routing/UI I want to use with my band.  It does support OSC, so that is still a possibility for the future.  I also might just pay to use the Virtual Studio servers from JackTrip.org.  I finally tried them out today and the latency seems remarkably low.  I can't detect much if any difference between hitting their server (configured for SF while I'm in Los Altos) and hitting a local one.  In generally I'm very impressed by how well the system works - even with a generic USB device on a macOS client.  I'm hoping the Windows client side is as good as a number of bandmates have Windows 10 systems.  

I also have set up an rPi system with the Virtual Studio image to play with as well.  With the same USB interface (Presonus AudioBox USB 96), local loopback on the rPi seemed to have a bit more notable latency compared to macOS (though not enough to make a real difference).  I also encountered numerous disconnects from the server with the rPi (with connections to both the VirtualStudio server as well as a local server).  Connections from the macOS JackTrip "client" was much more stable.

- Eric

You received this message because you are subscribed to a topic in the Google Groups "jacktrip-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jacktrip-users/z173Co2aK14/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jacktrip-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/84B67B1C-C189-4A80-B482-856C58C43FEF%40gmail.com.

Eric Brown

unread,
Jan 16, 2021, 6:49:22 PM1/16/21
to jacktri...@googlegroups.com


On Jan 16, 2021, at 3:25 PM, Eric Brown <ebro...@gmail.com> wrote:


I also have set up an rPi system with the Virtual Studio image to play with as well.  With the same USB interface (Presonus AudioBox USB 96), local loopback on the rPi seemed to have a bit more notable latency compared to macOS (though not enough to make a real difference).  I also encountered numerous disconnects from the server with the rPi (with connections to both the VirtualStudio server as well as a local server).  Connections from the macOS JackTrip "client" was much more stable.


It looks like the rPi issue I'm having isn't related to the network / server connection.  It seems to be a USB issue with the Presonus box. After less than 20s, the jack process / audio driver encounters an error which triggers a disconnect:

Jan 16 15:39:44 jacktrip jack[7655]: creating alsa driver ... hw:A96|hw:A96|128|2|48000|0|0|nomon|swmeter|-|32bit
Jan 16 15:39:44 jacktrip jack[7655]: configuring for 48000Hz, period = 128 frames (2.7 ms), buffer = 2 periods
Jan 16 15:39:44 jacktrip jack[7655]: ALSA: final selected sample format for capture: 32bit integer little-endian
Jan 16 15:39:44 jacktrip jack[7655]: ALSA: use 2 periods for capture
Jan 16 15:39:44 jacktrip jack[7655]: ALSA: final selected sample format for playback: 32bit integer little-endian
Jan 16 15:39:44 jacktrip jack[7655]: ALSA: use 2 periods for playback
Jan 16 15:40:00 jacktrip jack[7655]: ALSA: prepare error for playback on "hw:A96" (Input/output error)
Jan 16 15:40:00 jacktrip jack[7655]: JackAudioDriver::ProcessAsync: read error, stopping...

I’ve also had to unplug / replug the USB cable a couple of times to get it to be seen / used at all (and before unplugging ‘aplay -l’ showed no devices).

I’ve got a HiBerry DAC+ ADC Pro coming soon to try out as well, but I was hoping USB would work well enough.

- Eric

Chris Chafe

unread,
Jan 16, 2021, 9:05:14 PM1/16/21
to jacktri...@googlegroups.com
We had to replace Presonus-supplied USB cables to use with our Raspberry Pi's at Stanford back in September. The whole batch of 100 we bought were sub-par (same interface you have).

Chris
--
You received this message because you are subscribed to the Google Groups "jacktrip-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jacktrip-user...@googlegroups.com.

Michael Dessen

unread,
Jan 17, 2021, 1:20:17 AM1/17/21
to jacktri...@googlegroups.com
Hi Eric,

> Does anybody have any suggestions to get around this? I was kind of looking forward to being able to use the flexible Logic interface / routing with the Jack server.

Yes...

Rogue Amoeba products seem great from the demos I've tried, including Loopback, but I think you can accomplish the same things with an aggregate device that contains BlackHole. I made some related suggestions on this list recently for someone wanting to route a jacktrip session into Zoom:

https://groups.google.com/g/jacktrip-users/c/pX1dKrHApHU/m/SN3H4cr9CgAJ

The main idea is that you can get a ton of flexible options by creating an aggregate device that contains your interface and BlackHole (and at least for me, I've found Jack won't start unless it *also* contains "built-in audio input" listed first, though you never have to use it). Start Jack first, with that device set as the interface in QJackctl. You have to be careful about the input/output numbers since they get confusing and make it easy to create feedback loops, but you can always see them in the aggregate device panel in Audio Midi setup. Also, when using Logic (or even Zoom), one thing to note is that it's usually better to start Jack *first* then Logic (not the other way around).

If you start Jack with an aggregate device like that, then open Logic and set it's input and output to Blackhole (or to the aggregate device if you want to also have the option of using your interface, which would enable you to monitor your mix for example), the you could route jacktrip clients into Logic using the BH inputs and route from Logic back to your jacktrip clients using the BH outputs.

For example: If your aggregate device has 2 ch of built-in inputs and 2 ch. of inputs from your audio interaface then 16 BH inputs starting at #5, then in Qjacktl you'd connect any number of jacktrip receives to system:playback 5678... etc (i.e. corresponding to BH inputs 1234...). Then in Logic if you set BH only (not the aggregate device) as your input device, you'd set up tracks to receive inputs 1234... etc. and those jacktrip clients should show up there. If BH were also set in Logic to be your output device, you could route the master mix out of Logic on outs 15-16, then in QJackctl you'd connect system:capture 19-20 (which correspond to BH 15-16) to each jacktrip client (so they can hear the mix) and also to system:playback 3-4 (your interface).

Obviously you shoudn't route out of Logic to BH channels that you're also taking in, since that would create a loop, so just be careful about the numbers.

I miss Jack Router, but I have found this way does work. Good luck,

Michael
> To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/83E698F8-D2A9-4365-BD9E-76CD8432ABE5%40gmail.com.

Bonnie Kwong

unread,
Jan 17, 2021, 1:21:18 AM1/17/21
to jacktri...@googlegroups.com
Stéphane Letz has looked into what it would take to have Jack Router working on OS X again and written some notes:

If anyone's able to get it to work, do post a note here.

Bonnie


Eric Brown

unread,
Jan 17, 2021, 1:47:11 AM1/17/21
to jacktri...@googlegroups.com
Thanks Michael. For this purpose, Loopback and BlackHole are pretty much interchangeable (AFAICT). What you describe is exactly what I’ve been trying to do. I have two virtual/loopback devices - “Mixer Output” and “Mixer Input”. I had created an aggregate device with the two Mixer devices. For a test, I also tried with the two virtual Mixer devices set as the default input/output devices.

I think I’ve isolated the problem though. If Logic Pro is not running (or not using the Mixer devices), Jack is able to start up just fine and correctly shows the full set of input / output channels for the aggregate Mixer device. If I then launch Logic Pro, Jack encounters an error and stops. The same thing occurs if I try to start Jack and Logic Pro is already running (and the Mixer devices are selected). My best guess at this point is that Logic Pro is opening the audio devices for exclusive access. That’s fine for a real hardware device, but problematic for a virtual device that requires two clients. I reproduced the same issue if I have the system audio settings set to use the built-in speakers and microphone, Jack set to “(default)” and Logic Pro set to the system input and output devices. I’ll have to see if things work right with a mixer program in SuperCollider instead of Logic Pro.

- Eric
> To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/0862E4CA-F065-4D77-9BFE-A9AD75516D10%40gmail.com.

Eric Brown

unread,
Jan 17, 2021, 2:36:43 AM1/17/21
to jacktri...@googlegroups.com
I just tried out an app called SoundDesk which is intended to be a real-time / virtual mixer and it is able to work with the loopback devices and Jack. Jack did encounter an error when SoundDesk first started, but restarting the Jack server worked (whereas with Logic Pro it would fail). I am able to mix with it as I expected, though the aux sends are a bit more clunky in the UI than Logic Pro. I’ll definitely be playing around with this more.

It also comes with an add-on that creates a “virtual cable” which is effectively a single 32-in/out loopback device. And it occurred to me that you really only need one virtual mixer device with 2x the channels you need to route. Use the first half for Jack -> Mixer and the second half from Mixer -> Jack. That seems to work well in this case (as long as you don’t need more than 16 channels total).

- Eric

Michael Dessen

unread,
Jan 17, 2021, 8:21:06 PM1/17/21
to jacktri...@googlegroups.com
Glad you found a solution. I don't use Logic but that kind of problem sounds familiar. Even in the Jack Router days, using Jack with DAWs and virtual audio devices for inter-app routing took lots of trial and error (startup order, sample rate tussles, etc.). It's a lot of headache but usually you can find a solution with enough fiddling.

I know that Bonnie and other developers have the topic of mixing on the list of priorities for future work on jacktrip, so I'm hopeful that things will improve. But in the meantime thanks to you and anyone else for sharing updates here on good solutions, esp. if you can find a way to use Supercollider and automate the process more. Thanks,.

Michael
> To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/13321F37-3A54-456D-A540-8F4FAA8660AA%40gmail.com.

Eric Brown

unread,
Jan 18, 2021, 1:23:59 PM1/18/21
to jacktri...@googlegroups.com
Thanks for the tip.

I’ve run a bunch of different tests and the problem appears unique to the combination of Presonus AudioBox USB 96 and Raspberry Pi4 direct USB port.  It works when used with an external powered USB hub, but encounters very intermittent USB connectivity when connected to any of the USB ports on the rPi4 itself.   I’ve tried 3 different USB cables, 2 different rPi 4 boards, 2 different Raspbian installs plus an external powered USB hub. 

Presonus + rPi4 #1 + original cable == fail (intermittent USB connectivity / very regular USB disconnects)
Presonus + rPi4 #1 + 2 different USB cables == fail
Presonus + MacBook Pro + Apple USB C -> USB A adapter == success (solid connectivity - worked with 2 different Macs)
Presonus + MacBook Pro + Caldigit Thunderbolt hub (to USB port in hub) == success
Presonus + rPi4 #2 + Virtual Studio install + connected to USB3/blue USB port on rPi == fail
Presonus + rPi4 #2 + VS install + connected to external powered USB hub == success
Presonus + rPi4 #2 + alternate Raspbian install + connected to rPi USB port == fail
Presonus + rPi4 #2 + alternate Raspbian install + connected to powered USB hub == success

So there could be an issue with the USB power being provided on one of the built-in ports.  Or there could be a software/driver issue related to the internal ports that this hardware triggers.  Alternately it could even be a unique issue with my Presonus that makes it sensitive to whatever the actual issue is.

It sounds like you’ve experienced USB issues with the Presonus in the past, so maybe the issue itself varies based on the unit / hardware involved.

- Eric

Eric Brown

unread,
Jan 19, 2021, 7:12:06 PM1/19/21
to jacktri...@googlegroups.com
I’ve been playing around with SoundDesk and it seems to add quite a bit of latency to the signal compared with looping back right in Jack server. I’ve made the audio buffer size as small as possible in the app as well in Jack server without much improvement.

I started looking around and found Ardour which is an open source, multi-platform record/edit/mix environment. It has the ability to use Jack as its audio interface. I’ve been able to get it to show up in the Jack server and route Jacktrip clients through it while mixing with almost imperceptible latency. It also has a nice input/output matrix UI that pretty quickly let me set up the Jack connections to the right channels. In the long term, I’ll use the Jack Patchbay to automate things, but it makes for quick, easy changes.

https://ardour.org

It also looks like it has OSC support, so it may be possible to remotely control the mixer (though whether it supports multiple OSC clients is another question).

- Eric
> To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/C80B2E03-CEFE-4D87-9EC0-D379FDC32CB4%40gmail.com.

Michael Dessen

unread,
Jan 19, 2021, 7:59:00 PM1/19/21
to jacktri...@googlegroups.com
Yes, Ardour is a great DAW for using with Jack since it's built around Jack (both came from the Linux audio community). You could also look at TPF Tools by Roman Haefeli and Johannes Schütt, which is probably more than you need/want in this case, but uses Ardour along with other tools, and offers client side mixing.
https://gitlab.zhdk.ch/TPF/tpf-server

OTOH, just in case you aren't aware of it: For small groups, I am currently finding it more useful to just go with Sonobus since it has mixing built in, a huge benefit... But eventually there will be better server/client mixing tools more easily available for jacktrip, without so much custom work.

Michael
> To view this discussion on the web visit https://groups.google.com/d/msgid/jacktrip-users/B5C642EF-FC3F-49B1-BCDC-3634D0E131B2%40gmail.com.

Seablade -

unread,
Jan 22, 2021, 3:43:41 PM1/22/21
to jacktri...@googlegroups.com
On Tue, Jan 19, 2021 at 7:59 PM Michael Dessen <mde...@gmail.com> wrote:
Yes, Ardour is a great DAW for using with Jack since it's built around Jack (both came from the Linux audio community).

Closer to the other way around actually... Jack was split off from Ardour and developed into a standalone audio server from Ardour's original audio code I believe.

For the record Ardour is very capable through OSC and there are quite a few options out there for it.  Depending on your desires, you could also look at Mixbus for this to have integrated compression and EQ per channel.  This is VERY similar to a setup I used to teach mixing with last semester (Though I used ninjam in the end instead of Jacktrip, I did run Jacktrip and Ardour/Mixbus for some time testing things out).  To be honest next semester (Fall) I am going to test out Jacktrip again, as well as testing out Jesse's sonobus application for that purpose.

       Seablade
Reply all
Reply to author
Forward
0 new messages