Re: Channels and frames
Re: Channels and frames
- Subject: Re: Channels and frames
- From: "john smith" <email@hidden>
- Date: Thu, 03 Nov 2005 21:55:15 +0100
William,
sorry for these questions that probably seem stupid, but I really have
trouble understanding what you're saying. It's almost like we're not
speaking the same language.
My best guess in understanding you is that whatever channel configuration I
support goes for all busses, although the configuration chosen by the host
may not be the same for both.
I.e., if I have a configuration of 1,2 and 2,2 published, then bus 0 may be
configured as 1,2 while bus 2 is 2,2 (or vice versa).
If that is the case, then I fail to see how I can make an AU with the
configurations I need, which is
Bus 0 Bus1
1,1 0,0 (disabled)
1,1 1,0
1,2 0,0 (disabled)
1,2 1,0
2,2 0,0 (disabled)
2,2 2,0
If I publish it as 1,1 + 1,2 + 2,2 with 2 busses, then I risk "strange"
configurations like 1,1 on bus 0 and 2,2 on bus 1
Also, since bus 1 may have output channels, what should I do with it? Zero
it? Copy input to output?
You have to ensure of course that when the AU is initially opened, that
the configuration you provide is compatible. You can do this in your
constructor after calling CreateElements(), you get the element for each
input and output and set the number of channels appropriately.
What do you mean? I don't understand what it is you want me to do in the
constructor.
I was previously told that channel configurations were made by overriding
GetNumChannels(...)
Thanks,
Michael Olsen
On 03/11/2005, at 11:13 AM, john smith wrote:
William,
thanks for the reply, but I think there's been some misunderstanding. If
I understand you correctly, then you're talking about the first bus here,
something I now know how to configure.
My question is regarding a second bus (for side-chain). How do I
configure the channel count for that?
No, this isn't limited to the first bus - this goes across all the buses.
An AU doesn't configure buses, the host does. An AU publishes what channel
capabilities it can deal with, it is expected to deal with them across all
buses it publishes, and the host uses that information to configure the
AU.
Have a look at how this is presented in AU Lab - the AUMerger is perhaps a
good example - its in the Sidechains section of the pop=up menu for an
insert effect.
1 input channel, and 1 output channel). You cannot have mixed channel
counts on input or output buses.
Do you mean to say that if the channel count is, say, 2,2 for the first
bus, then it will always be the same for the second bus?
If so, what happens to the output channel(s) of the second bus? Should I
zero it, or copy from the input?
You have to ensure of course that when the AU is initially opened, that
the configuration you provide is compatible. You can do this in your
constructor after calling CreateElements(), you get the element for each
input and output and set the number of channels appropriately.
After that, the host does everything. The AU should just validate that the
channel configuration provided to it at Initialisation is legal according
to what it published.
The approach we take to this is that if the AU is going to deal with
uneven channel counts (mono input and stereo output), then it has to be
prepared to deal with the full ramifications of that feature.
I'm sorry, I don't understand. What ramifications? Do you mean to say
that 1,2 is not supported?
No, it means that if you say you can do { 1, 2 } as well as { 2, 2 },
there is no limitations on which input buses can be mono, which stereo,
provided that (in this case) all of the output buses are stereo. That is
what this means, if you have stereo outputs, *any* input can be mono or
stereo.
Bill
Thanks,
Michael Olsen
Here are your choices:
* { {2, 2} {1, 1} }
What this means is that regardless of your number of buses, the AU can
be configured to have 2 input channels and 2 output channels (or 1
input channel, and 1 output channel). You cannot have mixed channel
counts on input or output buses.
* { {2, 2} {1, 1}, {1, 2} }
That is, you want to allow mono or stereo inputs and stereo outputs,
and for a mono output only mono inputs are legal.
(And for completeness)
* { {2, 2} {1, 1}, {2, 1} }
That is, you want to allow mono or stereo inputs and mono output, and
for a stereo output only stereo inputs are legal.
* { {2, 2} {1, 1}, {2, 1}, {1, 2}}
Any combination of mono or stereo inputs or outputs are allowed.
The approach we take to this is that if the AU is going to deal with
uneven channel counts (mono input and stereo output), then it has to be
prepared to deal with the full ramifications of that feature. We've
looked at ways to somehow publish more restricted lists, but don't like
the complexities this involves.
You can use AU Lab => /Developer/Applications/Audio to test this - is
has support for input and output side chains. CAAudioUnit (in
PublicUtility in the SDK) has code to validate channel configurations
if you want to look at how the host deals with these. auval will
correctly validate these configs.
Bill
On 03/11/2005, at 7:36 AM, john smith wrote:
Hi,
Please disregard my previous question about the output bus. I think I
understand it now.
But... (and someones gonna kill me for asking.)...
an additional "sidechain" input for AU effects is described as a
separate bus - so in your case the AU must specify that it can handle
mono and stereo inputs and outputs (config list: [1,1], [2,2]) and it
must provide two input busses and one output bus.
How can I inform the host about the channel count on the second bus?
And how can I make sure that it only connect with 1 channel on the
second bus when running in mono mode, and with 2 channels on the
second bus when running in stereo mode?
(i.e. avoid mono sidechains when running in stereo and vice versa).
Thanks,
Michael Olsen
Best,
Stefan
Am 03.11.2005 um 12:35 schrieb john smith:
I'm about to create a channel strip product for a client.
Besides the "usual" channel configurations (1->1, 1->2, 2->2) it has
some alternative configurations, namely 2->1 and 4->2. The thing
about those configurations is that they have extra side- chain
inputs.
For instance, the one I call 2-> has 1 audio in, 1 side-chain in
(which is of course also audio, but I'm sure you're catching my
drift), and 1 audio out.
My question is: If I tell the host (Logic or otherwise) that I can
accept 2 channels in and 1 channel out, will the host know what the
second input is a side-chain input?
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's
FREE! http://messenger.msn.click-url.com/go/onm00200471ave/ direct/01/
_______________________________________________
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
--
mailto:email@hidden
tel: +1 408 974 4056
_____________________________________________________________________ ___
__
"Much human ingenuity has gone into finding the ultimate Before.
The current state of knowledge can be summarized thus:
In the beginning, there was nothing, which exploded" - Terry Pratchett
_____________________________________________________________________ ___
__
_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! http://
search.msn.com/
--
mailto:email@hidden
tel: +1 408 974 4056
________________________________________________________________________ __
"Much human ingenuity has gone into finding the ultimate Before.
The current state of knowledge can be summarized thus:
In the beginning, there was nothing, which exploded" - Terry Pratchett
________________________________________________________________________ __
_________________________________________________________________
Don't just search. Find. Check out the new MSN Search!
http://search.msn.click-url.com/go/onm00200636ave/direct/01/
_______________________________________________
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