首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >止损后的长纸条AKSequencer

止损后的长纸条AKSequencer
EN

Stack Overflow用户
提问于 2018-06-04 14:16:58
回答 1查看 216关注 0票数 3

有时,我需要一些长的音符,以继续播放后,排序器停止。

代码语言:javascript
复制
akSequencer.stop() // Need to put some code to ask the question

当AKSequencer停止时,有没有办法保持长音符的声音?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 21:51:14

与其将AKMusicTrack的MIDI输出直接连接到取样器(或振荡器库或其他什么),不如将其发送到AKCallbackInstrument。在回调函数中,您可以检查排序器的MIDI消息的状态,并将您的noteOn和noteOff消息从那里发送到您的取样器。在回调中,您可以添加条件逻辑,例如,可以使用一些标志来忽略某些条件下的noteOff消息。

为了记录在案,我总是这样设置我的排序器,因为您不仅可以通过回调从同一个AKMusicTrack控制外部MIDI、Audiobus MIDI等以及UI更新。

代码语言:javascript
复制
var seq = AKSequencer()
var sampler = AKAppleSampler()
var callbackInst: AKCallbackInstrument!
var track: AKMusicTrack!
var allowNoteOff: Bool = true

func setupSequencerCallback() {
    track = seq.newTrack()
    callbackInst = AKCallbackInstrument()
    track.setMIDIOutput(callbackInst.midiIn)
    callbackInst.callback = { status, note, vel in
        switch status {
        case .noteOn:
            try? self.sampler.play(noteNumber: note, velocity: vel, channel: 0)
        case .noteOff:
            if self.allowNoteOff {
                try? self.sampler.stop(noteNumber: note, channel: 0)
            }
        default:
            return
        }
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50682689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档