[Jack-Devel] MacOS support

classic Classic list List threaded Threaded
34 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Michael
> Let me explain once again, and hopefully the last one ((-;
>
> - we (at Grame) did a port of JACK1 C code base back in 2004-2005. This was actually more a prof of concept since we had to use very low-level mach specific primitives to make it work on OSX.
>
> - at the same time we also developed this JackRouter JACK<==>CoreAudio bridge, a user-land audio device that allows any CoreAudio application to become a JACK client. We packaged JACK1 + JackRouter in the early version of the JackOSX tool.
>
> - we started the  « rewrite JACK code base in C++, and work on the multi-processor model in 2005, on OS X first. This work was presented at LAC 2005. Port of this new code base on Linux was done later, then Windows starting in 2006.
>
> - since C++ JACK code base was cleaner (my personal point of view of course..), more portable, and much more stable on OSX… we decide to put it in next versions of JackOSX tool.  This C++ code base became JACK2 at some point.
>
> - at some point  (I don’t know exactly when) macports packagers decided, without consulting the JACK community at all... to package JACK1 in macport. This was actually a very poor idea. For years people could either install JACK1 from macport, or install everything (that is tools for users + all the stuff needed for developers...) using JackOSX. This was the recipe for all kind of hairy problems...
>
> - JackRouter could be used by any CoreAudio application and also *be selected as the audio default device* in the OS X system (so to be used be applications like iTunes or Quicktime) up to OS X 10.8 (or 10.9, not sure anymore..). This « JackRouter as the default audio device »  broke at that time, for several technical reasons. One is that Apple decided to progressively raise their security model (sandbox model...whatever), and second was that the JackRouter driver model become obsolete. It would have to be entirely rewritten with the new recommended CoreAudio user-land driver model. I never had time to really estimate if the new model could 1) fit with JACK server/client model and all the needs in low-level OS primitives like sockets, shared memory, process synchronization.. 2) could really solve the « JackRouter use when selected as the audio default device » issue.

I have Jack router working in 10.9.5 as the default audio device. Yes, there were sandbox issues, but the small set of changes needed for the sandbox file was just that: small.

Add to the end of system.sb:

;;; local additions for Jack
  (allow network*
         (regex #"/private/tmp/jack_.*"))
  (allow file-write*
         (regex #"/private/tmp/jack_.*"))
  (allow mach-lookup
         (global-name-regex "jack_mach_sem.*"))
  (allow ipc-sysv-sem)
  (allow ipc-posix-shm-read*
         (ipc-posix-name-regex "/jack-.*"))
  (allow ipc-posix-shm-write*
         (ipc-posix-name-regex "/jack-.*"))
  (allow file-read*
         (regex #"/Library/Audio/Plug-Ins/Components/JACK-insert.component.*"))


>
> - I had to solve a specific issue in 10.10 (I think ?) when mach semaphore primitive could not be used anymore, and we have to switch to Posix Semaphore. After this change JACK2 continued to work up to 10.13 High Sierra, but without this « JackRouter as the audio default device » . This last development is now in JackOSX 0.92_b3.

I was not aware that there was a new version of Jack that worked in 10.10. In any event, working as the default audio device is the key goal. Very few programs let me specify an output device.

_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Kjetil Matheussen-2
In reply to this post by Stefan Hellkvist


On Fri, Feb 2, 2018 at 11:11 AM, Stefan Hellkvist <[hidden email]> wrote:


Radium only has a Jack backend. If jack stops working on MacOS I will
certainly look into it, but I haven't noticed jack not working on any version
of MacOS (including high sierra), and I haven't heard any user compaining
about Jack not working on OSX before now.

Stefan, can you try to install Jack included with Radium instead of using brew?


I tried this version. It seems to be the same as on the jack…org/download page, right?

Yes, it seems so. The download links on jackaudio.org have been more conservative than the included version of Jack in Radium, so I always link to Radium instead to make sure it's the latest version.

 
It seems to work as far as your use case is concerned (started your radium and it seems to connect to that jack server). The ltc-tools (with jltcdump as I mentioned in another mail in this thread). Does not seem to be compatible with this version of jack though. I get the same “failed to connect errors” as before. 

 
$ jltcdump
unknown option character l
connect(2) call to jackdmp 1.9.11/jack-502/default/jack_0 failed (err=No such file or directory)

So, it seems like Jack2 works in some ways (as in your use case) but perhaps that the tools that link to its dynamic libraries are not always fully compatible. Or that the programming interface between jack1 and jack2 has changed over time, I don’t know. 

 
I guess you have to recompile jltcdump. Seems like it's not been compiled with an ABI-compatible version of jack.



_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Chris Caudle
On Sat, February 3, 2018 3:14 am, Kjetil Matheussen wrote:
> I guess you have to recompile jltcdump. Seems like it's not been compiled
> with an ABI-compatible version of jack.

Isn't hard to find with google, but in case there is some question:

The source for jltclib is here:
https://github.com/x42/ltc-tools

Requires libltc:
https://github.com/x42/libltc

Looking at the INSTALL file it appears libltc still uses autotools, not
waf, so if the original poster has autotools available on Mac OS then it
should be easy to build with ./configure; make; sudo make install
I get the impression that having gcc and autotools installed is less
common on Mac than on linux installations.

Building ltc-tools does not appear to require autotools, it just has a
makefile in the source repository.  Seems pretty straight forward
makefile, but I'm not familiar with building on Mac, I can't tell if it
should build OK or not.

--
Chris Caudle


_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Stefan Hellkvist

> On 3 Feb 2018, at 16:37, Chris Caudle <[hidden email]> wrote:
>
> On Sat, February 3, 2018 3:14 am, Kjetil Matheussen wrote:
>> I guess you have to recompile jltcdump. Seems like it's not been compiled
>> with an ABI-compatible version of jack.
>
> Isn't hard to find with google, but in case there is some question:
>
> The source for jltclib is here:
> https://github.com/x42/ltc-tools
>
> Requires libltc:
> https://github.com/x42/libltc
>
> Looking at the INSTALL file it appears libltc still uses autotools, not
> waf, so if the original poster has autotools available on Mac OS then it
> should be easy to build with ./configure; make; sudo make install
> I get the impression that having gcc and autotools installed is less
> common on Mac than on linux installations.
>
> Building ltc-tools does not appear to require autotools, it just has a
> makefile in the source repository.  Seems pretty straight forward
> makefile, but I'm not familiar with building on Mac, I can't tell if it
> should build OK or not.


Thanks! I followed these instructions and I actually managed to get my ltc-tools to connect to this Jack2 binary now. I have not verified the full use case but this is a big step forward. So thanks!

/Stefan

_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Robin Gareus
In reply to this post by Chris Caudle
On 02/03/2018 04:37 PM, Chris Caudle wrote:
> Requires libltc:
> https://github.com/x42/libltc
>
> Looking at the INSTALL file it appears libltc still uses autotools, not
> waf, so if the original poster has autotools available on Mac OS then it
> should be easy to build with ./configure; make; sudo make install
> I get the impression that having gcc and autotools installed is less
> common on Mac than on linux installations.

OSX comes with autotools since as far back as I can remember and it
still does (there's a subtle difference for libtoolize (BSD version vs
GNU version. Macs come with both: glibtoolize for the GNU version).

There are no plans to switch libltc to waf or any other build-system.
autotools sucks least by far when it comes to libraries, cross-compiling
libs, architecture support and exporting symbols.

ciao,
robin
_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Thomas Brand
In reply to this post by Stéphane Letz
On Fri, February 2, 2018 11:40, Stéphane Letz wrote:

>
> - JackRouter could be used by any CoreAudio application and also *be
> selected as the audio default device* in the OS X system (so to be used
> be applications like iTunes or Quicktime) up to OS X 10.8 (or 10.9, not
> sure anymore..). This « JackRouter as the default audio device »  broke
> at that time, for several technical reasons. One is that Apple decided to
> progressively raise their security model (sandbox model...whatever), and
> second was that the JackRouter driver model become obsolete. It would
> have to be entirely rewritten with the new recommended CoreAudio
> user-land driver model. I never had time to really estimate if the new
> model could 1) fit with JACK server/client model and all the needs in
> low-level OS primitives like sockets, shared memory, process
> synchronization.. 2) could really solve the « JackRouter use when
> selected as the audio default device » issue.
>
> - I had to solve a specific issue in 10.10 (I think ?) when mach
> semaphore primitive could not be used anymore, and we have to switch to
> Posix Semaphore. After this change JACK2 continued to work up to 10.13
> High Sierra, but without this «  JackRouter as the audio default device »
> . This last development is now in JackOSX 0.92_b3.
>

Hi Stéphane,
JackOSX 0.92_b3 works nicely on Mac OS High Sierra 10.13.
I'd like to try to compile that same package.
I found
https://sourceforge.net/projects/jackosx/files/JackOSX/ it lists files up to
v 0.89 (2011-12-17).
Where could i find the latest source code for JackPilot and JackRouter /
JackOSX 0.92_b3?
Best regards
Thomas




_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Chris Caudle
On Sat, February 17, 2018 5:08 am, Thomas Brand wrote:
> JackOSX 0.92_b3 works nicely on Mac OS High Sierra 10.13.
> I'd like to try to compile that same package.

All jackd source code is here:
https://github.com/jackaudio/jack2

I looked and did not see the jackrouter application source, so I do not
know if the applications for OS X are also there, or just the jackd
source.

--
Chris Caudle




_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Thomas Brand
On Sat, February 17, 2018 15:57, Chris Caudle wrote:

> On Sat, February 17, 2018 5:08 am, Thomas Brand wrote:
>
>> JackOSX 0.92_b3 works nicely on Mac OS High Sierra 10.13.
>> I'd like to try to compile that same package.
>>
>
> All jackd source code is here:
> https://github.com/jackaudio/jack2
>
>
> I looked and did not see the jackrouter application source, so I do not
> know if the applications for OS X are also there, or just the jackd source.
>

Indeed it's not in https://github.com/jackaudio/jack2 ..

Since 0.92_b3 is kind of the official JACK Mac binary, i wondered on what
source(s) other than found in https://github.com/jackaudio/jack2 relies
on.

I found
https://sourceforge.net/projects/jackosx/files/JackOSX/ it lists files up to
v 0.89 (2011-12-17).

Where could i find the latest source code for JackPilot and JackRouter /
JackOSX 0.92_b3?

Any useful hints are welcome.

Greetings
Thomas


_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Josh de Kock-2
In reply to this post by Stefan Hellkvist
On 2018/02/01 13:59, Stefan Hellkvist wrote:
> Hi list,
>
> (Sorry this question has already been discussed but the search function in the archive of the list does not work)
>
> Is anyone working on the problem of getting Jack up and running on MacOS again? I installed Jack with brew but I get these “could not handle external client request” errors which seems to be old problems from looking at search results and GitHub discussions - problems introduced when MacOS audio architecture was changed a while back. Is there any progress on these matters? Is someone working on it? I need Jack as it is a dependency to another library I would like to use but I realize that I might have to abandon MacOS as a platform in the process.

I looked at this a year or so ago, but ended up concluding that it was
too much work (for someone who had little to gain from it other than
just interest). I concluded in the case of JackOSX it would require an
almost full rewrite of the Router for modern macOS APIs. I could
probably look into it again, if someone could convince me :)

--
Josh



_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Chris Caudle
On Sun, March 25, 2018 12:41 pm, Josh de Kock wrote:

> On 2018/02/01 13:59, Stefan Hellkvist wrote:
>> Hi list,
>>
>> (Sorry this question has already been discussed but the search function
>> in the archive of the list does not work)
>>
>> Is anyone working on the problem of getting Jack up and running on MacOS
>> again? I installed Jack with brew but I get these “could not handle
>> external client request” errors which seems to be old problems from
>> looking at search results and GitHub discussions - problems introduced
>> when MacOS audio architecture was changed a while back. Is there any
>> progress on these matters? Is someone working on it? I need Jack as it
>> is a dependency to another library I would like to use but I realize
>> that I might have to abandon MacOS as a platform in the process.
>
> I looked at this a year or so ago, but ended up concluding that it was
> too much work (for someone who had little to gain from it other than
> just interest). I concluded in the case of JackOSX it would require an
> almost full rewrite of the Router for modern macOS APIs. I could
> probably look into it again, if someone could convince me :)


For the original poster, do not use brew, go get the latest package for
MacOS from jackaudio.org.
That will install jackd and several other tools that are needed.

This came up a few months back. The original developer stated that because
of sandbox/security changed in MacOS the jack router application could no
longer be the default audio device, so software which lets you select the
audio device may continue to work, but software which only uses the system
default device may not be able to use jackd through jack router.

A list user named "Michael" then posted this reply:

I have Jack router working in 10.9.5 as the default audio device. Yes, there
were sandbox issues, but the small set of changes needed for the sandbox file
was just that: small.

Add to the end of system.sb:

;;; local additions for Jack
  (allow network*
         (regex #"/private/tmp/jack_.*"))
  (allow file-write*
         (regex #"/private/tmp/jack_.*"))
  (allow mach-lookup
         (global-name-regex "jack_mach_sem.*"))
  (allow ipc-sysv-sem)
  (allow ipc-posix-shm-read*
         (ipc-posix-name-regex "/jack-.*"))
  (allow ipc-posix-shm-write*
         (ipc-posix-name-regex "/jack-.*"))
  (allow file-read*
         (regex
#"/Library/Audio/Plug-Ins/Components/JACK-insert.component.*"))


Perhaps that can help.

--
Chris Caudle


_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: ?==?utf-8?q? MacOS support

Ralf Mattes
 
Am Mittwoch, 28. März 2018 03:21 CEST, "Chris Caudle" <[hidden email]> schrieb:
 
> A list user named "Michael" then posted this reply:
>
> I have Jack router working in 10.9.5 as the default audio device.

That's Mavericks, released in 2013 qnd replaced by Yosemite in 2014 ...

> Yes, there
> were sandbox issues, but the small set of changes needed for the sandbox file
> was just that: small.
>
> Add to the end of system.sb:

That file is protected by SIP and can't be changed (short of rebooting into recovery mode
and doing some terminal surgery - not really what an average Mac user would do).
A non-Apple installer/package isn't able to change these files.

 Cheers, RalfD



_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Chris Caudle
On Tue, March 27, 2018 8:41 pm, Ralf Mattes wrote:
>> A list user named "Michael" then posted this reply:
>>
>> I have Jack router working in 10.9.5 as the default audio device.
>
> That's Mavericks, released in 2013 qnd replaced by Yosemite in 2014 ...

OK, so not relevant to current versions then.  It is too bad that Apple
has chosen to make using non-Apple audio system software so difficult.

Does installing jack router and using as the non-default device still
work?  That at least should be usable for a lot of audio production
software which lets you choose audio device, should it not?

--
Chris Caudle


_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Stefan Hellkvist

>
> Does installing jack router and using as the non-default device still
> work?  That at least should be usable for a lot of audio production
> software which lets you choose audio device, should it not?

(original poster here)

Yes, that works. In the end, since my program is a command line tool, the path I chose was to have a switch where you first let the user list the audio devices (which jack can do) and then you copy the listed ID and give it as an argument to jack when you start the tool. Not so user friendly perhaps, but the target audience for the tool is used to cli tools in my case.

In order to build everything though (using Jack2), as I had a chain of dependencies all installed with brew, I had to roll my own brew formulas for the complete dependency chain to build everything against Jack2 instead of the brew binary.

But, to state it again, Jack (at least Jack2) still works fine on latest MacOS if you allow the user to specify which audio device to talk to directly. You just cannot change jack to be the default audio device as you once could so you cannot route audio from apps (like iTunes) like you could before. This was not a strong requirement in my case though - useful for testing, but only that.

The GUI part - JackPilot or whatever is is called - in the jack2 distributed binary I never understood where it came from, so I never built that. Given the above limitations it is of less use though as you can do all you need from command line.

Stefan


>
> --
> Chris Caudle
>
>
> _______________________________________________
> Jack-Devel mailing list
> [hidden email]
> http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org

_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
Reply | Threaded
Open this post in threaded view
|

Re: MacOS support

Christopher Obbard
Hi Stefan,

> You just cannot change jack to be the default audio device as you once could so you cannot route audio from apps (like iTunes) like you could before. This was not a strong requirement in my case though - useful for testing, but only that.

I guess that's Apple being clever and trying to tell you you can't
route iTunes thru to a recording program and save DRM-free music ;-)
Have done similar with the Spotify API and JACK in the past, now
where's that script gone...


Chris
_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org
12