Re: Jack and CoreAudio (was Mirroring Audio Output)
Re: Jack and CoreAudio (was Mirroring Audio Output)
- Subject: Re: Jack and CoreAudio (was Mirroring Audio Output)
- From: Dan Nigrin <email@hidden>
- Date: Tue, 9 Jan 2007 16:31:18 -0500
I think what Stephane was trying to say though was that in order to
get even better integration between Jack and CoreAudio, that an
even deeper understanding of CoreAudio internals and AudioMIDI
Setup is necessary for us. Stephane and I will try to draft a
technical proposal of sorts for your (and Apple's) consideration in
the next couple of days.
The lower bits of the audio stack aren't as well documented as the
other bits, so it is understandable that you'd have questions that
we would be very happy to answer. There really isn't any technical
impediment to you integrating Jack into the system. There are
plug-able patch points throughout the stack.
Excellent, we'll keep the questions coming!
We are obviously biased, but our sense in the Audio community is
that there is a strong desire to have Jack (or Jack-like)
functionality embedded at the OS-level; take for example this
thread on Create Digital Music:
http://createdigitalmusic.com/2006/12/06/vista-audio-improvement-details-for-consumers-at-least/#comments
Yes. Routing between apps and the sort of things that Jack,
AudioHijack, et al. do has been requested of us in the past.
However, it has never really been something that has been at the top
of request lists from either users or developers. Throw in the fact
that for the users that want those features, there are good, useable
solutions like Jack out there now and you can begin to see why there
hasn't really been any work done in this area.
From a user's perspective, I can tell you that the support and
interest we've had on the Jack OS X side has been tremendous, right
from the outset. And that's with multiple, competing/complimentary
solutions out there (Jack OS X, Soundflower, AudioHijack, and to some
degree, Wormhole, FX Teleport, and all sorts of OSC-based solutions).
I can't imagine that end users wouldn't rather have a single,
Apple-standardized and supported way of doing this stuff. And
that's just the users that know this kind of thing is even possible;
sometimes, in fine Apple fashion, I think users need to be introduced
to new and exciting functionality that they didn't even know they
needed, but once shown, couldn't do without...
From a developer perspective, I'd imagine again that one single,
standardized (and license-free) way of doing interapp audio, midi,
and transport would be greatly appreciated. Perhaps other developers
on the list could chime in here.
Just as Apple has used open source foundations in Safari, we feel
that a Jack extension to CoreAudio makes a lot of sense...
I don't believe that this is really a topic that belongs here on
this list, but we'd be happy to talk about whatever issues you've
been having with integrating Jack into what's there in the system
now.
Thanks - let me try to summarize:
As you probably know the Jack project began as an Linux-only system
designed and developed by a team of audio developers lead by Paul
Davis. In 2003 we started porting Jack to OSX, thinking it would be
a great extension of the CoreAudio API, giving users a new kind of
working experience. The port was built around several components:
the Jack server itself, a bridge called JackRouter that allows
CoreAudio-based applications to become clients of the Jack server and
transparently use its capabilities, and a a centralized tool to
handle parameter configuration and client connections. This is the
Jack OS X package as it stands now.
In 2004 we started working on a new C++ based implementation of the
Jack infrastructure, to experiment with a new activation model more
adapted to multi-core and multi-processors machines. This new
implementation has been quite successful, solving also some annoying
limitations of the initial version. It has been ported back to Linux
and more recently to Windows as well.
The degree of integration we have been able to reach on OS X has been
somewhat limited by a few technical difficulties however:
- developing a user-land based CoreAudio driver is difficult! A lot
of code that is probably also part of the CoreAudio HAL layer had to
be rewritten. Keeping a high degree of quality and compatibility
with all possible CoreAudio clients has become more and more
difficult to achieve. Moreover internal changes between OS releases
(for example Panther and Tiger) caused us more problems.
- a Jack-like server system needs a centralized management tool, to
configure different parameters, to give users a centralized view of
all running applications, and to handle audio port connections. This
would typically be a feature to be included in the AudioMidi Setup
kind of tool, but we had to develop a separate tool to realize these
features. As an example, please see some images of a never-completed
prototype (coded by Evan Olcott) that we feel are more in line with
the Apple "experience": http://www.jackosx.com/prototype.html .
Our feeling is is that there is a strong desire to have Jack (or
Jack-like) functionality embedded at the OS level. We think this
would benefit the entire audio OS X community, and since Jack is an
open-source project, we think it could be a good code base for this
purpose. We think also that is it perfectly possible to have a
Jack-like system running side by side with the existing CoreAudio
layer, without any kind of compromises
If that's not in the cards, from our perspective, it would make
things easier for us if we could get access to some more internal
parts of the CoreAudio HAL and AudioMidi Setup tool, or share in any
way part of the HAL stack implementation.
Thanks for listening,
Dan (off to drool over some iPhone pix...)
--
Dan Nigrin
Defective Records
202 Hack / PC-1600 User / VSTi Host / OMS Convert / Jack OS X
http://www.defectiverecords.com
http://www.jackosx.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden