Projeto de um Sintetizador MIDI SoundFont com a placa Intel Edison e Fluidsynth

Sintetizador MIDI SoundFont

Neste post irei mostrar como construir o seu próprio Sintetizador de MIDI SoundFont utilizando uma placa Intel Edison e Fluidsynth.

 

Seguindo os passos que vou mostrar a seguir você terá um sintetizador que pode tocar quase todas SoundFonts disponíveis na Internet. Então este provavelmente será o seu último e definitivo sintetizador que você precisará pro resto de sua vida. 🙂

  

Este é o segundo texto de um projeto maior que começou no projeto anterior publicado aqui no Embarcados, e originalmente publicado em inglês no Instructables neste link.

 

No final desse texto há um vídeo gravado por mim com uma demonostração do sintetizador SoundFont.

 

 

Passo 1: Do que a gente precisa

 

Nós usaremos para o projeto do Sintetizador uma placa Intel Edison com uma placa chamada Arduino Breakout Board.

 

Meu Controlador MIDI é um Behringer UMA25S, e tem um hardware de áudio embarcado. Você pode usar dois dispositivos separados para fazer o mesmo. Nós também vamos precisar de uma fonte de alimentação para a placa Intel Edison e no meu caso eu precisei também de um Hub USB ativo (um hub USB alimentado externamente), para alimentar o controlador MIDI. As especificações para a fonte de alimentação da Breakout Board do Intel Edison podem ser encontradas aqui neste link.

 

Eu também usei um alto falante externo (eu amo uma música bem alta) e fones de ouvido durante todo o processo.

 

 

Passo 2: Preparando a placa Intel Edison, instalando pacotes de software adicionais e configurando o áudio

 

Eu realmente recomendo que você siga todos os passos do meu último projeto que pode ser acessado neste link, porque no final você vai ter a sua placa Intel Edison com áudio já configurado e com Csound já compilado e em execução (veja o vídeo no final do tutorial para ver o sonzão que podemos ter de Csound).

 

Se você não quiser ter Csound instalado em sua placa, você só precisa seguir os passos de 1 a 3.

 

 

Passo 3: Faça o Download, Compile e Instale o Fluidsynth

 

De acordo com a descrição do Website do projeto Fluidsynth:

FluidSynth é um sintetizador de software de tempo real baseado nas especificações SoundFont 2 e se popularizou se tornando uma distribuição muito conhecida. O próprio FluidSynth não tem uma GUI, interface gráfica para o usuário, mas devido à sua API poderosa várias aplicações o utilizam. Cada vez mais aplicações com sistemas embarcados o escolhem como sintetizador, além de também ser encontrado em vários aplicativos móveis.

 

A primeira coisa que precisamos fazer é baixar o código-fonte da FluidSynth neste link (versão 1.1.6).

 

Transfira o arquivo que baixou para a sua placa Intel Edison (eu costumo usar o sftp para transferir meus arquivos para a placa, usando um software como o Filezilla e as mesmas credenciais também uso para fazer login em minha placa).

 

Agora precisamos extrair o código-fonte, configurar, compilar, verificar, instalar e depois por fim remover todos os arquivos. Isso pode ser feito facilmente com os seguintes comandos (no console da placa Intel Edison).

 

Extraia o código fonte:

 

 

Entre na pasta onde estão os códigos-fonte:

 

 

Configure:

 

 

Compile:

 

 

Verifique os binários compilados:

 

 

Instale os binários:

 

 

Limpe a bagunça 🙂 :

 

 

 

Passo 4: Faça o Download de um SoundFont, uma música em formato MIDI e teste a instalação de seu FluidSynth

 

Para testar a minha instalação do FluidSynth, eu usei o arquivo SoundFont chamado FluidR3_GM.sf2, que é distribuído com FluidSynth na maioria das distribuições Linux, geralmente no pacote fluid-soundfont-gm. Se você não tem um Linux para pegar os arquivos SoundFont, o Google é seu melhor amigo.

 
NOTA: Existem vários arquivos SoundFont disponíveis na Internet, mas alguns desses arquivos não são de graça (como cerveja 🙂 ). Sempre verifique com atenção isso antes de usar um SoundFont.

 
Você também vai precisar de um MIDI para testar sua instalação. Mais uma vez, o Google é seu amigo, então faça uma pesquisa no Google por "MIDI" ou "MIDI Song" e escolha a que você mais gosta.

 
Para executar o FluidSynth usando o SoundFont que eu mencionei para tocar sua música MIDI, execute:

 

 

Se tudo estiver OK, você deverá ouvir a sua música sendo tocada usando o SoundFont.

 

 

Passo 5: Rode o Fluidsynth  e o conecte com seu controlador MIDI

 

A etapa final dos passos a se seguir para construir o sintetizador consiste em executar o FluidSynth conectado com o seu controlador MIDI.

 

A primeira coisa que precisamos é ter FluidSynth rodando com o SoundFont desejado. Para iniciar o FluidSynth, execute o mesmo comando que utilizamos na etapa anterior, removendo do nome do arquivo o seu final .midi. Note que o parâmetro -g 3 é utilizado para definir o ganho do SoundFont, por isso, se o volume estiver muito alto ou muito baixo, o ajuste nesse local. O comando que deverá utilizar será algo como:

 

 

Agora vem a parte difícil.

 

Agora você provavelmente tem o FluidSynth na sua frente, e se você sair, você fecha o software. A ideia aqui é enviar FluidSynth no background, configurar as conexões MIDI e executá-lo em primeiro plano novamente. Você pode imaginar que se minimizarmos a janela FluidSynth, abra uma janela para configurar as conexões de áudio, e maximize a janela do FluidSynth novamente.

 

Para enviar o FluidSynth para operar em segundo plano, no background, basta pressionar Ctrl + Z. Você deverá ver seu prompt Linux de volta em sua tela (mas o software ainda estará executando em segundo plano).
 

Para conectar o FluidSynth ao seu controlador MIDI, execute o utilitário alsa aconnect. Primeiro vamos listar todas as portas MIDI e mais tarde conectar o sua saída do teclado de MIDI como entrada FluidSynth. Para listar todas as portas MIDI disponíveis, execute o seguinte comando:

 

 

A saída será algo desse tipo:

 

 

Por favor, anote os dois números de cliente (neste caso 20 e 128), e também os números de porta (número 0 para a minha saída do controlador e também 0 para a entrada FluidSynth).

 

Agora vamos conectar ambos, usando o comando:

 

 

Você deve estar de volta no prompt do Linux novamente. Então agora é hora de trazer o FluidSynth shell de volta para o primeiro plano com o seguinte comando:

 

 

Verifique o seu teclado, e se tudo correu bem, divirta-se!

 

O FluidSynth shell pode ser usado para definir várias coisas no software, a partir do SoundFont, pode ser utilizado até para se obter efeitos como reverb e chorus. Para isso, verifique a documentação do software para aprender a fazer tudo o que precisa, e que gostaria de fazer.

 

Eu realmente acho que a maneira mais fácil de mudar SoundFonts é interromependo e saindo do FluidSynth (basta digitar quit e pressionar a tecla Enter no shell deste software) e execute novamente a linha de comando usando outro arquivo SoundFont. Depois disso você precisará reconectar o software com o controlador MIDI, como fizemos nos passos acima. Então, em poucas palavras, feche o software e repita tudo para esta etapa usando outro nome de arquivo SoundFont. 🙂

 

Se algo der errado ou se sua placa de áudio parar de responder, basta reiniciar a placa Intel Edison usando o comando reboot.

 

 

Passo 6: Divirta-se com seu sintetizador SoundFont!

 

Olha só a demonstração do vídeo abaixo.

 

 

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

  • Weder Clay Oliveira Ferreira

    Muito bom, parabéns! Tem alguns projetos similares, utilizando o Raspberry Pi, que é mais barato que o Edison. Você teria alguma dica em português?
    Você acha que o Edison tem vantagens em relação ao Raspberry Pi, neste caso?
    Obrigado!