检测当前柱的正确方法?
the proper way to detect the current bar?
我正在开发基于 SequencerDemo 应用程序的音序器应用程序,使用 AKAppleSequencer。到目前为止一切都很好,但现在我需要添加一个新功能来突出显示当前栏。
有没有我可以用来跟踪当前正在播放的小节的委托?处理这个问题的正确方法是什么?非常感谢任何帮助。
AKAppleSequencer
有 属性 currentPosition
和 currentRelativePosition
,它们会在查询时告诉您位置。
您可以在每个小节的开头包含一个带有一个事件的音序器轨道,并将其发送到 AKMIDICallbackInstrument
。您将拥有一个将由这些事件触发的回调函数。在这里您可以检查当前柱线并注意在 UI.
中突出显示它
根据@c_booth 的建议,我最终使用了 AKMIDICallbackInstrument。我将 midi 音符(每小节 2 拍)添加到一个单独的(专用)轨道,以跟踪传输。
我在初始化中加入了以下内容:
callbackInstr = AKMIDICallbackInstrument(
midiInputName: "midiCallBack",
callback: { status, noteNumber, velocity in
let statusType = AKMIDIStatus(byte: status)?.type
if(statusType == AKMIDIStatusType.noteOn){
self.sequencerCallback()
}
})
我正在 sequencerCallback()
中跟踪 sequencer.currentPosition.musicTimeStamp
它似乎有效。
我正在开发基于 SequencerDemo 应用程序的音序器应用程序,使用 AKAppleSequencer。到目前为止一切都很好,但现在我需要添加一个新功能来突出显示当前栏。
有没有我可以用来跟踪当前正在播放的小节的委托?处理这个问题的正确方法是什么?非常感谢任何帮助。
AKAppleSequencer
有 属性 currentPosition
和 currentRelativePosition
,它们会在查询时告诉您位置。
您可以在每个小节的开头包含一个带有一个事件的音序器轨道,并将其发送到 AKMIDICallbackInstrument
。您将拥有一个将由这些事件触发的回调函数。在这里您可以检查当前柱线并注意在 UI.
根据@c_booth 的建议,我最终使用了 AKMIDICallbackInstrument。我将 midi 音符(每小节 2 拍)添加到一个单独的(专用)轨道,以跟踪传输。
我在初始化中加入了以下内容:
callbackInstr = AKMIDICallbackInstrument(
midiInputName: "midiCallBack",
callback: { status, noteNumber, velocity in
let statusType = AKMIDIStatus(byte: status)?.type
if(statusType == AKMIDIStatusType.noteOn){
self.sequencerCallback()
}
})
我正在 sequencerCallback()
中跟踪 sequencer.currentPosition.musicTimeStamp它似乎有效。