iOS AUSampler连续播放midi音符

时间:2014-01-18 12:18:07

标签: ios core-audio coremidi

我正在尝试使用AUSampler audio unit在sf2文件的帮助下播放midi音符。我可以使用MusicDeviceMIDIEvent函数开始和停止音符,如下所示。

noteCommand =   kMIDIMessage_NoteOn << 4 | 0;
MusicDeviceMIDIEvent (samplerUnit, noteCommand, note, velocity, 0);

即使我没有使用NoteOff消息调用MusicDeviceMIDIEvent函数,音符也会在一段时间后停止。

在我用NoteOff调用MusicDeviceMIDIEvent之前,有没有办法让这个音符播放?或者sf2文件是否应该以不同的方式创建,以便它包含用于音符攻击,音符延音等的不同声音文件,并且AUSampler单元会自动负责播放延音,直到调用NoteOff?

感谢。

1 个答案:

答案 0 :(得分:1)

如果您使用这些文件,则需要在sf2文件或AUPreset中进行设置。对于AUPresets,这是Apple的Tech Note TN2283

  

使用Region List属性指定循环   (kAudioFilePropertyRegionList)描述一段循环音频   数据,可以使用AudioFileSetProperty API进行设置。

这是使用Garageband设置循环AUSampler的long tutorial。 AU实验室也可以生成AUPresets。

对于sf2,显示如何设置循环的youtube视频。不清楚他正在使用什么软件。如果您有冒险精神,可以尝试为OSX构建开源Swami