如何使用Audiokit对原始值而不是midi音符进行排序

问题描述 投票:4回答:1

我是Audiokit的新手。我想对一组Double原始值进行排序,以便像eurorack模块中的衰减器一样使用。使用AKSequencer似乎不可能,因为它们用于轨道(AudioKit.AKMusicTrack),将MIDI数据发送到AKMidi-Insrument实例。那么如何对f.e进行排序呢?原始振荡器或表属性值?日Thnx!

ios swift audio audiokit aksequencer
1个回答
0
投票

使用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

...
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.