Я работаю над чем-то, что создает плавающие объекты, а затем воспроизводит ноты, когда они сталкиваются.Скорость определяется, затем воспроизводится нота, используя ноты AKOscillatorBank.Когда отправляются несколько заметок с разными скоростями, AKOscillatorBank начинает щелкать, и объемы начинают прыгать повсюду.Это похоже на то, что скорость для любой данной ноты влияет на громкость всего банка осцилляторов.
Работает нормально, когда каждая нота имеет одинаковую скорость.Попытка использовать новый AKOsillator для каждого объекта вместо AKOSillatorBank, но это создает свой собственный набор проблем.
oscBank = AKOscillatorBank(waveform: AKTable(.sine), attackDuration: 0.01, decayDuration: 0.4, sustainLevel: 0, releaseDuration: 0.4, pitchBend: 0, vibratoDepth: 0, vibratoRate: 0)
// each object has a playNote function that calculate velocity of object then converts to midi velocity value.
//Works fine when velocity is set to a static number eg: oscBank.play(noteNumber: midiNote, velocity: 100)
func playNote (_ velocity: CGFloat) {
oscBank.play(noteNumber: midiNote, velocity: phyVelToMidiVel(velocity))
_ = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: false) { timer in
self.oscBank.stop(noteNumber: self.midiNote)
timer.invalidate()
}
}
func phyVelToMidiVel (_ phyVel: CGFloat) -> MIDIVelocity {
var midiVel = (127 / resizeConstant) * phyVel
if midiVel > 127 {
midiVel = 127
}
return UInt8(midiVel)
}
Множество щелчков при отправке AKOsillatorBank нескольких заметок с разными скоростями.