AudioKit 5 Amplitude Envelope 没有声音
AudioKit 5 Amplitude Envelope no sound
我是新来的,也是音乐应用程序(和一般编程)的新手。
我正在尝试使用 AudioKit 5 为我的最终项目构建一个 synth 应用程序。
我做了一个 oscillator 并尝试添加 Amplitude Envelope 但没有声音出来。
(如果我把振荡器放在输出端——会有声音。)
这个问题我在网上看到过好几次不同类型的,但都没有解决方案。
有人知道问题出在哪里吗?
如果没有 - 你有其他信封解决方案吗?
代码:
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
}
我仍然有一个点击,但如果我不会弄清楚,我会打开另一个关于它的问题。
提前致谢!
AmplitudeEnvelope 是一个“门控”节点,这意味着它响应 openGate 和 closeGate,应该使用它们而不是 start stop,因为它们处于节点级别而不是控制级别。
我是新来的,也是音乐应用程序(和一般编程)的新手。
我正在尝试使用 AudioKit 5 为我的最终项目构建一个 synth 应用程序。 我做了一个 oscillator 并尝试添加 Amplitude Envelope 但没有声音出来。 (如果我把振荡器放在输出端——会有声音。)
这个问题我在网上看到过好几次不同类型的,但都没有解决方案。
有人知道问题出在哪里吗? 如果没有 - 你有其他信封解决方案吗?
代码:
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
}
我仍然有一个点击,但如果我不会弄清楚,我会打开另一个关于它的问题。
提前致谢!
AmplitudeEnvelope 是一个“门控”节点,这意味着它响应 openGate 和 closeGate,应该使用它们而不是 start stop,因为它们处于节点级别而不是控制级别。