Прорабатываю тему чтения MIDI файлов

Для того, чтобы реализовать идею хранения мелодий автоаккомпанемента в виде MIDI файлов на флешке, изучаю, как устроены стандартные MIDI файлы. Благо, есть статья, в которой всё доступно объясняется. Мне надо будет уметь сканировать эти файлы, чтобы определять, в какие MIDI каналы там воспроизводится мелодия.

Ну, в общем, худшие подозрения оправдались: там нет никакого такого поля в заголовке файла, в котором бы были указаны номера использованных каналов. В MIDI файлах хранится тупо поток MIDI команд, которые «как есть» отправляются в синтезатор. А номер MIDI-канала, как известно, является частью статус-байта каждой команды. Т.е. придётся перебирать все команды (точнее все статус-байты) в записанном потоке, чтобы составить список используемых каналов. Это всё для того, чтобы проверять, что MIDI-каналы, использованные в файле авто-аккомпанемента, не пересекаются с каналами, связанными с клавиатурами баяна. (В первой версии буду просто проверять, что всегда используется 10-й канал, т.е. стандартный канал ударных инструментов.)

Осталось либо найти готовую библиотеку чтение MIDI файлов, либо писать собственный сканер. Но поиск таких библиотек — это уже будет задача на следующий вечер.

Рис. 1 КДПВ

Добавить комментарий