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:
#tar zxvf fluidsynth-1.1.6.tar.gz
Entre na pasta onde estão os códigos-fonte:
#cd fluidsynth-1.1.6
Configure:
#./configure
Compile:
#make
Verifique os binários compilados:
#make check
Instale os binários:
#make install
Limpe a bagunça 🙂 :
#make clean
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:
#fluidsynth -a alsa -g 3 FluidR3_GM.sf2 YourMidiSongFile.midi
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:
#fluidsynth -a alsa -g 3 FluidR3_GM.sf2
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:
#aconnect -o
A saída será algo desse tipo:
client 20: 'UMA25S' [type=kernel]
0 'UMA25S MIDI 1 '
client 128: 'FLUID Synth (348)' [type=user]
0 'Synth input port (348:0)'
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:
#aconnect 20:0 128:0
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:
#fg
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.










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!