Как правильно перемотать секвенсор? - PullRequest
0 голосов
/ 28 октября 2019

Я создаю небольшую клавиатуру для некоторой базовой тренировки уха. Все это работает хорошо, но если я нажму слишком быстро, после нескольких нажатий секвенсор не будет воспроизводить новый звук, пока не пройдет небольшой период. Вот как я сейчас настраиваю 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()
    }

Мне кажется, что повторное нажатие не позволяет перематывать секвенсорвремя, если звуковые данные имеют определенную продолжительность. Если я использую более короткий звук из звукового шрифта, он работает нормально. Единственная причина, по которой я использовал для этого секвенсор, заключается в том, что я все еще могу добавить обратный вызов и потому что я использовал их в прошлом;для быстрого и последовательного воспроизведения отдельных нот может быть лучший способ решить проблему, о которой я в данный момент не знаю. Итак, мой вопрос: есть ли способ улучшить эту настройку, чтобы быстрые нажатия не вызывали ее «перегрев», или есть другой способ, которым я должен заняться?

...