sexta-feira, 22 de outubro de 2010

Alsa Midi, Jack Midi

Recentemente eu precisei ligar algo em MIDI pelo Jack. Como o Jack, até aonde sei, não mapeia portas MIDI do sistema, quase todos os softwares que utilizam o Jack usam o ALSA para o MIDI. Comecei a implementar uma ponte (bridge) para ligar o ALSA MIDI no Jack MIDI. Procurando na Internet encontrei um trecho de código que fazia o que eu queria. Descobri que o código fazia parte de um  projeto chamado a2jmidi

Surpreendentemente ele faz a ponte entre o Midi do jack e o Midi do ALSA. Exatamente o que eu precisava.

Surpreendentemente ele já está no repositório do Ubuntu Studio. O que torna sua instalação um docinho de côco!

Mais surpreendentemente ainda, ele já estava instalado em minha máquina. Então é só executar.

Vou utilizar esta aplicação para conectar os plugins de instrumento virtuais do CALF ao Virtual Keyboard. O Virtual Keyboard usa o Midi do ALSA e os plugins de instrumento do CALF usam o MIDI do Jack.


Há tempos curto os plugins CALF e achava uma pena eles ficarem no MIDI do Jack, sozinhos e perdidos. Neste exemplo estou usando o plugin "Organ".

Para criar a conexão utilize o comando:

a2jmidi_bridge

 Ele trará 2 conexões midis: Uma para o alsa e uma para o Jack. Agora é só conectar tudo:

Virtual Keyboard para o a2j_bridge.

a2j_bridge para o Calf.

Calf para a saída de áudio do sistema.

Como é chato ter de abrir uma aplicação toda vez que iniciarmos o Jack, é possível executar o midi bridge toda vez que o jack for iniciado. Para isto, adicione nos scripts do jack para iniciar o bridge após a inicialização do Jackd.

; /usr/bin/a2jmidi_bridge&



Não esqueça o &. Ele serve para liberar a execução do jack após a inicialização do a2jmidi_bridge. Se não for colocado ele irá "travar" o qjackctl.bin. Se isto acontecer, não será mais possível chegar a tela de configuração do qjackctl.bin. Altere a configuração do qjackctl.bin diretamente editando o seu arquivo de configuração:

gedit .config/rncbc.org/QjackCtl.conf

Use o Ctrl+F para encontrar o a2j e coloque o & no fim do comando.
Adivinha como eu sei que ele trava o qjackctl.bin?

:-)

Fonte: