ios - AudioKit:如何在两个不同的 AKOperationGenerator-Oscillators 之间切换
<p><p>我想使用 AKOperation.squareWave() 和 AKOperation.triangleWave() 构建一个在方波和三角波之间进行模式切换的振荡器。当我尝试如下构建它时,它不起作用。怎么了?谢谢!</p>
<pre><code>import AudioKitPlaygrounds
import AudioKit
let osc_square = AKOperationGenerator { parameters in
return AKOperation.squareWave(
frequency: parameters,
amplitude: parameters
)
}
let osc_tri = AKOperationGenerator { parameters in
return AKOperation.triangleWave(
frequency: parameters,
amplitude: parameters
)
}
var currentOsc: AKOperationGenerator = osc_square
var currentMode:Int = 1
AudioKit.output = currentOsc
try AudioKit.start()
setCurrentVCOParameters()
currentOsc.play()
let playgroundWidth = 500
import AudioKitUI
class LiveView: AKLiveViewController {
override func viewDidLoad() {
addTitle("Switch AKOperationGenerator")
let button = AKButton(title: "Mode \(currentMode)") { _ in
if currentMode == 1 {
setVCOMode(2)
}
else if currentMode == 2 {
setVCOMode(1)
}
}
addView(button)
}
}
func setVCOMode(_ modeIndex: Int) {
currentMode = modeIndex
setCurrentVCO()
}
func setCurrentVCO() {
currentOsc.stop()
switch currentMode {
case 1:
currentOsc = osc_square
case 2:
currentOsc = osc_tri
default:
currentOsc = osc_square
}
setCurrentVCOParameters()
currentOsc.start()
}
func setCurrentVCOParameters() {
currentOsc.parameters = 110.0
currentOsc.parameters = 0.5
}
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = LiveView()
</code></pre>
<p>在启动时 OSC 的方波运行良好,但是当我触摸切换开关时会出现静音。切换回来会带回正方形。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>似乎不可能那样做。我现在可以并行运行不同的振荡器,当我需要它们运行/停止时启动/停止我需要的振荡器</p>
<pre><code>var currentVCO1Mode: VCOMode = .sqr
let allVCO1Generators: !
enum CurrentVCO1: Int {
case sqr, tri
}
var currentVCO1:CurrentVCO1
func setCurrentVCO1() {
vco1_square.stop()
vco1_tri.stop()
switch currentVCO1Mode {
case .sqr:
vco1_square.start()
currentVCO1 = .sqr
case .tri:
vco1_tri.start()
currentVCO1 = .tri
}
setCurrentVCO1Parameters()
setCurrentVCO2()
}
</code></pre>
<p>等等</p></p>
<p style="font-size: 20px;">关于ios - AudioKit:如何在两个不同的 AKOperationGenerator-Oscillators 之间切换,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/49351258/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/49351258/
</a>
</p>
页:
[1]