AudioKit - AKSampler 推销还是我需要添加多个样本文件?

AudioKit - Does AKSampler pitch or do I need to add multiple sample files?

我刚刚开始使用 AudioKit。我想让它非常简单。我想制作几个 UIButtons (C,D,E,F,...) 然后让它们演奏相应的钢琴样本。但是我不明白如何正确准备示例文件。

我找到了这个例子:

let sampler = AKSampler()
sampler.loadWav("Sounds/fmpia1")
let ampedSampler = AKBooster(sampler, gain: 3.0)
var delay  = AKDelay(ampedSampler)
delay.time = pulse * 1.5
delay.dryWetMix = 0.0
delay.feedback = 0.0

let cMajor = [72, 74, 76, 77, 79, 81, 83, 84]

var mix = AKMixer(delay)
var reverb = AKReverb(mix)

AudioKit.output = reverb
AudioKit.start()

for note in cMajor {
    sampler.playNote(note)
    sleep(1)
}

我的理解:加载采样器和数字(72、74、...)是音符的 MIDI 信号。

但是:采样器如何知道要播放什么?示例 "fmpia1" 是否包含所有注释?它只是一个样本,但 AKSampler 会自动调整它们的音高吗?但是 AKSampler 如何知道采样的音符是什么? AKSampler 不应该被告知文件中的示例是 F# 吗?所以他可以相应地投球吗?

我对此很困惑。我希望你能理解我的问题是什么。

在此先感谢您的帮助!

AKSampler(和 AKMIDISampler)在内部使用 Apple 的 AVAudioUnitSampler。是 AVAudioUnitSampler 进行播放和调整你的根音。如果您查看 AVAudioUnitSampler loadAudioFiles(at:) (https://developer.apple.com/documentation/avfoundation/avaudiounitsampler/1388631-loadaudiofiles) 的文档,您会看到它为每个音频文件创建了一个新区域,并使用音频文件中的元数据尝试正确映射它。如果根音符在文件名中(即 - ViolinC4),它也可以采用快捷方式。

所以,直接回答你的问题:

  1. fmpia1 是单个音频文件(音调)。它在内部映射到根音符(如果未指定,可能是 C4 - 需要验证)。
  2. 当您发送带有特定音符编号的 MIDI 事件时,采样器会将您的音频文件设置为该音符并播放。 (这里有一个方便的 midi 到音符的映射:https://medium.com/@gmcerveny/midi-note-number-chart-for-ios-music-apps-b3c01df3cb19
  3. 是的,如果您知道根音符(文件的音高),按照我上面所说的进行指定将导致准确播放。