3

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

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

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

希望你能帮忙:)

4

3 回答 3

6

AUSampler ( kAudioUnitSubType_Sampler) 是单音的(参考此处),因此为了同时演奏相同音高的两个音符,您将需要两个“乐器” - 即 AUSampler 的实例。在我的项目中,我发现这并没有增加太多的内存开销,因为声音资源是共享的。

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

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

如果您进行后期处理,请回发一些示例代码。

于 2013-03-28T14:13:26.030 回答
4

接受的答案是错误的。音色复音是两个不同的东西。单声道音色意味着 MIDI 设备(在本例中为 AUSampler 实例)只能同时播放单个 INSTRUMENT/PATCH,这与它可以为该单个乐器同时播放的音符数量无关。另一方面,多音色设备可以同时播放多个乐器/补丁(midi 通道)。在 AUSampler 的 iOS 版本中,复音似乎被限制并硬编码为 2 个音符,而且似乎没有公共 api 可以改变这一点。

于 2014-12-17T08:49:15.380 回答
2

我不认为 AUSampler 仅限于两个音符复音。我只是在为我的项目做研究,这对我来说非常重要。

看看这个钢琴键盘插件,作者提到它是用AUSampler制作的,从视频中你可以看到它很容易演奏四个音符和弦

于 2015-05-09T11:27:21.457 回答