Re: 'Ganged' or 'Linked' Hardware
Re: 'Ganged' or 'Linked' Hardware
- Subject: Re: 'Ganged' or 'Linked' Hardware
- From: Jeff Moore <email@hidden>
- Date: Thu, 17 Apr 2003 14:14:15 -0700
I think that BJ summed things up quite well.
The philosophy of the HAL/IOAudio family is to do as little processing
in the driver as possible and to rely on the application to do all the
heavy lifting, especially when it comes to synchronizing multiple
devices. As BJ points out, this is really the only way to handle the
general case where an app wants to synchronize Device A from
Manufacturer B with Device X from Manufacturer Y.
This is not to say that hardware that supports synching multiple
instances of itself should not implement that feature. They should
because usually this entails synching the instances of the hardware on
a much deeper level (for instance, by synching the clocks on the
devices). This makes the app's life easier because the drift between
the devices will be minimized or even eliminated out right.
On Thursday, April 17, 2003, at 12:57 PM, Herbie Robinson wrote:
At 11:41 PM -0400 4/16/03, B.J. Buchalter wrote:
Hi Andrew,
A couple of people have asked me about the lack of drivers that
support
treating two (or more) identical hardware units as a single entity.
ASIO
has such a feature and I know that both M-Audio and Metric Halo both
supported this in their ASIO OS 9 drivers but haven't done so yet in
their OS X drivers.
Does anyone know if ths is this a 'waiting for something to change
in
CoreAudio' problem or a 'haven't got around to it yet - it's
difficult'
problem or something else entirely ?
Its more of a 'haven't got around to it yet - it's difficult' due to
the
nature of kext drivers coupled with the fact that it is possible for
the
applications to do this in Userland (even across multiple unlike
devices).
DP4 has this support (I have not tested it yet). We have done this in
the
record panel code we have. I really expected Logic to do this, since
they
could do it in OS 9 (e.g. Run ASIO and Mac A/V at the same time --
multiple
CA devices should have been more of the same). Anyway doing it in the
kext
gives a partial solution (for a class of devices) but does not solve
the
general case of disparate devices. Doing it in the kext has a number
of
complications, because it is not clear that the user automatically
wants to
consolidate every attached device, and communicating complex
preferences to
the kext is a difficult process.
So, while (at least) we will be addressing this, there is still a
benefit to
App vendors (or Apple) supporting access to multiple devices
simultaneously.
There are two potential ways to do this:
1. Queue all the data from the HAL driver callbacks into FIFOs and
run another real time thread for DSP.
2. Run the DSP in one of the HAL callbacks and have the remaining
callbacks queue the data.
Either way is going to increase latency.
Any opinions as to which method is preferred?
Are there any recommendations from Apple?
--
-*****************************************
** http://www.curbside-recording.com/ **
******************************************
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.
--
Jeff Moore
Core Audio
Apple
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.