我目前正在尝试有效地使用 Ausampler 装置。我使用了苹果示例中的代码:https://developer.apple.com/library/ios/#samplecode/LoadPresetDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011214-Intro-DontLinkElementID_2

缺点似乎是,如果再次出现相同的音符,它会立即停止音符/采样。
所以如果我发送例如加载了长号预设的 midi note 60。然后在拿着这个的同时,我再次发送注释 60。它切断了第一个音符事件。有谁知道是否/如何可以保持每一个音符直到一个音符关闭事件(这个特定音符)出现?

其他问题:
发送后如何更改便笺的音量?例如。我以 100 的力度发送了 MIDI note 60 和 70。虽然音符 60 仍在播放,但我想降低音量但保持音符 70 向上。这将被称为midi触后。

希望能帮到你 :)

最佳答案

AUSampler ( kAudioUnitSubType_Sampler ) 是单音色的( referencehere ),所以为了同时演奏两个相同音高的音符,你需要两个“乐器”——即 AUSampler 的实例。在我的项目中,我发现这不会增加太多内存开销,因为声音资源是共享的。

至于触后 - 我还没有探索过,但看起来你想要的属性是 kAUGroupParameterID_KeyPressure_FirstKey (引用 here ,也许 here )。

Supporting the kAUGroupParameterID_KeyPressure parameter indicates to
hosts that your audio unit supports polyphonic "aftertouch" key pressure.

Each of the 128 MIDI key numbers can have its own value for polyphonic
aftertouch. To respond to aftertouch for a particular key, your audio
unit needs to support an additional parameter specifically for that key.
The aftertouch parameter ID for a given MIDI key is equal to the MIDI
key number plus 256. For example, the aftertouch parameter ID for MIDI
key #60 (middle C) is:

60 + kAUGroupParameterID_KeyPressure_FirstKey = 316

如果你得到了触后工作,回发一些示例代码。

关于ios - CoreAudio : Ausampler Unit polyphony,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15670554/

10-10 20:40