2017-10-16 1 views
2

Gibt es eine Möglichkeit, einen Sound von einem AKOperationGenerator einzublenden?AudioKit: Einblenden von AKOperationGenerator

z. Im folgenden Code beginnt .start() mit voller Amplitude mit einem Klick.

let whiteNoiseGenerator = AKOperationGenerator { _ in 

    let white = AKOperation.whiteNoise() 
    return white 
} 


AudioKit.output = whiteNoiseGenerator 
whiteNoiseGenerator.start() 

Antwort

1

Es gibt viele Möglichkeiten, diese Katze zu häuten. Ich gebe Ihnen ein paar:

Eine wäre, den Rauschgenerator in einem AKBooster zu wickeln:

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 

Dann starten und den Sound zu stoppen wird nur durch das Setzen

volumeControl.gain = 1 // or 0 for stopping 

erfolgen Alternativ weiß ich, dass Sie wissen möchten, wie Sie dies im Rahmen einer Operation tun können, indem Sie Ihrem Betrieb Parameter für Verstärkung und Portamentozeit geben:

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

Und dann, wenn Sie auf den Lärm machen wollen dies tun:

whiteNoiseGenerator.parameters[0] = 1 

Sie eine glatte Variation auf volle Lautstärke über 0,1 Sekunden erhalten.

HTH!

+0

2. Lösung funktioniert super danke. Zum ersten, ich denke du meinst: volumeControl.gain = 1 // oder 0 zum Stoppen –

+0

Ein anderer Ansatz, den ich erforsche, ist die Verwendung von MPVolumeView integrieren, aber dies scheint die App zum Absturz zu bringen, wenn zwischen AKOperationGenerators. –

+0

Sie müssen vorsichtig sein. Idealerweise haben Sie nur eine Audio-Engine, die die Generatoren nach Bedarf startet und stoppt, statt AudioKit zu starten und zu stoppen. Es kann ein empfindliches Gleichgewicht sein. –