Вам потребуется запустить AKSequencer в фоновом режиме (возможно, с метрономной дорожкой). Сделайте дополнительный трек, на который вы будете записывать. Также установите длину, необходимую для записи.
Когда вы получаете сообщение noteOn с клавиатуры, вы можете проверить currentPosition
секвенсора и записать его в словарь. Когда вы получите сообщение noteOff соответствующего шага, снова проверьте currentPosition
. Используйте разницу между этими двумя значениями, чтобы получить длительность и добавить примечание к дорожке записи на секвенсоре:
myRecordingTrack.add(noteNumber: noteNumber,
velocity: 127,
position: timeAtNoteOn,
duration: timeAtNoteOff - timeAtNoteOn,
channel: 0)
Тогда вы можете легко использовать AKSequencer
genData()
для создания MIDI-файла (возможно, либо удалив дорожку метронома, либо скопировав записанную дорожку в новый экземпляр AKSequencer
).
Ознакомьтесь с SequencerDemo для настройки AKSequencer
и построения последовательностей и MIDIFileEditAndSync (оба в папке с примером iOS в репозитории AudioKit) для примера записи AKSequencer
в файл MIDI.