Cubasis track freeze and TAAE
Hi,
I'm using TAAE to power by app (DRC - Polyphonic Synthesizer).
Within Cubasis I am able to instantiate and use it as as Inter App Audio app, however, when I try to freeze the track, the result is completely non sense.
Is there any special care that should be take into consideration to support this functionality? This is how i'm rendering my audio using TAAE:
app.channel = [AEBlockChannel channelWithBlock:^(const AudioTimeStamp *time, UInt32 frames, AudioBufferList *audio)
{
DRCController::instance()->synth()->process((float*)audio->mBuffers[0].mData, (float*)audio->mBuffers[1].mData, frames);
}];
app.channel.audioDescription = [AEAudioController nonInterleavedFloatStereoAudioDescription];
app.channel.channelIsMuted = NO;
app.channel.volume = 1;
[app.audioController addChannels:@[app.channel]];
[app.audioController setAudiobusSenderPort:app.sender forChannel:app.channel];
[app.audiobusController addSenderPort:app.sender];
[app.audiobusController addObserver:app forKeyPath:@"connected" options:0 context:kAudiobusConnectedOrActiveMemberChanged];
[app.audiobusController addObserver:app forKeyPath:@"memberOfActiveAudiobusSession" options:0 context:kAudiobusConnectedOrActiveMemberChanged];
Comments
Hey @sinosoidal - I suspect it's coming out as nonsense because Cubasis is running your IAA node at faster-than-realtime. In that case, I'd suggest the normal ABSenderPort use case, passing in your audio unit. So, instead of
I'd suggest
Then, your app's audio will be driven at whatever rate the host desires. ABSenderPort can't do this when you don't provide the audio unit in the initializer, because it relies on the main audio unit pushing audio to it, and thus can't control the rate of audio flow.
Bingo!
I wouldn't never get there by myself here. What's happening beyond the curtains?
Grand
ABSenderPort with ABSenderPortSend (which is what TAAE1 uses for individual channels) works by buffering incoming audio, then providing that buffered audio to the host. If the host requests more audio than is being input to the buffer, the buffer runs dry and you get nothing but stutters. ABSenderPort with an audio unit runs the audio unit directly, so when the host requests audio, the audio unit is driven for that duration.