【发布时间】:2018-01-21 12:16:48
【问题描述】:
我想使用 AudioKit 框架来生成一些高低音的小声音序列。
所以我开始的消息可能如下所示:“1100011010”
--> 每一列都应该循环播放,如果它的值为"1",AudioKit 应该播放(短)high frequency 声音,如果不是,它应该播放(短)lower frequency 声音。
因为 每 0.15 秒触发一次的简单计时器循环,用于运行 0.1 秒声音(高/低) 的 .play()-函数似乎没有非常准确我决定使用*AudioKit Sequencer*:
(o) 音频套件:
enum Sequence: Int {
case snareDrum
}
var snareDrum = AKSynthSnare()
var sequencer = AKSequencer()
var pumper: AKCompressor?
var mixer = AKMixer()
public init() {
snareDrum >>> mixer
pumper = AKCompressor(mixer)
AudioKit.output = pumper
AudioKit.start()
}
func setupTracks() {
_ = sequencer.newTrack()
sequencer.tracks[Sequence.snareDrum.rawValue].setMIDIOutput(snareDrum.midiIn)
generateMessageSequence()
sequencer.enableLooping()
sequencer.setTempo(2000)
sequencer.play()
}
(o) 播放: 变量消息="1100011010" 变量计数器=0
for i in message {
counter+=0.15
if (i=="1") {
// play high sound at specific position
}
else {
// play low sound at specific position
}
}
(o) 在特定位置播放低音:
sequencer.tracks[Sequence.snareDrum.rawValue].add(noteNumber: 20,
velocity: 10,
position: AKDuration(beats: counter),
duration: AKDuration(beats: 1))
我的问题:如何使用(position: AKDuration(beats: counter)) //the code from above 在特定位置播放本地声音文件,而不是像在这种情况下使用默认乐器AKSynthSnare()?
【问题讨论】: