• 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: MatrixMixer info
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MatrixMixer info


  • Subject: Re: MatrixMixer info
  • From: William Stewart <email@hidden>
  • Date: Wed, 19 Nov 2003 10:06:45 -0800

In Public Utility in the SDK there's a very handy function I wrote called MatrixMixerVolumes - it gives you a nice dump of all of the volume states of your mixer, enabled busses, etc...

Bill

On 18/11/2003, at 11:21 AM, Robert Grant wrote:

Here's a function I just wrote to dump the crosspoints of a MatrixMixer:

void dumpMatrixMixer(AudioUnit mixer, int inputChannels, int outputChannels)
{
int x = 0;
int y = 0;
for (y = -1; y < outputChannels; y++) {
for (x = 0; x < inputChannels + 1; x++) {
UInt32 element = 0;
Float32 level = 0;

if (y == -1 && x == inputChannels) {
element = 0xFFFFFFFF;
} else if (y == -1) {
element = x << 16 | 0xFFFF;
} else if (x == inputChannels) {
element = 0xFFFF << 16 | y;
} else {
element = x << 16 | y;
}
OSStatus err = AudioUnitGetParameter(mixer, kMatrixMixerParam_Volume, kAudioUnitScope_Global, element, &level);
printf("X %.02f ", element, level);
}
printf("\n");
}

}

The first row is your input channel levels (and the global level as the last column on the first row).
The next rows are your cross point levels and the last column is the output channel level. Each point in the matrix tells you the crosspoint element and it's level.

For example a 2 channel input x 2 channel output looks like this:

0000FFFF 1.00 0001FFFF 1.00 FFFFFFFF 0.80
00000000 1.00 00010000 0.00 FFFF0000 1.00
00000001 0.00 00010001 1.00 FFFF0001 1.00

It's a little overwhelming and I'm sure someone could beautify it but it works :-)

Robert.

On Nov 18, 2003, at 1:16 PM, Stefan Werner wrote:

From: Stefan Werner <email@hidden>
Subject: Re: MatrixMixer info
Date: 18. November 2003 19:12:52 MEZ
To: Robert Grant <email@hidden>, email@hidden

Hi,

On 18.11.2003, at 18:54, Robert Grant wrote:

Haven't used the ConverterUnit but you should ensure that the number of channels and the
channel layout (OK Bill? ;-)
of the ConverterUnit match the input bus it's connected to otherwise it won't work. Also make sure
you disable any unused input buses.

Well, I think I am doing all this. Here are some pieces of my code.

At setup time:

UInt32 num= kMatrixChannels;
AudioUnitSetProperty( mMixerUnit,
kAudioUnitProperty_BusCount,
kAudioUnitScope_Input,
0,
&num,
sizeof(UInt32) );

num = 1;
AudioUnitSetProperty( mMixerUnit,
kAudioUnitProperty_BusCount,
kAudioUnitScope_Output,
0,
&num,
sizeof(UInt32) );

AudioUnitSetParameter( mMixerUnit,
kMatrixMixerParam_Volume,
kAudioUnitScope_Global,
0xFFFFFFFF, 1.0, 0);

AudioUnitInitialize(mMixerUnit);

for (i = 0; i < kMatrixChannels; i++) {
AudioUnitSetParameter(mMixerUnit, kMatrixMixerParam_Enable,
kAudioUnitScope_Input, i, 0, 0);
AudioUnitSetParameter(mMixerUnit, kMatrixMixerParam_Volume,
kAudioUnitScope_Global, (i<<16)+0xffff, 1.0, 0);
AudioUnitSetParameter(mMixerUnit, kMatrixMixerParam_Volume,
kAudioUnitScope_Global, (i<<16), 1.0, 0);
}
AudioUnitSetParameter(mMixerUnit, kMatrixMixerParam_Volume,
kAudioUnitScope_Global, 0xffff0000, 1.0, 0);

Then, when I add a Converter Unit (iUnit in this case) I match formats and connect the nodes, finally
I enable the input of the mixer:

AudioUnitGetProperty( iUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Output,
0,
&desc,
&size );

AudioUnitSetProperty( mMixerUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
destInputNumber,
&desc,
size );

AudioUnitSetProperty(mMixerUnit,
kAudioUnitProperty_MakeConnection,
kAudioUnitScope_Input,
mNumClients,
&connection,
sizeof(AudioUnitConnection));


AudioUnitSetParameter(mMixerUnit,
kMatrixMixerParam_Enable,
kAudioUnitScope_Input,
destInputNumber, 1, 0);

None of the functions returns an error (I left away the error checking here for easier reading), and my
IOProc on the other side of the ConverterUnit gets called. Still, no sound. Am I doing something wrong
in mixing or in enabling the channel?

thanks,
Stefan
______________________________________________________________________ ________
WEB.DE FreeMail wird 5 Jahre jung! Feiern Sie mit uns und
nutzen Sie die neuen Funktionen http://f.web.de/features/?mc=021130
_______________________________________________
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.


--
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
________________________________________________________________________ __
_______________________________________________
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.
References: 
 >Re: MatrixMixer info (From: "Stefan Werner" <email@hidden>)
 >Re: MatrixMixer info (From: Robert Grant <email@hidden>)

  • Prev by Date: Re: can't compile SampleEffect & MultitapAU
  • Next by Date: Re: Standard for audio on pasteboards?
  • Previous by thread: Re: MatrixMixer info
  • Next by thread: AUCarbonViews and compositing windows
  • Index(es):
    • Date
    • Thread