MIDI no Linux

Seja para comunicar periféricos ou ainda para sonorizar games, saiba o que é MIDI e como combiná-lo ao WINE para ter áudio em games antigos!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

A princípio, a tecnologia MIDI – acrônimo do inglês Musical Instrument Digital Interface – Interface Digital de Instrumentos Musicais – é um padrão de interconexão física e lógica, criado em 1982 por um consórcio de fabricantes de sintetizadores japoneses e americanos, que facilita a comunicação em tempo real entre instrumentos musicais eletrônicos, computadores e dispositivos relacionados.

Em suma, o MIDI se popularizou como base de sintetizadores, permitindo que um instrumento, no caso o próprio teclado sintetizador ou ainda um computador convencional se transforme em diversos instrumentos musicais graças a plugins VTS.

Roland - JUNO-60 | Sintetizador em SoftwareJuno 60, um dos sintetizadores mais populares da década de 80, responsável por ser a base de composição de músicas da época.

1.2 O que o MIDI não é…

Pra aprofundarmos aqui, preciso deixar uma informação explicitada: MIDI não é canal de áudio como o pulseaudio ou o ALSA!

O papel do MIDI é ser um servidor de áudio que comunica dados de áudio: Pitches, Velocidade, Aftertouch, Tempo (ou BPM), Panning, Modulações e Volume. Ou seja, para isso ele precisa de uma biblioteca de samples, trechos de áudio – geralmente cada nota musical isolada de um instrumento – para que, após composto, ele execute, chame essa biblioteca e reproduza-a.

Em termos mais leigos… o MIDI é uma receita de bolo e, ao executar, ele compõe a música “em tempo real”. A música de fato não existe, o que você tem são as instruções para que as notas toquem juntas!

Com isto em mente, podemos continuar.

2. Games

O MIDI foi popular em games porque permitia que a produtora adicionasse os samples ao jogo, de poucos Kb, e toda a trilha sonora e efeitos de som executam sob essas mesmas notas. As diversas instruções MIDI – de poucos Kb por serem texto apenas – fazem a mágica, compondo e executando a música completa. – Muito semelhante á forma como os games do Super Nintendo reproduziam suas trilhas de áudio.

Pode soar estranho mas isso foi uma solução eficiente para que os games fossem sonorizados, com baixo consumo de RAM e armazenamento. E por ser codificado, o MIDI permitia associar ações: O personagem pula? Som do pulo toca. O personagem atacou? Som de ataque. Havia esse vínculo de forma mais direta. Além disso, por conduzir tantas opções de volume, distorções de som e até ajustes de grave/agudo, um mesmo sample poderia reproduzir uma infinidade de diferentes sons sem soar repetitivo.

Hoje em dia a tecnologia evoluiu mas a base é semelhante, os games possuem trilhas de áudio completas em .mp3 e nos momentos pertinentes os gatilhos de ações executam as trilhas em .WAV ou ainda .mp3 mesmo.

3. WINE

O que vou explicar aqui vale para o WINE bruto, o Lutris e até o PlayOnLinux!

Bom, o tempo passou e eu sofri calado e os games antigos se tornaram relíquias aos saudosistas. Alguns exemplos? GZDoom, Chip’s Challenge e Age of Empires, sem esquecer claro, do saudoso 3D Pinball Space Cadet!

3D Pinball Space Cadet - High Score - YouTube

Se você baixar o arquivo .exe desse jogo e executá-lo no WINE, ele vai rodar. Porém sem som.

Por que?

Por poderoso que o WINE esteja atualmente, ele não tem poder para reprodução de trilhas de áudio MIDI. Então você corre 2 riscos:

  • O jogo ficará sem som.
  • Se você instalar um servidor MIDI em seu sistema, ele provavelmente virá com as bibliotecas MIDI opensource, que são ligeiramente diferentes daquelas da Microsoft. Na reprodução, o som ficará estranhamente diferente!

A partir disso, vamos resolver as 2 questões:

  • Sonorizar o game com um servidor MIDI.
  • Reproduzir o som correto com a biblioteca original.

Comecemos, do começo!

4. Instalação

Minha recomendação hoje é do aplicativo fluidsynth, um sintetizador MIDI em tempo real que utiliza os padrões SoundFont® 2.

A instalação se faz com o seguinte comando para sistemas baseados em Debian/Ubuntu/LinuxMint:

$ sudo apt install fluidsynth

Se for ArchLinux:

$ sudo pacman -S fluidsynth

Para que o game fique sonorizado, primeiro você executa o fluidsynth em um terminal, e depois abre o game. O fluidsynth vai detectar o cliente MIDI do game, captá-lo, traduzi-lo e reproduzi-lo no canal de áudio de seu sistema.

Porém, há o segundo problema: Sem as bibliotecas MIDI o som também vai ficar mudo, ou se você possuir as bibliotecas opensource, o som ficará diferente de como você se lembra.

A maioria dos games da época que utilizavam MIDI requeriam a biblioteca original do Windows. Essa biblioteca pode ser baixada clicando aqui, possuindo não mais que 4 Mb. O nome é gm.sf2.

5. Configuração

Belezura, fluidsynth instalado, faça o seguinte, pegue o arquivo “gm.sf2” e guarde-o com carinho em alguma pasta de seu sistema. Pode ser dentro da pasta do game que exige ela. Agora, vamos iniciar o fluidsynth com essa biblioteca, abra o terminal:

$ fluidsynth -a pulseaudio /caminho/para/o/gm.sf2

Pronto, o fluidsynth vai iniciar e ficar rodando. Com esse terminal aberto e com o Fluidsynth executando, abra o jogo!

Se tudo deu certo, o jogo vai sonorizar e com a trilha original de como você se lembrava.

5.1 Ajustes

Você vai me perguntar:

Como eu executo esse fluidsynth automaticamente junto ao game para facilitar as coisas?

Crie um simples script .sh e adicione estas linhas a ele:

#!/bin/bash
fluidsynth -s -a pulseaudio /caminho/para/o/gm.sf2 &

Salve, marque-o como executável.
Se você utiliza o Lutris, pode usar esta linha diretamente como parâmetro/comando a ser pré-executado antes do jogo abrir:

fluidsynth -s -a pulseaudio /caminho/para/o/gm.sf2 &

Explicando:
O parâmetro -s transforma o fluidsynth em um “servidor”, já que normalmente ele vai pedir que o usuário interaja com o shell – Experimente executá-lo sem o parâmetro para ver – e com o & ao final, ele vai ser executado em segundo plano.

6. Conclusão

Não é nem de longe uma das coisas mais complicadas que já expliquei aqui no site, mas de fato o linux normalmente carece de metodologias mais amigáveis quando o assunto é comunicação e configuração de sistemas MIDIs. E aqui, fizemos o básico que é disponibiliza-lo para sonorizar games antigos no WINE.

Fique á vontade para explorar as opções extras do aplicativo, lendo seu manpage. Ele também virá com uma interface de usuário que também é útil para alguns ajustes. – Que eu não faço muita ideia de como utilizar, deixo essa pra galera que trabalha com música diretamente.

Fontes:
landr
reddit

Deixe um comentário