AudioKit v5 振荡器频率斜坡问题

Issue with AudioKit v5 oscillator frequency ramp

我是 AudioKit 的新手,正在使用 v5。振荡器频率斜坡似乎没有按预期工作。以下示例有 2 个连续的斜坡。首先它上升到 440-880,但随后听起来像是 880-660 而不是 440-660。

如果我注释掉 osc.$frequency.ramp(to: 660.0, duration: 1.0),它会上升到 440-880,然后非常快地上升到 440 但会到达那里。

似乎在斜坡后没有重置。

sleep仅供测试。)

这是一个错误吗?还有什么我应该做的吗?任何见解将不胜感激!谢谢!

import Cocoa
import AudioKit

class Test {

    let akEngine = AudioEngine()
    let osc = Oscillator()

    func setup() {
        osc.amplitude = 0.1
        akEngine.output = osc
        do {
            try akEngine.start()
        } catch {
            print("Couldn't start AudioEngine.")
        }
        osc.frequency = 440.0
        osc.start()
        osc.$frequency.ramp(to: 880.0, duration: 1.0)
        sleep(2)
        osc.stop()
        sleep(1)
        osc.frequency = 440.0
        osc.start()
        osc.$frequency.ramp(to: 660.0, duration: 1.0)
        sleep(2)
        osc.stop()
    }
    
}

这可能值得解释,或者它应该像上面那样固定工作,但是一旦开始自动更改,您应该坚持使用自动化语法,而不是跳到简单的值设置。对您来说,这意味着只需将 osc.frequency = 440 替换为 osc.$frequency.ramp(to: 440.0, duration: 0.0),我相信您会得到想要的效果。

设置参数 (osc.frequency = 440.0) 会导致使用一个微小的斜坡来避免拉链(相当于 osc.$frequency.ramp(to: 440.0, duration:epsilon))。测试代码立即应用另一个斜坡,覆盖拉链斜坡。

如果您在第二个 osc.start() 之后插入 sleep,您会听到快速的拉链斜坡回到 440。