Как мне заставить AudioKit AKPluckedString изящно исчезать?

#ios #swift #audiokit

#iOS #swift #audiokit

Вопрос:

Я совсем новичок в AudioKit. У меня есть AKPluckedString, который работает, но без изменений воспроизводится после .trigger в течение МНОГИХ секунд. Я хочу, чтобы он исчезал равномерно в течение примерно 2 секунд. Мне удалось выполнить приведенный ниже код, но он кажется довольно неуклюжим. Прежде чем я нашел этот метод, я исследовал использование AKAmplitudeEnvelope, amplitudeRange, rampTime и множество других возможностей. Как мне добиться этого с помощью инструментов AK?

Кроме того, AudioKit.io документы, похоже, не соответствуют тому, что у меня есть в моей платформе iOS, загруженной всего пару недель назад. Являются ли эти документы желательными? Старый?

         string = AKPluckedString()
        string.rampDuration = 1
        AudioKit.output = string
        try? AudioKit.start()

    func pluck() -> Void {
        string.trigger(frequency: 180, amplitude: 1.0)
        DispatchQueue.main.asyncAfter(deadline: .now()   0.4) {
            self.string.amplitude = 0.75
        }
        DispatchQueue.main.asyncAfter(deadline: .now()   0.8) {
            self.string.amplitude = 0.5
        }
        DispatchQueue.main.asyncAfter(deadline: .now()   1.2) {
            self.string.amplitude = 0.25
        }
        DispatchQueue.main.asyncAfter(deadline: .now()   1.6) {
            self.string.amplitude = 0.0
        }
    }
  

XCode 11.7 iOS 13.6

Ответ №1:

Это было проще, чем я думал. Установите rampDuration на время затухания, затем просто измените амплитуду. Для перехода к новому aplitude требуется несколько секунд rampDuration.

 pluckedString.rampDuration = 2.0
pluckedString.trigger(frequency: 440.0, amplitude: 2.0)
self.pluckedString.amplitude = 0.0