Ios 如何向AUGraph动态添加新仪器
我目前正在制作一个音乐应用程序,你可以将新乐器作为曲目添加到音乐序列中 以下是我在添加新曲目时所做的准备:Ios 如何向AUGraph动态添加新仪器,ios,objective-c,core-audio,audiounit,audio-player,Ios,Objective C,Core Audio,Audiounit,Audio Player,我目前正在制作一个音乐应用程序,你可以将新乐器作为曲目添加到音乐序列中 以下是我在添加新曲目时所做的准备: MusicPlayerStop(_musicPlayer); status = MusicSequenceNewTrack(sequence, &tracks[tracksCount]); timeDiff = 32.f/_tempo; [self setLoopDuration:currentLoopDuration forPattern:tracks[tracksCoun
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");
}
你能让音乐播放器工作吗?@dave我已经把它添加到我的代码中,但仍然不能让它工作!:(@dave我们是否应该继续聊天,当我开始聊天时,我会发布答案?我只是不确定我是否理解你的问题。你在播放音乐序列时有困难吗?或者你只是需要帮助添加曲目吗?@dave,我在播放新添加的曲目时遇到问题!我有一位指挥,这是duri添加的第一首曲目正在初始化曲线图,如果我使用初始化过程中添加的示例节点作为新添加轨迹的dest节点,它将播放ie
MusicTrackSetDestNode(轨迹[TrackScont],sampleNode)
。但是我无法让MusicTrackSetDestNode(轨迹[TrackScont],auNodes[TrackScont])
正常工作。希望您现在理解?