Dorico using JackRouter

Hi,

I have all my sound libraries on a windows machine and for the most part, I have successfully used VEPro in Dorico with some large templates on my Macbook Pro. I have since fallen in love with NotePerformer and the NPPE for East West Hollywood Orch. but in order to make use of it, I need to physically work on the Windows machine – very cumbersome.

To that end, and because I come from the linux world, I figured I’d try out Jack[1] and in particular, JackRouter (an ASIO driver that supposedly works to load ASIO-capable software into the connection graph). I figure if I can get Dorico part of the connection graph, I can just work in Windows via remote desktop and have the audio routed to my mac via Jack (net driver).

Long story short, when I try to switch devices to JackRouter, the Device Setup dialog doesn’t change to reflect my choice. There are no warnings nor errors and the application.log has this (which seems to be correct):


2024-02-24 07:08:40.149 [info] Executing command: Application.DeviceSetup
2024-02-24 07:08:44.049 [info] Requesting device: JackRouter, rate: 48000.000000
2024-02-24 07:08:44.296 [info] Requested sample rate: 48000.000000, actual: 48000.000000
2024-02-24 07:08:44.359 [info] Stereo output pairs for current device: 
2024-02-24 07:08:44.359 [info] - Line Out 1 (L), Line Out 2 (R)
2024-02-24 07:08:44.359 [info] - Line Out 3, Line Out 4
2024-02-24 07:08:44.359 [info] - Line Out 5, Line Out 6
2024-02-24 07:08:44.359 [info] - Line Out 7, Line Out 8
2024-02-24 07:08:44.359 [info] - S/PDIF Out Left, S/PDIF Out Right
2024-02-24 07:08:44.359 [info] - ADAT Out 1, ADAT Out 2
2024-02-24 07:08:44.359 [info] - ADAT Out 3, ADAT Out 4
2024-02-24 07:08:44.359 [info] - ADAT Out 5, ADAT Out 6
2024-02-24 07:08:44.359 [info] - ADAT Out 7, ADAT Out 8
2024-02-24 07:08:44.359 [info] Updating preferred stereo pair index:n state 0
2024-02-24 07:08:59.976 [info] ping response received: from silk service

Needless to say, Dorico doesn’t show up in the jack connection graph. The Stereo Pairs reported are actually from the ASIO Studio driver from PreSonus (current device). So it tries to change device, probably fails, but reports nothing to the user.

The VSTAudioEngine log from the diagnostics has this:

2024-02-24 07:08:22 : getCurrentDevice: Studio USB ASIO Driver (samplerate 48000.000000) (blockSize 64)
2024-02-24 07:08:44 : setCurrentDevice: JackRouter (samplerate -1.000000)
2024-02-24 07:08:44 : ClientCallback::audioDeviceBaiosChange: Baios Stopped
2024-02-24 07:08:44 : ClientCallback::audioDeviceBaiosChange: triggerPortBufferUpdate
2024-02-24 07:08:44 : ClientCallback::audioDeviceBaiosChange: Baios Started
2024-02-24 07:08:44 : getCurrentDevice: Studio USB ASIO Driver (samplerate 48000.000000) (blockSize 64)
2024-02-24 07:08:44 : setSampleRate: 48000.000000
2024-02-24 07:08:44 : getCurrentDevice: Studio USB ASIO Driver (samplerate 48000.000000) (blockSize 64)
2024-02-24 07:08:44 : enumerateCurrentOutputIds: 18

… which explains the UI behavior (not changing device in dropdown). Is the issue that JackRouter doesn’t reveal a correct sample rate (-1) or is there some other underlying issue?

I understand that JackRouter isn’t actually being maintained anymore but I have programming experience and might just fix the issue if I knew what it was. Perhaps it was just compiled with a deprecated ASIO SDK?

No idea…

[1] https://jackaudio.org/

Are you on Win or Mac?
And do you know what samplerate Jack is set to? Because -1.0 is a special value and by that Dorico tells the audio engine to use the sample rate to which currently the device is set to. Maybe it is a rate that is not supported by our audio engine and for that reason maybe fails to work.

jack/jackrouter are installed on a windows 11 pro machine. I tried running jack at both 44100 and 48000.

I scoured the source code and JackRouter is basically “asiosample” from the ASIO SDK, with obvious surgical additions to interface with jack via the jack API.

But it’s basically impossible to debug and honestly, I think I’ll just cable outputs 7-8 from the windows machine into the scarlett 2i2 I have on my mac and call it a day.

It’s a shame as I have been using Jack on linux since it came out and it’s a rock-solid audio architecture with network streaming included–great way to virtually cable multiple computers, offloading effects processing etc.

Thanks for the reply.

You are interested in Jack, which is fine. I route Dorico sound through other software loopback devices and it works fine (macOs). There is one that is commonly used alongside OBS, it worked fine. Currently (macOs specific) I am using one called VB-Cable. Previously (macOs specific) I used Soundflower. So if Jack does not work, you might look at what OBS people are running for their audio looping.

(Off Topic and macOs specific) The only sound loop device which causes system problems is Zoom conferencing, whereby sometimes Zoom causes audio to stop looping for anything except itself, somehow it takes over the audio at a low level in some perhaps undocumented manner. The only real way to get out of this driver problem is reboot (which, on macOs, having to do a reboot is a very rare manuever, since everything is usually so stable otherwise). It is not Dorico specific (ie other audio apps also fail to work afterwards) but I notice Logic is mostly immune from Zoom’s hiccups, sometimes starting Logic even clears up the problem, so I think it must be some audio initialization problem whereby standard apps are doing a normal, proper initialization, whereas Logic and Zoom are doing some deeper initialization.

Thanks, but the ultimate goal is to be able to route over the network – better than the 10’ cables I just ran from one box to the other in the middle of my office :slight_smile:

Of course, if NPPE could use libraries located on different machines, there would be no reason for me going down this rabbit hole in the first place.

thanks

I figured it out. Somewhere along the way it was advised to run jackd (server) as administrator. The issue was that the Dorico running as a normal user couldn’t open the named pipe and hence, JackRouter driver returned failure. As soon as I started Dorico as administrator, everything works. I have the main jack server running on my mac set up as networking master. I have the other jack running on my windows machine setup as net slave … pretty cool.

Why Dorico doesn’t report the driver initialization failure is another thing, I guess.

I’m glad you found a solution.

And yes, we better work on alerting users on device change problems.

1 Like

What latency did you notice so far?

I set buffers to 256 frames and the reported latency is 5.3ms. With a large orchestral score using NPPE HOPUS, xruns start piling up. Increasing it to 512 helps.

It isn’t a perfect solution be any means, but it does allow me to access all of my sound libraries remotely, giving me the opportunity to probe all the patches and articulations directly from the VSTi (Kontakt/Opus etc.) and not having to load up VEPro, open a daw (or dorico) etc… and all the overhead that entails.

In case you don’t get it working and performing as desired…

A solid alternative to jack2 on Windows is ASIO Link Pro. It’s free now.

I don’t think it comes for Mac though…

Is this of any interest?

Thanks, I tried that but a) the driver would never initialize correctly and b) if it doesn’t work on a mac, it doesn’t fit the need.

( VB-Audio Network)
Yes, I actually looked at that initially and works great Windows-to-Windows (which I tested)… but again, if it doesn’t work on the mac, it doesn’t fit the need.

My current solution fits my current needs. Thanks all.