Projeto de um sintetizador (Synth) de MIDI Programável com a placa Intel Edison e Csound

Intel Edison e Csound
Este post faz parte da série Sintetizador MIDI

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.

sintetizador Intel Edison e Csound
Figura 1 – Projeto de um sintetizador (Synth) de MIDI Programável contruído com a placa Intel Edison e Csound

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

sintetizador Intel Edison e Csound: adaptador de áudio
Figura 2 – 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

Intel Developer Zone – IoT

Alsa Project

Csound Project

Csound Community

Csound Repository

Csound Documentation

Originalmente publicado no Instructables em inglês neste link e traduzido por Thiago Lima com autorização do autor Jomar Silva.

Sintetizador MIDI

Projeto de um Sintetizador MIDI SoundFont com a placa Intel Edison e Fluidsynth
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Sistemas Operacionais » Projeto de um sintetizador (Synth) de MIDI Programável com a placa Intel Edison e Csound

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: