• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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: Fri, 13 Jun 2008 19:44:43 -0700

Ah - the matrix mixer...

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:

Good point. If AUSplitter doesn't do what I want, then I could create an AU which does what I want. If all I want is panning, that should be easy enough, but beyond that it would be a waste to re- implement the AU{Matrix,3D}Mixer features.

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.

Brian


On Jun 13, 2008, at 04:15, tahome izwah wrote:
I'm afraid I don't know enough CoreAudio to offer a real suggestion
(especially when it comes to creating an AUGraph INSIDE an AudioUnit
plug in) but couldn't you just create an AudioUnit that has 6 inputs
and whatever number of outputs that you need and do the channel
mapping yourself? Since this is only one multiply-accumulate per
sample per channel doing this in an AU graph seems like overkill to
me...

--th

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.


Brian Willoughby
Sound Consulting
_______________________________________________
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

_______________________________________________ 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
  • Follow-Ups:
    • Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
      • From: Brian Willoughby <email@hidden>
    • Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
      • From: Todd Blanchard <email@hidden>
References: 
 >Hexaphonic AudioUnits in AUGraph that mixes to stereo (From: Brian Willoughby <email@hidden>)
 >Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo (From: "tahome izwah" <email@hidden>)
 >Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo (From: Brian Willoughby <email@hidden>)

  • Prev by Date: Re: AUTimePitch
  • Next by Date: Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
  • Previous by thread: Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
  • Next by thread: Re: Hexaphonic AudioUnits in AUGraph that mixes to stereo
  • Index(es):
    • Date
    • Thread