Я создаю небольшую клавиатуру для некоторой базовой тренировки уха. Все это работает хорошо, но если я нажму слишком быстро, после нескольких нажатий секвенсор не будет воспроизводить новый звук, пока не пройдет небольшой период. Вот как я сейчас настраиваю AudioKit (я также использую звуковой шрифт для звука пианино):
//setup
let chosenNoteSequencer = AKAppleSequencer()
_ = chosenNoteSequencer.newTrack()
chosenNoteSequencer.setLength(AKDuration(beats: 1))
chosenNoteSequencer.setTempo(150)
chosenNoteSequencer.disableLooping()
@objc func pressResponse(sender: UIButton) {
if chosenNoteSequencer.isPlaying {
chosenNoteSequencer.stop()
}
chosenNoteSequencer.rewind()
chosenNoteSequencer.tracks[0].clear()
chosenNoteSequencer.tracks[0].add(noteNumber: MIDINoteNumber(sender.noteNumber), velocity: 100, position: AKDuration(beats: 0), duration: AKDuration(beats: 1))
chosenNoteSequencer.play()
}
Мне кажется, что повторное нажатие не позволяет перематывать секвенсорвремя, если звуковые данные имеют определенную продолжительность. Если я использую более короткий звук из звукового шрифта, он работает нормально. Единственная причина, по которой я использовал для этого секвенсор, заключается в том, что я все еще могу добавить обратный вызов и потому что я использовал их в прошлом;для быстрого и последовательного воспроизведения отдельных нот может быть лучший способ решить проблему, о которой я в данный момент не знаю. Итак, мой вопрос: есть ли способ улучшить эту настройку, чтобы быстрые нажатия не вызывали ее «перегрев», или есть другой способ, которым я должен заняться?