Как отправить All-Notes-Off ALSA MIDI Event?

Я пишу MIDI-секвенсор на C ++, используя asoundlib. Иногда я хотел бы, чтобы мое приложение остановило все голоса, вызвав событие All-Notes-Off. Я делаю это, вызывая примечание к каждой заметке на каждом канале, так как это единственный способ, который я знаю, но по некоторым причинам я не очень рад отправить 16 * 128 = 2048 событий за один момент. Есть ли другой подход к этому? Было бы идеально, если бы я мог отправить событие в очередь управления, есть ли? Если нет, то как это сделать?

Любая помощь приветствуется, поскольку в Интернете отсутствует хорошая, подробная документация ALSA.

3
задан 12 November 2010 в 07:33

1 ответ

В соответствии с ускоренным курсом по спецификации midi вы просто отправляете событие 'Z' со всеми отключенными нотами, которое объясняется как 00 B0 7B 00

00 to indicate no time delay
B0 to send a midi control signal
7B to send an all notes off
00 does nothing (padding)

. Список байтов управления MIDI здесь: Номера MIDI-контроллеров

Удачной охоты!

0
ответ дан 12 November 2010 в 07:33

Другие вопросы по тегам:

Похожие вопросы: