如何使用音序器控制振荡器的频率

时间:2016-05-07 01:09:31

标签: ios swift audiokit

我想知道如何使用input { file { path => "./logstash-2.3.2/bin/s.gz" codec => gzip_lines { charset => "ISO-8859-1"} } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } #match => { "message" => "message: %{GREEDYDATA}" } } #date { # match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] #} } output { stdout { codec => rubydebug } } 控制AKOscillator的频率,但是我见过的几个例子(12)在线仅显示如何使用AKSequencer控制AKSampler

以下是AudioKit's GitHub page的简化示例:

AKSequencer

我的期望:

基于上面的例子,我希望能够做到这样的事情:

// 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

这显然无法解决问题。

问题:

允许我使用AKSequencer控制AKOscillator的正确设置是什么?

2 个答案:

答案 0 :(得分:5)

@ Aurelius的回答显然是正确的,但它并没有明确回答这个问题。为了帮助下一个遇到此问题的人,我将分享我的解决方案。

问题是:

如何使用AKOscillator控制AKSequencer

答案是:

无法直接控制它。正如Aurelius所说,你需要将振荡器包裹在midi乐器中,这需要一些工作。

  • 您的振荡器应包含在子类AKVoice的类中,您可以找到example of this here
  • 接下来,您将创建@Aurelius描述的包装" midi乐器"(aka。AKPolyphonicInstrument)。 这是音序器能够与之交谈的能力!您可以看到example of this here

现在我们的振荡器具有与音序器对话的功能,我们可以这样实现MollyBChimes approach

在班级创建新AKPolyphonicInstrument的实例,对我来说它看起来像这样:

var osc1 = SynthVoiceInstrument(voiceCount: 4)
var sequencer = AKSequencer()
var mixer = AKMixer()
var melody: AKMIDIInstrument?

然后在您的设置功能或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()

Melody Generator

答案 1 :(得分:1)

您需要将振荡器包装在midi乐器中并使用它。有关使用fm振荡器的示例,请查看sequencer demo