issues with AUMixers
issues with AUMixers
- Subject: issues with AUMixers
- From: anton demonk <email@hidden>
- Date: Wed, 31 Aug 2011 14:08:21 +0200
Hi,
I am struggling with an AUGraph that has 3 AUMixers (with n
inputs) connected to a "main" AUMixer (with 3 inputs), connected to a
RemoteIO unit.
n Bus -- Mixer 0 ---
|
n Bus -- Mixer 1 -------- Main Mixer -- RemoteIO
|
n Bus -- Mixer 2 ---
Some
unexpected issues I have encountered :
1 - the Main mixer uses
AudioUnitRender to call the Callback functions associated to each
mixers (see code below). Strangely enough, the AudioUnitRender call only works for the
inBusNumber "0" of my main Mixer. (the AudioUnitRender calls on
inBusNumber 1 and 2 don't perform)
2 - I thave tried to add a AUGraphAddRenderNotify call to 2 of my mixers
and they don't seem to perform either.
3 - at last, it looks
like the AUMixer have some kind of "normalizing" integrated function. If
I have 10 sounds being played in a AUMixer, the output level is the
same that if I have only one sound. In other words, one played sound
will sound considerably louder one its own that n sounds played through
the same mixer.
I am sure all this are newbie issues and that they are some settings
that I have missed somewhere. But if anyone could point me towards some
tutorials or examples of a AUGraph with multiple mixers, using
AudioUnitRender and AUGraphAddRenderNotify, that would be greatly appreciated
and it would also help me to stop pulling my hair like hell.
Thanks.
Anton
----------------------------------------------
static OSStatus mainMixerCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
SoundEngine* se = (SoundEngine*) inRefCon;
Session* session = (Session *) se.currentSession;
if (inBusNumber==0){
AudioUnitRender((AudioUnit)se.auMixer0, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData);
}
if (inBusNumber==1){
if (session->effectsOn[0]){
AudioUnitRender((AudioUnit)se.auMixer1, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData);
}
}
if (inBusNumber==2){
if (session->effectsOn[1]){
AudioUnitRender((AudioUnit)se.auMixer2, ioActionFlags,
inTimeStamp, inBusNumber, inNumberFrames, ioData);
}
}
return noErr;
}
_______________________________________________
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