AudioKit .nearestQuantizedPosition缺少节拍吗?

时间:2018-12-12 06:54:19

标签: ios audiokit

我有一些iOS Swift代码(使用AudioKit 4.5.3),该代码是使用AKSequencer馈送AKCallbackInstrument来播放八拍鼓循环的。

我也在量化一些用户输入,因此我从AKSequencer访问.currentRelativePosition和.nearestQuantizedPosition。

我看到一些奇怪的量化结果,所以每当AKCallbackInstrument从AKSequencer接收到.noteOn事件时,我都会检查.currentRelativePosition和.nearestQuantizedPosition:

       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 ))

输出使我感到惊讶……一切正常,除了击败了7个。即使.currentRelativePosition始终正确返回节拍7,.nearestQuantizedPosition始终返回零作为节拍7的最近节拍。拍子为零,两个例程均正确显示所有其他拍子。任何想法将不胜感激!

当前节拍:0.0 -MIDI noteOn设置为:0.0002

当前节拍:1.0 -MIDI noteOn位于:1.0002

当前节拍:2.0 -MIDI noteOn位于:2.0002

当前节拍:3.0 -MIDI noteOn位于:3.0001

当前节拍:4.0 -MIDI noteOn位于:4.0002

当前节拍:5.0 -MIDI noteOn位于:5.0003

当前节拍:6.0 -MIDI noteOn位于:6.0005

当前节拍:0.0 -MIDI noteOn位于:7.0003

当前节拍:0.0 -MIDI noteOn设置为:0.0005

当前节拍:1.0 -MIDI noteOn位于:1.0003


编辑:我只是尝试了不同的顺序,但结果相同。我的序列现在是12个拍子,.nearestQuantizedPosition对于11个拍子返回零。

我的测试序列只是一个拍子音符串,它是用以下方式创建的:

    for beatPosition in 0 ... 11 {
        drummer.tracks[0].add(
            noteNumber: 27,
            velocity: 100,
            position: AKDuration(beats: Double(beatPosition)),
            duration: AKDuration(beats: 1))
    }

序列的长度似乎是准确的。打印drummer.length返回:

264600个样本在44100.0 = 12.0节拍下以120.0 BPM = 6.0s


12个节拍循环的输出:

当前节拍:9.0 -MIDI noteOn位于:9.0005

当前节拍:10.0 -MIDI noteOn位于:10.0003

当前节拍:0.0 -MIDI noteOn位于:11.0005

当前节拍:0.0 -MIDI noteOn设置为:0.0002

当前节拍:1.0 -MIDI noteOn位于:1.0005

0 个答案:

没有答案