Quais são as portas Timer e Announce do cliente System MIDI da ALSA e como usá-lo?

2

O comando aconnect -lio sempre mostra essas entradas:

client 0: 'System' [type=noyau]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=noyau]
    0 'Midi Through Port-0'

O cliente “Midi Through” tem um significado óbvio, já que é padrão no mundo MIDI, e é facilmente usado. A porta “Timer” do cliente “System” tem um significado abstrato bastante óbvio, mas parece não haver documentação sobre isso. A porta “Announce” parece misteriosa e é desconhecida dos dispositivos MIDI padrão (ou é apenas para mim). Pesquisando na web sobre os portos “Timer” e “Announce”, por um longo tempo, não deu nada.

Perguntas: Existem algumas dicas para saber mais sobre os portos “Timer” e “Announce” do cliente “System”? Quer dizer, com respostas para este tipo de perguntas: que mensagem pode ser recebida / enviada de / para ela, e como iniciar / parar / configurar (especialmente para o “Temporizador”).

Esta é principalmente uma questão de documentação de plataforma ou sistema, mas como ela também é relacionada à ALSA, não tenho certeza se é melhor postá-la aqui ou no StackOverflow. Por favor, aceite minhas desculpas se meu palpite estivesse errado.

    
por Hibou57 08.06.2015 / 00:18

1 resposta

2

Tudo bem, encontrei uma documentação para isso, estava na documentação da API da ALSA (acabei de errar na primeira olhada):

Projeto ALSA - a referência da biblioteca C (alsa-project.org)

  

Um núcleo do sequenciador tem duas portas do sistema pré-definidas no cliente do sistema SND_SEQ_CLIENT_SYSTEM: SND_SEQ_PORT_SYSTEM_TIMER e SND_SEQ_PORT_SYSTEM_ANNOUNCE. O SND_SEQ_PORT_SYSTEM_TIMER é a porta do temporizador do sistema e SND_SEQ_PORT_SYSTEM_ANNOUNCE é a porta de anúncio do sistema. Para controlar uma fila de um cliente, o cliente deve enviar um evento de controle de fila como iniciar, parar e continuar a fila, alterar o andamento, etc. para a porta do cronômetro do sistema. Então o sistema seqüenciador manipula a fila de acordo com o evento recebido. Esta porta suporta assinatura. Os eventos do temporizador recebidos são transmitidos para todos os clientes inscritos.

Sobre SND_SEQ_PORT_SYSTEM_ANNOUNCE :

  

A última porta não recebe mensagens, mas suporta assinatura. Quando cada cliente ou porta é anexado, desanexado ou modificado, um anúncio é enviado aos assinantes dessa porta.

a partir de SND_SEQ_PORT_SYSTEM_TIMER , pode-se receber SND_SEQ_EVENT_START eventos e, a partir de SND_SEQ_PORT_SYSTEM_ANNOUNCE , pode-se receber SND_SEQ_EVENT_PORT_SUBSCRIBED eventos.

Parece que eu deveria ter postado isso no StackOverflow em vez de no AskUbuntu. Se alguém com essa capacidade vir este post, por favor, mova-o para o StackOverflow (a questão e sua resposta ainda podem valer para outros).

    
por Hibou57 08.06.2015 / 04:57