感谢mahal tertin,它非常易于使用AKAUPresetBuilder
!
您可以在 tmp 目录中的某处创建 .aupreset 文件,然后使用 .aupreset 加载此仪器AKSampler
。
唯一值得注意的是,默认情况下AKAUPresetBuilder
将生成触发模式设置为的样本trigger
,这将忽略音符关闭事件。所以你应该明确地设置它。
例如:
let sampleC4 = AKAUPresetBuilder.generateDictionary(
rootNote: 60,
filename: pathToC4WavSample,
startNote: 48,
endNote: 65)
sampleC4["triggerMode"] = "hold"
let sampleC5 = AKAUPresetBuilder.generateDictionary(
rootNote: 72,
filename: pathToC5WavSample,
startNote: 66,
endNote: 83)
sampleC5["triggerMode"] = "hold"
AKAUPresetBuilder.createAUPreset(
dict: [sampleC4, sampleC5],
path: pathToAUPresetFilename,
instrumentName: "My Instrument",
attack: 0,
release: 0.2)
然后创建一个采样器并启动 AudioKit:
sampler = AKSampler()
try sampler.loadInstrument(atPath: pathToAUPresetFilename)
AudioKit.output = sampler
AudioKit.start()
然后使用它开始播放音符:
sampler.play(noteNumber: MIDINoteNumber(63), velocity: MIDIVelocity(120), channel: 0)
并停止,尊重发布参数:
sampler.stop(noteNumber: MIDINoteNumber(63), channel: 0)