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

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.

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Jomar Silva
Engenheiro Eletrônico, pós graduado em Gerenciamento de Projetos e Desenvolvimento de Sistemas. Especialista em Padrões Abertos e Software Livre. Developer Evangelist de IoT e Open Source na divisão de Software da Intel no Brasil.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Weder Clay Oliveira Ferreira Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Weder Clay Oliveira Ferreira
Visitante
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!