如何使用Audiokit对原始值而不是midi音符进行排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Audiokit对原始值而不是midi音符进行排序相关的知识,希望对你有一定的参考价值。
我是Audiokit的新手。我想对一组Double原始值进行排序,以便像eurorack模块中的衰减器一样使用。使用AKSequencer似乎不可能,因为它们用于轨道(AudioKit.AKMusicTrack),将MIDI数据发送到AKMidi-Insrument实例。那么如何对f.e进行排序呢?原始振荡器或表属性值?日Thnx!
答案
使用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对原始值而不是midi音符进行排序的主要内容,如果未能解决你的问题,请参考以下文章
在 IOS 上使用 AudioKit 将声音文件作为 MIDI 音符发送