如何使用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音符进行排序的主要内容,如果未能解决你的问题,请参考以下文章

使用 AudioKit 从 MIDI 文件中读取音符

在 IOS 上使用 AudioKit 将声音文件作为 MIDI 音符发送

在 AudioKit 中“重新触发”Midi 音符

AudioKit:如何更改使用 AKMIDIEvent 播放的音符的音量或音高?

AudioKit 5:音序效果

将 iOS 应用程序的 midi 输出发送到 Garageband