Ios 音频套件。最接近的量化位置缺少一个节拍?
我有一些iOS Swift代码(使用AudioKit 4.5.3),它使用AKSequencer为AKCallbackInstrument提供反馈,以播放八拍鼓循环 我也在量化一些用户输入,所以我从AKSequencer访问.currentRelativePosition和.nearestQuantizedPosition 我看到一些奇怪的量化结果,所以每当AKCallbackInstrument从AKSequencer接收到.noteOn事件时,我就检查了.currentRelativePosition和.nearestQuantizedPosition:Ios 音频套件。最接近的量化位置缺少一个节拍?,ios,audiokit,Ios,Audiokit,我有一些iOS Swift代码(使用AudioKit 4.5.3),它使用AKSequencer为AKCallbackInstrument提供反馈,以播放八拍鼓循环 我也在量化一些用户输入,所以我从AKSequencer访问.currentRelativePosition和.nearestQuantizedPosition 我看到一些奇怪的量化结果,所以每当AKCallbackInstrument从AKSequencer接收到.noteOn事件时,我就检查了.currentRelativePos
case .noteOn:
self.currentBeat = self.drummer.nearestQuantizedPosition(quantizationInBeats: 1.0).beats
self.noteOnTimeStamp = self.drummer.currentRelativePosition.beats
print(String(format: "Current beat : %.1f\n-- MIDI noteOn at : %.4f \n", self.currentBeat, self.noteOnTimeStamp ))
输出结果让我吃惊……除了第七拍之外,一切都正常。即使.currentRelativePosition始终正确地返回拍7,.nearestQuantizedPosition始终返回零,就像最近的拍7一样。节拍0和所有其他节拍由两个例程正确显示。任何想法都将不胜感激
当前节拍:0.0
--MIDI音符:0.0002
当前节拍:1.0
--MIDI音符:1.0002
当前节拍:2.0
--MIDI音符:2.0002
当前节拍:3.0
--MIDI音符:3.0001
当前节拍:4.0
--MIDI音符:4.0002
当前节拍:5.0
--MIDI音符:5.0003
当前节拍:6.0
--MIDI音符:6.0005
当前拍数:0.0
--MIDI音符:7.0003
当前节拍:0.0
--MIDI音符:0.0005
当前节拍:1.0
--MIDI音符:1.0003
编辑:我刚刚尝试了不同的序列,结果相同。我的序列现在是12拍,最接近的QuantizedPosition为11拍返回零 我的测试序列只是一串单拍音符,由以下内容创建:
for beatPosition in 0 ... 11 {
drummer.tracks[0].add(
noteNumber: 27,
velocity: 100,
position: AKDuration(beats: Double(beatPosition)),
duration: AKDuration(beats: 1))
}
序列的长度似乎是精确的。打印鼓手。长度返回:
在44100.0=12.0拍数和120.0 BPM=6.0拍数下的264600个样本
12拍循环的输出: 当前节拍:9.0 --MIDI音符:9.0005 当前节拍:10.0 --MIDI音符:10.0003 当前拍数:0.0 --MIDI音符:11.0005 当前节拍:0.0 --MIDI音符:0.0002 当前节拍:1.0 --MIDI音符:1.0005