AudioKit - AKSampler音高或是否需要添加多个样本文件?

时间:2017-11-27 17:34:55

标签: audiokit

我刚开始使用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#?所以他可以相应地投球吗?

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

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

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. 是的,如果您知道根音(文件的音高),按上述说明将导致精确播放。