AudioKit:从AKOperationGenerator淡入

XCo*_*ier 3 swift audiokit

有没有一种方法可以减弱AKOperationGenerator发出的声音?

例如,在.start()下面的代码中,单击时会以全幅值开始。

let whiteNoiseGenerator = AKOperationGenerator { _ in

    let white = AKOperation.whiteNoise()
    return white
}


AudioKit.output = whiteNoiseGenerator
whiteNoiseGenerator.start()
Run Code Online (Sandbox Code Playgroud)

Aur*_*zka 5

有很多方法可以给这只猫蒙皮。我给你几个:

一种方法是将噪声发生器包装在AKBooster中:

let volumeControl = AKBooster(whiteNoiseGenerator)
volumeControl.gain = 0
volumeControl.rampTime = 1 // number of seconds to fade in/out
AudioKit.output = volumeControl
AudioKit.start() // Don't forget this, I assume you just didn't paste it in
whiteNoiseGenerator.start() // nothing will be heard
Run Code Online (Sandbox Code Playgroud)

然后,只需通过设置即可开始和停止声音

volumeControl.gain = 1 // or 0 for stopping
Run Code Online (Sandbox Code Playgroud)

另外,我知道您想知道如何在某个操作的上下文中执行此操作,因此可以通过给您的操作参数设置增益和滑音时间来做到这一点:

let whiteNoiseGenerator = AKOperationGenerator { parameters in

    let white = AKOperation.whiteNoise() * parameters[0].portamento(halfDuration: parameters[1])
    return white
}

whiteNoiseGenerator.parameters = [0,0.1] // first number is gain, second is portamento time
AudioKit.output = whiteNoiseGenerator
AudioKit.start()
whiteNoiseGenerator.start()
Run Code Online (Sandbox Code Playgroud)

然后,当您要打开噪音时,请执行以下操作:

whiteNoiseGenerator.parameters[0] = 1
Run Code Online (Sandbox Code Playgroud)

您将在0.1秒内平稳地变到满音量。

HTH!