AudioKit 4.0.1 – types'AKSequencer'的值没有成员'avTracks'

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 ”types的值没有成员“ avTracks

只是想知道是否有人可以帮助我了解已经发生了什么变化,以及如何解决这个问题。

编辑
还试过:

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

现在得到这个错误信息:

types' AKMusicTrack '的值没有成员' destinationAudioUnit '

并试过:

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

这给出了以下错误:

无法指定“ AVAudioUnitSampler ”types的值来键入“ MusicTrack? '(又名' Optional<OpaquePointer> ')

感谢inputAure,这帮助我find了解决这个问题的方法。 就像Google网上论坛上的这篇文章一样 。 特别是Michael Hill最后的评论。

这里是我的方法更新(编辑和简化,只显示必要的部分):

 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() 

现在一切正常,但我总是有神秘的正弦波音调。 我找不到它的来源? 任何帮助debugging这将是一个救星! 谢谢

对不起,这从来没有结束AudioKit的核心团队的雷达。 看起来你用audiokit哈希标签正确地问这个问题。 无论如何,从3.7-> 4.0我们使序列器更简单,我们将您使用的function移到AKMIDIPlayer中:

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

如果你使用这个和参考“轨道”,而不是avTracks,你应该很好的路上。