2

AudioKit最近从 3.7.1 升级到 4.0.1后,我的应用程序已停止工作。

这是我的代码:

    sequencer = AKSequencer(filename: myMidi)

    for i in 0..<popCount {

        //start Audio
        sequencer!.avTracks[i].destinationAudioUnit = gPOPs[i].samplePlayer.samplerUnit          
    }

这是我收到的错误消息:

“ ”类型的值AKSequencer没有成员“ avTracks

只是想知道是否有人可以帮助我了解发生了什么变化以及如何解决它。

编辑
还尝试过:

sequencer!.tracks[i].destinationAudioUnit = gPOPs[i].samplePlayer.samplerUnit

现在得到这个错误信息:

“ ”类型的值AKMusicTrack没有成员“ destinationAudioUnit

并尝试:

sequencer!.tracks[i].internalMusicTrack = gPOPs[i].samplePlayer.samplerUnit

这给出了以下错误:

无法将类型“”的值分配AVAudioUnitSampler给类型“ MusicTrack?”(又名“ Optional<OpaquePointer>”)

4

2 回答 2

3

感谢 Aure 的输入,这帮助我找到了解决这个问题的方法。就像Google Groups 上的这篇文章一样。特别是迈克尔希尔的最后评论。

这是我的方法的更新(经过编辑和简化以仅显示必要的部分):

var MIDISamplePlayer = AKMIDISampler()
var sequencer: AKSequencer?
var mixer: AKMixer!

// initialise the mixer
mixer = AKMixer()

do  {
        audiofile = try AKAudioFile(readFileName: SoundFilename as! String, 
        baseDir: .resources)
    } catch let error as NSError {
        print("There's an error: \(error)")
    }

do {
       try sprite.MIDISamplePlayer.loadAudioFile(audiofile)
    } catch let error as NSError {
       print("There's an error: \(error)")
    }

sprite.tracker = AKAmplitudeTracker(sprite.MIDISamplePlayer)
mixer.connect(to:sprite.tracker, bus: mixer.nextInput.bus)

sequencer = AKSequencer(filename: POPmidi)
sequencer?.enableLooping()

let midi = AKMIDI()

for i in 0..<popCount {
    gPOPs[i].MIDISamplePlayer.enableMIDI(midi.client, name: "MIDISample_\(i)")
    mixer.connect(gPOPs[i].MIDISamplePlayer)
    sequencer!.tracks[i].setMIDIOutput(gPOPs[i].MIDISamplePlayer.midiIn)
}

AudioKit.start()
sequencer!.play()

现在一切正常,但我一直在播放神秘的正弦波音调。我找不到它的来源?任何有关调试的帮助都将是救命稻草!谢谢

于 2017-11-06T10:42:04.100 回答
1

很抱歉,这从未在 AudioKit 的核心团队的雷达上结束。看起来您确实使用 audiokit 哈希标签正确地提出了这个问题。无论如何,从 3.7->4.0 我们简化了音序器,并将您使用的功能移到了 AKMIDIPlayer 中:

https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/MIDI/AKMIDIPlayer.swift

如果您使用它并引用“曲目”而不是 avTracks,那么您应该一切顺利。

于 2017-10-26T21:13:15.187 回答