我的应用程序在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>”)
发布于 2017-11-06 10:42:04
感谢Aure的投入,这帮助我找到了解决这个问题的方法。这篇关于谷歌集团的文章也是如此。特别是迈克尔·希尔的最后评论。
下面是对我的方法的更新(编辑和简化,只显示必要的部分):
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-10-26 21:13:15
很抱歉,这件事从未出现在AudioKit的核心团队的雷达上。看来你用有声哈希标签问了问题。无论如何,从3.7到>4.0,我们简化了排序器,并将您使用的功能移到AKMIDIPlayer中:
https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/MIDI/AKMIDIPlayer.swift
如果您使用它,并引用“跟踪”而不是avTracks,那么您应该在路上很好。
https://stackoverflow.com/questions/46644013
复制相似问题