AudioKit 4.0.1 - Value of type 'AKSequencer' has no member 'avTracks'

会有一股神秘感。 提交于 2019-12-11 02:43:12

问题


My app has stopped working after recent upgrade of AudioKit from 3.7.1 to 4.0.1.

Here is my code:

    sequencer = AKSequencer(filename: myMidi)

    for i in 0..<popCount {

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

And here is the error message I get:

Value of type 'AKSequencer' has no member 'avTracks'

Just wondering if anyone can help me with understanding what has changed and how I can fix it.

EDIT
Also tried:

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

And now get this error message:

Value of type 'AKMusicTrack' has no member 'destinationAudioUnit'

And tried:

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

which gives the following error:

Cannot assign value of type 'AVAudioUnitSampler' to type 'MusicTrack?' (aka 'Optional<OpaquePointer>')


回答1:


Thanks for input Aure, this helped me find my way through this issue. As did this post on Google Groups. Particularly last comment by Michael Hill.

Here is an update to my method (edited and simplified to show only necessary parts):

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

Everything now working, BUT I have a mysterious sinewave tone playing at all times. I can't locate the source of it? Any help on debugging this would be a lifesaver! Thanks




回答2:


Sorry that this never ended up on AudioKit's core team's radar. Looks like you did properly ask the question with the audiokit hash tag. In any event, from 3.7->4.0 we made the sequencer simpler and we moved the functionality you were using into AKMIDIPlayer:

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

If you use that and reference "tracks" instead of avTracks you should be well on your way.



来源:https://stackoverflow.com/questions/46644013/audiokit-4-0-1-value-of-type-aksequencer-has-no-member-avtracks

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!