如何使用 Audiokit 对原始值而不是 midi 音符进行排序
How to sequence raw values instead of midi notes with Audiokit
我是 Audiokit 的新手。我想对一组 Double 原始值进行排序,以用作 eurorack 模块中的衰减器。使用 AKSequencer 似乎是不可能的,因为它们旨在与音轨 (AudioKit.AKMusicTrack) 一起使用,将 MIDI 数据发送到 AKMidi-Insrument 实例。
那么怎么可能排序f.e。原始振荡器或 table 属性值?谢谢!
使用 AKCallbackInstrument 和数组中具有序列长度的一些值是可能的
let sequenceLength = AKDuration(beats: 8.0)
let sequencerCallbackInst = AKCallbackInstrument()
var seq1Values = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
...
sequencer.setLength(sequenceLength)
let stepSize: Float = 1 //1/8
let numberOfSteps = Int(Float(sequenceLength.beats) / stepSize)
...
let seqPositioncallbackTrack = sequencer.newTrack()
seqPositioncallbackTrack?.setMIDIOutput(sequencerCallbackInst.midiIn)
sequencerCallbackInst.callback = { status, noteNumber, velocity in
self.onSequencerStepChange(status: status, noteNumber: noteNumber, velocity: velocity)
}
...
for i in 0 ..< numberOfSteps {
seqPositioncallbackTrack?.add(noteNumber: MIDINoteNumber(i), velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 0.5))
...
private func onSequencerStepChange(status: AKMIDIStatus, noteNumber: MIDINoteNumber, velocity: MIDIVelocity) {
guard status == .noteOn
else { return }
let stepValue = Int(noteNumber)
// do something
...
我是 Audiokit 的新手。我想对一组 Double 原始值进行排序,以用作 eurorack 模块中的衰减器。使用 AKSequencer 似乎是不可能的,因为它们旨在与音轨 (AudioKit.AKMusicTrack) 一起使用,将 MIDI 数据发送到 AKMidi-Insrument 实例。 那么怎么可能排序f.e。原始振荡器或 table 属性值?谢谢!
使用 AKCallbackInstrument 和数组中具有序列长度的一些值是可能的
let sequenceLength = AKDuration(beats: 8.0)
let sequencerCallbackInst = AKCallbackInstrument()
var seq1Values = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
...
sequencer.setLength(sequenceLength)
let stepSize: Float = 1 //1/8
let numberOfSteps = Int(Float(sequenceLength.beats) / stepSize)
...
let seqPositioncallbackTrack = sequencer.newTrack()
seqPositioncallbackTrack?.setMIDIOutput(sequencerCallbackInst.midiIn)
sequencerCallbackInst.callback = { status, noteNumber, velocity in
self.onSequencerStepChange(status: status, noteNumber: noteNumber, velocity: velocity)
}
...
for i in 0 ..< numberOfSteps {
seqPositioncallbackTrack?.add(noteNumber: MIDINoteNumber(i), velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 0.5))
...
private func onSequencerStepChange(status: AKMIDIStatus, noteNumber: MIDINoteNumber, velocity: MIDIVelocity) {
guard status == .noteOn
else { return }
let stepValue = Int(noteNumber)
// do something
...