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!
2. Lösung funktioniert super danke. Zum ersten, ich denke du meinst: volumeControl.gain = 1 // oder 0 zum Stoppen –
Ein anderer Ansatz, den ich erforsche, ist die Verwendung von MPVolumeView integrieren, aber dies scheint die App zum Absturz zu bringen, wenn zwischen AKOperationGenerators. –
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. –