Dan*_*ieu 3 ios swift audiokit
我想知道如何来控制AKOscillator使用的频率AKSequencer,但是几个例子(1,2)我在网上看到只显示了如何控制一个AKSampler用AKSequencer.
这是AudioKit的GitHub页面的简化示例:
// relevant class properties
var seq: AKSequencer?
var syn1 = AKSampler()
// viewDidLoad
seq = AKSequencer(filename: "seqDemo", engine: AudioKit.engine)
seq?.enableLooping()
seq!.avTracks[1].destinationAudioUnit = syn1.samplerUnit
Run Code Online (Sandbox Code Playgroud)
我的期望:
基于上面的例子,我希望能够做到这样的事情:
var voice1 = Voice() // replaces the AKSampler
seq = AKSequencer(filename: "seqDemo", engine: AudioKit.engine)
seq.loopOn()
//seq.avTracks[0].destinationAudioUnit = voice1.oscillator.avAudioNode
seq.note = voice1.oscillator.frequency // "note" doesn't actually exist in the API
Run Code Online (Sandbox Code Playgroud)
这显然没有做到这一点.
什么是允许我使用AKSequencer控制AKOscillator的正确设置?
@Aurelius的答案显然是正确的,但它并没有明确地回答这个问题.为了帮助下一个遇到此问题的人,我将分享我的解决方案.
问题是:
如何控制一个AKOscillator用AKSequencer.
答案是:
你无法直接控制它.正如Aurelius所说,你需要将振荡器包裹在midi乐器中,这需要一些工作.
AKVoice,你可以在这里找到一个例子.AKPolyphonicInstrument@Aurelius描述的包装"midi instrument"(aka.).这就是音序器能够与之交谈的能力!你可以在这里看到一个例子.现在我们的振荡器具有与音序器对话的功能,我们可以像这样实现MollyBChimes方法:
在类级别创建一个新的AKPolyphonicInstrument的实例,对我来说它看起来像这样:
var osc1 = SynthVoiceInstrument(voiceCount: 4)
var sequencer = AKSequencer()
var mixer = AKMixer()
var melody: AKMIDIInstrument?
Run Code Online (Sandbox Code Playgroud)
然后在您的设置功能或viewDidLoad中,您将执行以下操作:
melody = AKMIDIInstrument(instrument: osc1)
melody?.enableMIDI(midi.midiClient, name: "melodicSound midi in")
mixer.connect(melody!)
AudioKit.output = pumper
AudioKit.start()
sequencer.newTrack()
sequencer.setLength(seqLen)
sequencer.tracks[0].setMIDIOutput((melody?.midiIn)!)
/*
melody generator function just to hear some sounds
see Melody Generator link below.
*/
genNewMelodicSequence(minor: true)
sequencer.loopEnabled = true
sequencer.setBPM(100)
sequencer.play()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |