【问题标题】:How is the AKSequencer setup in AudioKit > 4.8?AudioKit > 4.8 中的 AKSequencer 设置如何?
【发布时间】:2020-05-04 23:30:34
【问题描述】:

没有关于如何设置最新版本 AKSequencer 的示例,因此我不得不假设一些基于以前版本的内容。

我对@9​​87654323@ 有以下实现,并且有音频输出:

let track = sequencer.newTrack()
track?.setMIDIOutput(sampler.midiIn)
track?.add(noteNumber: 60, velocity: 100, position: AKDuration(beats: 1), duration: AKDuration(beats: 0.25))
sequencer.enableLooping(AKDuration(beats: 4))
sequencer.setTempo(self.defaultTempo)
sequencer.play()

同时,我对最新的AKSequencer 应该足够的东西没有音频输出:

let track: AKSequencerTrack = self.sequencer.addTrack(for: self.sampler)
track.add(noteNumber: 60, velocity: 100, position: 1, duration: 1)
sequencer.length = 4
sequencer.loopEnabled = true
sequencer.tempo = 60
sequencer.play()

这两种情况都将sampler 连接到mainMixer 并分配给AudioKit.output

由于这不适用于最新的AKSequencer,我认为可能将AKSequencerTrack 插入mainMixer 并将sampler 拔出mainMixer 可以吗?但是没用!

mainMixer.connect(input: track)

没有其他选择了!所以,在寻找AKSequencerTrack 后发现有人报告了同样的问题(Why is the new AKSequencer not producing any sound?),所以尝试了:

        mainMixer.connect(input: sampler)
        mainMixer.connect(input: track)

再一次,没有声音!还有一个指向这个相关主题的链接,这与我之前的尝试类似,没有输出 (How to play MIDI with AudioKit's new AKSequencer),但只是为了确保更改为使用 AKSampler 并加载本地声音:

sampler.loadSFZ(url: Bundle.main.url(forResource: "clock", withExtension: "wav")!)

又一次失败……!没有声音。

我正在运行 AudioKit 4.9.5

为了保持理智,AKSequencerTrack 中有一个方法 .play,如果我调用它会发生什么?

track.play()

没有声音!好的,如果我把采样器改回AKSnareSynth呢?

let t: AKSynthSnare = AKSynthSnare()
sequencer.addTrack(for: t)

玩了吗?不!

我在非 AKSequencer 中是否有输出?是的:

        let t: AKSynthSnare = AKSynthSnare()
        self.mainMixer.connect(input: t)
        t.play(noteNumber: 60,
        velocity: MIDIVelocity(127),
        channel: MIDIChannel(1))

.isPlaying 是真的吗?

        for track in self.sequencer.tracks {
             mainMixer.connect(input: track)
             track.play()
             print("> > > > track.isPlaying: \(track.isPlaying)")
         }

是的,isPlaying 返回true

> > > > track.isPlaying: true

但是,不,没有声音!

我认为AKSequencer 目前是一个暗箱,除非有人在 Github 中发布示例(我在源代码中搜索过,但在撰写本文时没有),否则不应使用它。或者也许我做错了什么我不知道,只是浪费了一天的时间尝试不同的事情。

【问题讨论】:

    标签: audiokit


    【解决方案1】:

    @c_booth 在以下帖子中提供了答案 (AudioKit: Using the new AKSequencer with any variety of the callback instruments)

    似乎looptempo 是在track 中设置的,而不是音序器本身,

    // set up a track
    let track = seq.addTrack(for: cbInst)
    for i in 0 ..< 4 {
        track.add(noteNumber: 60, position: Double(i), duration: 0.5)
    }
    track.length = 4.0
    track.loopEnabled = true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多