2017-10-16 1 views
2

AKOperationGenerator에서 사운드를 페이드 인하는 방법이 있습니까?AudioKit : AKOperationGenerator에서 페이드 인합니다.

예. 아래 코드에서 .start()는 전체 진폭에서 한 번의 클릭으로 시작됩니다.

let whiteNoiseGenerator = AKOperationGenerator { _ in 

    let white = AKOperation.whiteNoise() 
    return white 
} 


AudioKit.output = whiteNoiseGenerator 
whiteNoiseGenerator.start() 

답변

1

이 고양이를 피하는 데는 여러 가지 방법이 있습니다. 시작 소리를 중지

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 
그런

그냥

volumeControl.gain = 1 // or 0 for stopping 

를 설정하여 수행됩니다

한 것은 AKBooster에 노이즈 발생기를 포장하는 것입니다 : 내가 당신에게 몇 줄 것이다 또는 수술의 맥락에서이를 수행하는 방법을 알고 싶다는 것을 알고 있으므로, 수술 및 이득의 수술 매개 변수를 제공하여이를 수행 할 수 있습니다.

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() 
0 당신은 노이즈를 켜려고 할 때

그리고, 이렇게 :

whiteNoiseGenerator.parameters[0] = 1 

당신은 0.1 초 동안 전체 볼륨에 부드러운 변화를 얻을 것이다.

HTH!

+0

두 번째 해결 방법은 큰 도움이됩니다. 첫 번째로, 나는 생각한다 : volumeControl.gain = 1 // 멈춤을위한 0 –

+0

내가 탐구하고있는 또 다른 접근법은 MPVolumeView를 사용하는 것이지만 이것은 AKOperationGenerators 사이를 전환 할 때 응용 프로그램을 중단시키는 것처럼 보입니다. –

+0

주의해야합니다. 이상적으로 AudioKit을 시작하고 중지하는 대신 필요에 따라 생성기를 시작 및 중지하는 오디오 엔진이 하나만 있으면됩니다. 섬세한 균형이 될 수 있습니다. –

관련 문제