我正在使用MusicPlayer API。我了解到,当您以.mid顺序加载时,API会为您创建一个包含AUSampler的默认AUGraph。该AUSampler使用简单的基于正弦波的乐器来合成.mid中的音符
我的问题是,如何更改AUSampler中的默认乐器?我了解您可以使用SoundFont2文件(.sf2),并使用AudioUnitSetProperty方法添加它们。但是,如何访问此默认AUGraph?您必须先打开图,然后才能编辑AudioUnit还是只为编辑节点之间的连接而打开图?
谢谢 :)
最佳答案
您可以看一下Audiograph示例。它不使用soundFonts,但应该让您了解如何设置图表。
当我使用MusicPlayer时,我总是从代码/ GUI生成Midi音符数据,并从头开始创建AUGraph(带有混音器)。有多种方法可以导出/提取通过加载Midi文件(下面的示例代码)而生成的默认生成的AUGraph和AUSampler(但是,我从未成功通过这种方式设置新的soundFont)。另一方面,从头开始创建AUGraph,然后加载.sf2文件非常有用。
AUGraph graph;
result = MusicSequenceGetAUGraph (sequence, &graph);
MusicTrack firstTrack;
result = MusicSequenceGetIndTrack (sequence, 0, &firstTrack);
AUNode myNode;
result = MusicTrackGetDestNode(firstTrack,&myNode);
AudioUnit mySamplerUnit;
result = AUGraphNodeInfo(graph, myNode, 0, &mySamplerUnit);