Originalmente publicado no Instructables em inglês neste link e traduzido por Thiago Lima com autorização do autor Jomar Silva.
Um controlador MIDI é como um teclado de computador, mas em vez de enviar caracteres para o computador, ele envia notas musicais (e um monte de informações adicionais sobre como essa nota está sendo tocada). Você pode aprender mais sobre controladores MIDI neste link.
Geralmente, um controlador MIDI é muito barato quando comparamos seu preço com o de um sintetizador completo, mas os controladores MIDI requerem um PC (ou MAC) e uma grande quantidade de software adicional para funcionar. Só para fazer uma comparação, o MIDI Synth que é construído neste tutorial gera um timbre muito semelhante a um dos timbres gerados pela Roland Jupiter 8 Analog Synth, que está sendo vendido por um preço em torno de US$ 12.000. Clique neste link e confira.
Se você não tem os 12 mil dolares para investir agora para tocar o tema do Axel Foley, mas tem um controlador MIDI, uma placa de som USB e uma placa Intel Edison, você deve tentar seguir este tutorial (e sim, você também pode tocar algumas músicas do Krafwerk, Van Halen e um monte de outras músicas legais).
Usaremos Csound neste tutorial, e em poucas palavras você pode gerar o que quiser com ele. De Hammond Organs a Moog, sua criatividade e habilidades com Csound são tudo que você precisa para explorar esta linguagem de programação de áudio maravilhosa.
No final deste texto, coloquei um vídeo com a demonstração do sintetizador com a Placa Intel Edison.
Passo 1: Do que a gente precisa
Vamos usar uma Intel Edison com a placa Breakout Board Arduino.
Meu controlador MIDI é um Behringer UMA25S, e tem uma placa de áudio embutida. Você pode usar dois dispositivos separados para fazer o mesmo.
Nós também vamos precisar de uma fonte externa para alimentar a placa Intel Edison e no meu caso eu também vou precisar de um Hub USB ativo (um hub USB com alimentação externa), para alimentar o controlador MIDI. As especificações para a fonte de alimentação da Intel Edison Breakout Board podem ser encontradas neste link.
Eu também usei um alto falante externo (adoro música alta) e também fones de ouvido durante o processo.
Step 2: Configurando a placa Intel Edison e instalando os pacotes adicionais necessários
Se este é o seu primeiro contato com uma placa Intel Edison, por favor leia o Guia de Introdução a essa placa. Ele pode ser encontrado em inglês como Getting Started Guide.
Conecte a sua placa Intel Edison à sua máquina, seguindo os passos encontrados neste link.
Atualize o firmware de sua placa Intel Edison, baixe o software necessário a partir deste link.
Para continuar, certifique-se de que sua placa Edison está conectada à Internet. Para saber mais sobre a conexão da placa com a Internet, siga o “Passo 3: Get your board online“, deste documento. Para ligar a placa a uma conexão Wi-Fi existente, siga as instruções disponíveis nesta página.
Você também vai precisar que sua placa Edison esteja conectada a uma fonte de alimentação externa, e conectada ao seu computador por uma porta USB de debug (para isso utilize o conector USB inferior), ou deverá acessar a placa usando SSH, via rede.
No console Linux da placa, vamos precisar configurar um repositório de pacotes adicionais. Este repositório não é suportado pela Intel (então deverá usá-lo por sua conta e risco).
Para adicionar o repositório, edite o arquivo base-feeds.conf em /etc/opkg/ (por exemplo #vi /etc/opkg/base-feeds.conf). E insira as seguintes linhas:
src/gz all https://repo.opkg.net/edison/repo/all src/gz edison https://repo.opkg.net/edison/repo/edison src/gz core2-32 https://repo.opkg.net/edison/repo/core2-32
Depois disso, atualize sua lista de pacotes com o seguinte comando:
#opkg update
Agora vamos instalar todos os pacotes necessários para ter tudo instalado e funcionando, com o comando:
#opkg install alsa-server alsa-lib-dev alsa-dev alsa-utils-aconnect alsa-utils-speakertest alsa-utils-midi libsndfile-bin libsndfile-dev flex bison git
Step 3: Configurando o adaptador de áudio
Para conectar o controlador MIDI à porta USB host da placa de Edison (conector tipo A), eu usei um hub USB alimentado externamente, para fornecer energia suficiente para o controlador. Para usar esta porta USB na placa, você precisa mudar o a chavinha (SW1) para cima (para o conector USB Tipo A), como mostra na imagem acima. Normalmente, essa chave está na direção oposta, permitindo a alimentação da placa e o carregamento de Sketches Arduino.
Verifique se sua placa de som e controlador MIDI foram reconhecidos:
#cat /proc/asound/cards
0 [Loopback ]: Loopback - Loopback
Loopback 1
1 [UMA25S ]: USB-Audio - UMA25S
BEHRINGER UMA25S at usb-dwc3-host.2-1.4.1, full speed
2 [CODEC ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-dwc3-host.2-1.4.2, full speed
A ferramenta amidi irá exibir mais informações sobre o seu controlador MIDI.
#amidi -l Dir Device Name IO hw:1,0,0 UMA25S MIDI 1
Para verificar todos os seus dispositivos de áudio reconhecidos por alsa, digite:
#aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
sysdefault:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
default:CARD=CODEC
USB Audio CODEC, USB Audio
Default Audio Device
sysdefault:CARD=CODEC
USB Audio CODEC, USB Audio
Default Audio Device
Para definir o dispositivo alsa padrão para sua placa de som, verifique primeiro o número do cartão de HW:
# cat /proc/asound/cards
0 [Loopback ]: Loopback - Loopback
Loopback 1
1 [UMA25S ]: USB-Audio - UMA25S
BEHRINGER UMA25S at usb-dwc3-host.2-1.4.1, full speed
2 [CODEC ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-dwc3-host.2-1.4.2, full speed
No meu caso, o padrão é 2.
Crie um arquivo chamado .asoundrc em sua pasta pessoal (/home/root) com o seguinte conteúdo (substitua X com o seu ID de hardware):
pcm.!default {
type hw
card X
}
ctl.!default {
type hw
card X
}
Neste ponto, você vai precisar recarregar a configuração alsa para alterar o adaptador de áudio padrão. Para fazer isso você pode simplesmente fazer logoff e fazer login novamente ou executar o comando:
#alsactl kill rescan
Para ajustar o volume de saída, use o alsamixer.
#alsamixer
Se tudo estiver bem, alsamixer abrirá mostrando a barra de volume para sua placa de som. Para testar a saída de som, use a ferramenta de teste de alto-falante chamada speaker-test tool (você deve ouvir um som de onda senoidal na saída estéreo):
#speaker-test -tsine -c2
Para terminar o teste, pressione CTRL + C.
Passo 4: Faça o Download, Compile e Instale o CSound
As instruções para baixar, compilar e instalar csound podem ser encontradas neste link.
Siga a segunda lista de passos (1 a 10) a partir da seção “Building Csound 6“. Uma coisa importante é que no Passo 7, adicione o parametro -DALSA_HEADER=/usr/include ou o módulo alsa não vai compilar. Portanto, sua linha de comando cmake deve ser como:
<p>cmake -DALSA_HEADER=/usr/include ../csound</p>
Nas etapas 9 e 10, o comando sudo não é necessário (você já deve estar logado como root, certo?). Por padrão, libs serão copiadas para /usr/local/lib. Você pode acrescentar isso ao caminho ou simplesmente copiar as libs à pasta /usr/lib com o comando:
<p>cp -r /usr/local/lib/* /usr/lib</p>
Passso 5: Configure o Csound
Execute os samples GetDeviceList.csd disponíveis neste link, para obter o ID de hardware de sua placa de som Audion (que por acaso deve ser o mesmo ID que usamos antes, mas agora serão informados por Csound):
# csound GetDeviceList.csd
Você verá algumas linhas e, finalmente, algo como isto:
*** ALSA: must specify a device name, not a number (e.g. -odac:hw:0,0) "hw:0,0" - Loopback PCM : Loopback PCM : playback 8 : capture 8 "hw:0,1" - Loopback PCM : Loopback PCM : playback 8 : capture 8 "hw:2,0" - USB Audio : USB Audio : playback 1 : capture 1
Na minha placa, o ID de hardware é 2.
Faça o download do código do Sintetizador MIDI Csound disponível para sua placa no seguinte endereço:
#wget https://raw.githubusercontent.com/homembit/MIDI_Edison/master/midisynthesizer.csd
Edite a configuração (seção <CsOptions> no início do arquivo) para algo como:
<CsOptions> -odac:hw:X -b256 -B1024 -Ma -+rtaudio=alsa -+rtmidi=alsa </CsOptions>
A parte importante aqui é a -odac: hw: X, onde X é sua ID de hardware da placa de som (no meu caso, -odac: hw: 2).
Este Sintetizador foi escrito por Victor Lazzarini e publicado na lista de emails Csound. Victor me autorizou a redistribuir o código, e eu gostaria de agradecê-lo pelo código e também por ajudar outras pessoas em fóruns. Suas respostas e explicações sobre várias configuraçoes e programação foram fundamentais para me ajudar a colocar todas as peças juntas. Muito obrigado, Victor!
DICA: Salve a configuração anterior em algum arquivo em sua placa, porque você vai precisar dele para executar vários outros programas Csound que estão disponíveis na web.
Passo 6: Curta o seu sintetizador
Finalmente, para executar o seu programa Csound, simplesmente digite:
<p>#csound midisynthesizer.csd</p>
Aproveite o seu sintetizador!
Referências
Originalmente publicado no Instructables em inglês neste link e traduzido por Thiago Lima com autorização do autor Jomar Silva.






