---------- Forwarded message ----------
From: Dave O'Neill <[email protected]>
Date: Sat, Mar 21, 2015 at 5:01 PM
Subject: Re: Fwd: still super duper frustrated about the au graph..
To: "Patrick J. Collins" <[email protected]>
Here you go:
AudioComponentInstance getComponentInstance(OSType type,OSType subType){
AudioComponentDescription desc = {0};
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
desc.componentSubType = subType;
desc.componentType = type;
AudioComponent ioComponent = AudioComponentFindNext(NULL, &desc);
AudioComponentInstance unit;
AudioComponentInstanceNew(ioComponent, &unit);
return unit;
}
-(void)setUpAudioUnits:(BOOL)offline{
AudioComponentInstance ioUnit = getComponentInstance(
kAudioUnitType_Output, kAudioUnitSubType_DefaultOutput);
AudioComponentInstance lowPass = getComponentInstance(
kAudioUnitType_Effect, kAudioUnitSubType_LowPassFilter);
AURenderCallbackStruct cbStruct = {renderCallback,(__bridge void *)self
};
AudioUnitSetProperty(lowPass, kAudioUnitProperty_SetRenderCallback,
kAudioUnitScope_Input, 0, &cbStruct, sizeof(AURenderCallbackStruct));
AudioUnitInitialize(lowPass);
if (offline) {
AudioBufferList *bufferlist = malloc(sizeof(AudioBufferList) +
sizeof(AudioBuffer));//stereo bufferlist
float *left = malloc(sizeof(float) * 1024);
float *right = malloc(sizeof(float) * 1024);
bufferlist->mBuffers[0].mData = left;
bufferlist->mBuffers[1].mData = right;
AudioTimeStamp inTimeStamp;
memset(&inTimeStamp, 0, sizeof(AudioTimeStamp));
inTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
inTimeStamp.mSampleTime = 0;
AudioUnitRenderActionFlags flag = 0;
for (int i = 0; i < 30; i++) {
bufferlist->mBuffers[0].mDataByteSize = sizeof(float) * 1024;
bufferlist->mBuffers[1].mDataByteSize = sizeof(float) * 1024;
bufferlist->mNumberBuffers = 2;
AudioUnitRender(lowPass, &flag, &inTimeStamp, 0, 1024,
bufferlist);
inTimeStamp.mSampleTime += 1024;
}
}
else{
AudioUnitConnection lowPassConn = {0};
lowPassConn.destInputNumber = 0;
lowPassConn.sourceAudioUnit = lowPass;
lowPassConn.sourceOutputNumber = 0;
AudioUnitSetProperty(ioUnit, kAudioUnitProperty_MakeConnection,
kAudioUnitScope_Input, 0, &lowPassConn, sizeof(AudioUnitConnection));
AudioUnitInitialize(ioUnit);
AudioOutputUnitStart(ioUnit);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 *
NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
AudioUnitSetParameter(lowPass, kLowPassParam_CutoffFrequency,
kAudioUnitScope_Global, 0, 200, 0);
});
}
}
OSStatus renderCallback(void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData){
ViewController *self = (__bridge ViewController*)inRefCon;
float *data = ioData->mBuffers[0].mData;
float *data2 = ioData->mBuffers[1].mData;
for (int i = 0; i < inNumberFrames; i++) {
if (self->increasing) {
self->mySample += 0.01;
if (self->mySample > 1) {
self->increasing = 0;
}
}
else{
self->mySample -= 0.01;
if (self->mySample < -1) {
self->increasing = 1;
}
}
data[i] = self->mySample;
data2[i] = self->mySample;
}
printf("render %f to %f\n",inTimeStamp->mSampleTime,inTimeStamp->
mSampleTime + inNumberFrames);
return noErr;
}
On Sat, Mar 21, 2015 at 4:19 PM, Patrick J. Collins <
[email protected]> wrote:
> Nope.. Just tried giving it stereo, still no breakpoint is hit in my
> render callback. :( or really :'(
>
> Patrick J. Collins
> http://collinatorstudios.com
>
>
> On Sat, 21 Mar 2015, Dave O'Neill wrote:
>
> > I think the low pass unit needs stereo floats, you're giving it a mono
> buffer.
> > Maybe that's the problem.
> >
> > On Sat, Mar 21, 2015 at 3:52 PM, Patrick J. Collins
> > <[email protected]> wrote:
> > > I don't think that you can call AudioUnitRender on the ioUnit,
> but
> > I don't know
> > > that for sure. If you are going to do an offline render just
> > leave it out and
> > > call AudioUnitRender on the next unit up the chain.
> >
> > Unfortunately, that's still not working.. I changed it to:
> > AudioUnitRender(player.lowPassAU, &flag, &inTimeStamp, 0,
> > blockSize, bufferlist);
> >
> > My callback still isn't getting triggered, and that AudioUnitRender
> > call
> > is definitely being hit many times...
> >
> > Patrick J. Collins
> > http://collinatorstudios.com
> >
> >
> >
> >
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com
This email sent to [email protected]