Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
- Subject: Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
- From: William Stewart <email@hidden>
- Date: Mon, 16 Jun 2008 12:26:09 -0700
On Jun 16, 2008, at 4:27 AM, Brian Willoughby wrote:
I may have overlooked a simpler solution: AUMixer. But I get the
impression that AUMixer would not be happy with a 6-channel input.
The implication is that the AUMixer only supports mono and stereo
inputs, but not anything else. Correct?
The multichannel mixer is a derivative of the matrix mixer - one
output bus, but flexible input buses
aumx mcmx appl - Apple: AUMultiChannelMixer
aumx mxmx appl - Apple: AUMatrixMixer
Stereo (or mono) only:
aumx smxr appl - Apple: AUMixer
Bill
Thanks for the notes on AUMatrixMixer, Bill. I should have that up
and running in no time.
Brian Willoughby
Sound Consulting
On Jun 13, 2008, at 19:44, William Stewart wrote:
Here's the thing. The matrix mixer is ultimately just a collection
of input channels and output channels. It doesn't really matter how
these channels are bussed (that is, divided up into separate audio
unit elements) because for that mixer at the end it is a 2x2 matrix
of input and output channels.
So, you can just take your 6 channel output as a single 6 channel
input to the matrix mixer, and then address the volume for:
- each input channel
- each input to output channel
- each output channel
So, if you have a 6 in channel, 2 out channel, then each input
channel has a volume control for its overall input level, and how
much it is going to contribute to each output channel.
You address these volume by using the element ID in Get/Set
Parameter as a cross point (the top 16 bits represent the input
channel, the bottom 16 bits represent the output channel).
So, to set the volume scalar for an input channel:
0x0001FFFF (where FFFF is masking the output channel, so this
doesn't apply this to volume to the output channel but rather to
"every" output channel - and the 0001 is applying the parameter to
the second input channel) - its a zero based index of course
To set the volume for the first input channel (0x0) and the second
output channel (0x1), your element ID for this cross point is:
0x00000001
or ((input channel << 16) | output channel)
If you want to set the global volume - a scalar that is applied to
every crosspoint in the mixer, then the element ID is (0xFFFFFFFF).
You have to initialise all of the volumes (they default to 0) after
you have initialised the mixer. There's a print matrix mixer
volumes method in Public Utility that can help out here.
Bill
On Jun 13, 2008, at 12:54 PM, Brian Willoughby wrote:
I'm still not quite sure whether AUMatrixMixer would accept 6 mono
busses from one unit and allow panning of each as if they came
from separate subgraphs. Same with AU3DMixer.
2008/6/13 Brian Willoughby <email@hidden>:
I've created an AudioUnit which supports hexaphonic processing.
In other
words, it allows six channels of audio to be processed
independently, but
all on one bus. The distinction is that this is not a 5.1
surround
arrangement, but a six-channel guitar effect. The output could
be to a
stereo or surround device, but there would be no direct mapping
of input
channel to speaker. In other words, the multichannel bus has
different
meanings in the beginning of the graph versus the final output.
How do I build an AUGraph to do this? I'm pretty sure I
understand how to
set up a 6-channel source bus, instantiate my AU with 6 channels
on one bus,
and put that into a graph. However, I need to take the output
bus of my AU
and then mix each of the 6 channels into its own pan position
with an
AUMatrixMixer, probably stereo, but potentially surround. How
do I get from
a 6-channel hexaphonic bus to a matrix mixer input where I can
pan each
channel independently?
Would it be possible to use an AUSplitter to take a 6-channel
bus on input
and deliver 6 mono bus outputs? If so, I could then attach each
output bus
to its own matrix mixer input, and then I would have control
over mapping
the channels to the output device. The 3D Mixer might also
work, but I
assume that the real challenge is splitting the channals onto
their own
busses.
_______________________________________________
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