Я пишу MIDI-секвенсор на C ++, используя asoundlib. Иногда я хотел бы, чтобы мое приложение остановило все голоса, вызвав событие All-Notes-Off. Я делаю это, вызывая примечание к каждой заметке на каждом канале, так как это единственный способ, который я знаю, но по некоторым причинам я не очень рад отправить 16 * 128 = 2048 событий за один момент. Есть ли другой подход к этому? Было бы идеально, если бы я мог отправить событие в очередь управления, есть ли? Если нет, то как это сделать?
Любая помощь приветствуется, поскольку в Интернете отсутствует хорошая, подробная документация ALSA.
В соответствии с ускоренным курсом по спецификации 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-контроллеров
Удачной охоты!