AudioKit 5振幅包络没有声音

3
我是新来的,对音乐应用程序(和编程)都不太熟悉。
我正在尝试使用AudioKit 5构建一个合成器应用程序作为我的毕业项目。 我制作了一个振荡器并尝试添加幅度包络,但没有声音输出。 (如果我把振荡器放在输出中-就有声音了。)
我在互联网上看到过这个问题很多次,但没有任何解决方案。
有人知道问题出在哪里吗? 如果不知道-您是否有其他包络解决方案?
代码:
import AudioKit
import SoundpipeAudioKit
import UIKit

class TryingViewController: UIViewController {
    
    var osc = Oscillator(waveform: Table(.sine), frequency: 440, amplitude: 0.8)
    var engine = AudioEngine()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func onBtn(_ sender: UIButton) {
        
        let envelope = AmplitudeEnvelope(osc)
        envelope.attackDuration = 0.1
        envelope.decayDuration = 0.01
        envelope.sustainLevel = 0.5
        envelope.releaseDuration = 0.3
        
        osc.start()
        do {
            try engine.start()
        } catch {
            print(error, "Field")
        }
        engine.output = envelope
        
        envelope.start()
    }
    
    @IBAction func offBtn(_ sender: UIButton) {
        
        osc.stop()
    }
    
}

编辑:

我添加了这段代码,现在它可以工作了,感谢Aurelius Prochazk!

var isGateOpend = false 
.
.
. 
if isGateOpend{ 
    envelope.closeGate() 
    isGateOpend = false 
   } else { 
    envelope.openGate() 
    isGateOpend = true 
   }

我还有一个点击问题,如果我无法解决它,我将开另一个问题来询问。
提前感谢!
1个回答

3
AmplitudeEnvelope是一个“门控”节点,这意味着它响应openGate和closeGate,而不是start和stop,因为那些在节点级别而不是控制级别。

首先 - 谢谢! 你能否请详细解释一下,并给出一个代码示例? 你是指像 "envelope.open" 这样的吗? 我真的很新手。 - undefined
好的,我使用了这段代码,它是有效的,但是当我关闭它时仍然会出现数字噪音(咔嗒声)。 这是因为电脑的问题还是我需要添加一些东西? - undefined
1
当运行envelope.closeGate()时,释放值为0.3的话,你不应该听到点击声。你是否也停止了振荡器,因为在offBtn代码中看起来是这样的? - undefined
即使释放值为0.7,我仍然有一个点击声,并且我不再有oscillator.stop()。 你有任何想法为什么我还是听到点击声吗?攻击部分运行正常。 - undefined
1
就我个人而言,我已经复制粘贴了您的代码,但在我的系统中并没有听到点击声。 - undefined
解决了,谢谢!当我用MVC正确地写下来时。。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接