我正在尝试使用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开发人员的解决方法。遗憾的是,这不再适用了..许多类定义及其属性都发生了变化。
也许我不是最新的,这已经修好了......如果不是,我肯定必须要解决这个问题。
答案 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参数的每个方面。首先,我基本上是想摆脱任何节拍器声音(运动时已经将其设置为零,因此不应产生任何噪音)。如果我能做到,我会通知您。>