繁体   English   中英

您如何动态地向AUGraph添加新工具

[英]How do you dynamically add new instruments to AUGraph

我目前正在开发一个音乐应用程序,您可以在其中添加新乐器作为音乐序列的音轨。

添加新曲目后,我的要求是:

MusicPlayerStop(_musicPlayer);

status = MusicSequenceNewTrack(sequence, &tracks[tracksCount]);

timeDiff = 32.f/_tempo;

[self setLoopDuration:currentLoopDuration forPattern:tracks[tracksCount]];

AudioComponentDescription samplerNodeDesc;
samplerNodeDesc.componentManufacturer = (OSType)kAudioUnitManufacturer_Apple;
samplerNodeDesc.componentType = (OSType)kAudioUnitType_MusicDevice;
samplerNodeDesc.componentSubType = (OSType)kAudioUnitSubType_Sampler;
samplerNodeDesc.componentFlags = 0;
samplerNodeDesc.componentFlagsMask = 0;


status = AUGraphAddNode(graph, &samplerNodeDesc, &auNodes[tracksCount]);
status = AUGraphNodeInfo(graph, auNodes[tracksCount], 0, &audioUnits[tracksCount]);


status = AUGraphConnectNodeInput(graph, auNodes[tracksCount], 0, filterNode, 0);
status = MusicTrackSetDestNode(tracks[tracksCount], auNodes[tracksCount]);

int trackId = tracksCount;

tracksCount++;

MusicPlayerStart(_musicPlayer);


return trackId;

以下内容根本不会产生音频,请在这里可以做什么。

非常感谢 !

您需要调用AUGraphUpdate(graph, nil) ; 或者,如果您希望在添加图之前阻止该图,则可以为其提供指向布尔值的指针,并且调用线程将等待音频线程添加音频单元。

Boolean updated;
AUGraphUpdate(graph, &updated); //will block until end of next audio cycle

if (updated){
    printf("hooray\n");
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM