首页 > 解决方案 > 使用 AKSampler 以特定音序器速度静音音符

问题描述

我最近从 AKAppleSequencer 迁移到 AKSequencer。我的应用程序正在使用一些 AKSampler 来播放以 wav 形式提供的录制乐器。

一切正常,与 AKAppleSequencer 相比,现在的时机要好得多。但是将速度设置为某个值时会出现奇怪的行为。现在似乎有些音符已静音(或部分取消)。将速度设置为高于或低于该值都可以正常工作 - 模式中的所有音符都可以听到。改变节奏并没有什么魔力,除了sequencer.tempo=value. 除了一些混音器外,没有后处理。

这是一些伪代码:

let sequencer = AKSequencer()
let akfile = try AKAudioFile(readFileName: "sample-1.wav")
let descriptor = AKSampleDescriptor(
   noteNumber: 60,
   noteFrequency: 
Float(AKPolyphonicNode.tuningTable.frequency(forNoteNumber: 60)),
   minimumNoteNumber: -1,
   maximumNoteNumber: 127,
   minimumVelocity: 0,
   maximumVelocity: 127,
   isLooping: false,
   loopStartPoint: 0.0,
   loopEndPoint: 1.0,
   startPoint: 0.0,
   endPoint: 0.0)
let sampler = AKSampler()
sampler.loadAKAudioFile(from: descriptor, file: akfile)
sampler.buildSimpleKeyMap()

// load some more samples
// create tracks and notes
let track = sequencer.addTrack(for: sampler)
// wire everything together
// play

问题似乎与使用了哪些样本有关,因此仅删除一些代码行可能不足以重现该行为。

使用 AKAppleSampler 而不是 AKSampler 为我解决了这个问题,但是对于面临该问题并需要使用 AKSampler 的其他人来说,任何提示都可能很有趣。

我正在使用 AudioKit v 4.9.3,问题出现在硬件和模拟器上。

标签: audiokit

解决方案


推荐阅读