AudioKit — подает ли AKSampler или мне нужно добавить несколько файлов сэмплов?

Я только начинаю работать с 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#? Так что он может подать соответственно?

Я очень смущен этим. Надеюсь, вы понимаете, в чем моя проблема.

Заранее благодарю за любую помощь!


person casualcoder    schedule 27.11.2017    source источник


Ответы (1)


AKSampler (и AKMIDISampler) используют AVAudioUnitSampler от Apple для внутреннего использования. Это AVAudioUnitSampler, который выполняет воспроизведение и подачу основной ноты. Если вы посмотрите на документацию для AVAudioUnitSampler loadAudioFiles(at:) (https://developer.apple.com/documentation/avfoundation/avaudiounitsampler/1388631-loadaudiofiles), вы увидите, что он создает новую зону для каждого аудиофайла и использует метаданные в аудиофайле, чтобы попытаться правильно отобразить его. Он также может использовать ярлык, если корневая нота находится в имени файла (например, ViolinC4).

Итак, в прямой ответ на ваши вопросы:

  1. fmpia1 — это отдельный аудиофайл (высота тона). Он внутренне сопоставляется с корневой нотой (возможно, C4, если не указано - требуется проверка).
  2. когда вы отправляете миди-событие с определенным номером ноты, сэмплер перенесет ваш аудиофайл на эту ноту и воспроизведет его. (Вот удобная карта миди для заметок: https://medium.com/@gmcerveny/midi-note-number-chart-for-ios-music-apps-b3c01df3cb19)
  3. Да, если вы знаете основную ноту (высоту файла), указание, как я сказал выше, приведет к точному воспроизведению.
person Eric George    schedule 27.11.2017
comment
Большое спасибо, это именно то, что я хотел знать! Я разбираюсь в MIDI-таблицах/сигналах, но понятия не имел, какие семплы использовать. - person casualcoder; 29.11.2017