Создание MIDI-файла из AKKeyboardView

В настоящее время я использую AKKeyboardView для подключения по существу к объекту AKRhodesPiano, и мне было интересно, есть ли простой способ сгенерировать MIDI-файл из этого?

Я вижу, что у AKKeyboardView есть функции noteOn и noteOff, которые действительно создают MIDINoteNumber, но я не могу найти больше нигде в библиотеке AudioKit, чтобы действительно принять этот ввод и сгенерировать файл MIDI, даже если только простой.


person c0rruptbytes    schedule 27.04.2018    source источник


Ответы (1)


Вам нужно будет запустить AKSequencer в фоновом режиме (возможно, с дорожкой метронома). Сделайте дополнительный трек, на который вы будете записывать. Также установите длину так, чтобы она была вам нужна для записи.

Когда вы получаете сообщение noteOn с клавиатуры, вы можете проверить currentPosition секвенсора и записать его в словарь. Когда вы получите сообщение noteOff соответствующей высоты тона, снова проверьте currentPosition. Используйте разницу между этими двумя временами, чтобы получить продолжительность и добавить примечание к треку записи на секвенсоре:

myRecordingTrack.add(noteNumber: noteNumber,
              velocity: 127,
              position: timeAtNoteOn,
              duration: timeAtNoteOff - timeAtNoteOn,
              channel: 0)

Затем вы можете легко использовать genData() AKSequencer для создания файла MIDI (возможно, либо удалив дорожку метронома, либо скопировав записанную дорожку в новый экземпляр AKSequencer).

Ознакомьтесь с SequencerDemo для настройки AKSequencer и построения последовательностей и MIDIFileEditAndSync (оба находятся в папке примеров iOS в репозитории AudioKit) для примера записи AKSequencer в файл MIDI.

person c_booth    schedule 27.04.2018