Como enviar um evento ALSA MIDI All-Notes-Off?

3

Eu estou escrevendo um seqüenciador MIDI em C ++ usando o asoundlib. Às vezes, gostaria que meu aplicativo parasse todas as vozes, chamando um evento All-Notes-Off. Eu faço isso chamando uma nota para cada nota em todos os canais, já que esta é a única maneira que eu sei, mas por algumas razões eu não estou realmente feliz em enviar 16 * 128 = 2048 eventos em um momento. Existe alguma outra abordagem para isso? Seria perfeito se eu pudesse enviar um evento para a fila de controle, existe algum? Se não, então como deve ser feito?

Qualquer ajuda é bem-vinda, já que a Internet não possui uma boa documentação detalhada da ALSA.

    
por Rafał Cieślak 19.10.2010 / 17:52

1 resposta

1

De acordo com o curso intensivo sobre a especificação midi , você simplesmente envia um evento 'Z' com um todas as notas que são explicadas como 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)

Você pode ver uma lista de bytes de controle midi aqui: Números do Controlador MIDI

Caça feliz!

    
por Martin Owens -doctormo- 12.11.2010 / 05:32