Создание MIDI-файла из AKKeyboardView - PullRequest
0 голосов
/ 27 апреля 2018

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

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

1 Ответ

0 голосов
/ 28 апреля 2018

Вам потребуется запустить 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.

...