AudioKit(仍然)缺少用于对Audiofiles进行排序的时钟

时间:2017-03-06 20:47:53

标签: ios swift playback audiokit

我正在尝试使用AudioKit框架中的音序器播放音频文件。

AudioKit.output = sampler


    AudioKit.start()


    sampler.enableMIDI(midi.client,name: "sampler")


    // sequencer start


    let seq = AKSequencer()


    seq.setLength(AKDuration(beats:Double(4)))


    seq.enableLooping()


    let pattern = seq.newTrack()


    pattern?.setMIDIOutput(sampler.midiIn)


    pattern!.add(noteNumber: 48, velocity: 127, position: AKDuration(beats:Double(1)), duration: AKDuration(beats:Double(0.2)), channel: 0)

    pattern!.add(noteNumber: 48, velocity: 127, position: AKDuration(beats:Double(1)), duration: AKDuration(beats:Double(0.2)), channel: 0)

    pattern!.add(noteNumber: 48, velocity: 127, position: AKDuration(beats:Double(2)), duration: AKDuration(beats:Double(0.2)), channel: 0)


    pattern!.setLoopInfo(AKDuration( beats:Double(4) ), numberOfLoops: 80)

    seq.play()

我到了AKMidiSampler只播放正弦波而不是正确的样本as described here

的点

因此事实证明无法“动态”创建序列,因此我开始寻找变通方法并找到SelectorClock它是AudioKit开发人员的解决方法。遗憾的是,这不再适用了..许多类定义及其属性都发生了变化。

也许我不是最新的,这已经修好了......如果不是,我肯定必须要解决这个问题。

2 个答案:

答案 0 :(得分:2)

打开目标背景功能。 选择音频。 没有这个,你就会得到正弦波。

答案 1 :(得分:0)

如果您想完全独立于使用AKSequencer,则可以尝试以下操作:

let metro = AKMetronome()
metro.tempo = 120.0
metro.frequency1 = 0
metro.frequency2 = 0

metro.callback = {

    // your code e.g.: trigger a AKSamplePlayer() which should have been defined earlier in your code:
    sample.play()

}

AudioKit.output = AKMixer(metro, sample)

try! AudioKit.start()
metro.start()

自从我现在在手机上以来,我尚未测试过这段代码,但是它应该可以工作。我在iPhone 6s上运行了这个概念,并且效果很好。我还尝试用自己的类替换AKMetronome(),但是我还没有弄清楚sporth参数的每个方面。首先,我基本上是想摆脱任何节拍器声音(运动时已经将其设置为零,因此不应产生任何噪音)。如果我能做到,我会通知您。