Resolvi instalar ontem programas de karaokê. Eu já tinha alguns arquivos antigos, e resolvi procurar um player legal para Linux, além de músicas mais novas. O resultado não foi exatamente o que eu queria, mas mesmo assim, tive algumas boas surpresas.
Tenho hoje dois PCs em casa: um rodando Linux (Ubuntu Hoary, com backports) e outro mais antigo com Windows 98. Tenho também um teclado Roland E-38 que pode ser usado para tocar arquivos MIDI ou karaokê (usando o padrão GM). O teclado tem entrada MIDI, e o PC antigo ainda tem uma 'game port' para joystick analógico, que aceita um cabo MIDI especial. A vantagem é que não consome CPU nenhuma (o processamento do som é feito no teclado), e a qualidade é muito boa.
O Timidity++ é um player MIDI para Linux. É um soft synth, ou seja, ele gera os sons no PC. Para isso ele precisa de um banco de sons de instrumentos. O Timidity aceita sons no formato GUS e em um formato mais novo, chamado SoundFont. O Ubuntu tem um banco de sons em formato GUS (o pacote freepats). Instalei ambos e testei o sistema com alguns arquivos MIDI e também com arquivos de karaokê (extensão .kar). Tive dois problemas:
- A síntese MIDI é boa, e os sons do freepats são bons, mas infelizmente o pacote é incompleto, pois não suporta todos instrumentos do padrão GM. Depois de testar algumas músicas com instrumentos faltando, vi que precisava encontrar alguma forma de completar o conjunto.
- Nos arquivos de karaokê, o Timidity tem um problema de sincronização; o som aparece bem depois da letra que passa na tela. Acho que é efeito colateral do softsynth, que opera com um atraso significativo. Pensei em procurar um ajuste de timing no Timidity, mas ainda não tentei resolver o problema.
O problema (2) ficou para depois, mas o problema (1) tinha que ser resolvido. Pesquisei o assunto para saber mais sobre como instalar novos sons para o Timidity. Não há documentação (pra variar...) mas felizmente, o processo é simples de entender.
Existem muitos sites com fontes de instrumentos na Internet. Há dois problemas: alguns são muito ruins, e também é necessário ajustar tudo para funcionar dentro do padrão GM. Sem o padrão GM, fica praticamente impossível trocar arquivos MIDI na Internet... especialmente arquivos de karaokê. Não basta baixar um ou outro instrumento; os instrumentos precisam estar afinados entre si, e precisam estar com o volume bem nivelado também. Assim, a primeira parte do problema é decidir qual o melhor conjunto de instrumentos.
Li várias páginas sobre o assunto. Não foi fácil achar um pacote completo para download, pois há dezenas de referências, muitas para sites inexistentes. O site
HammerSound contém muitos arquivos de SoundFont. Lendo em discussões online, vi muitas referências a trabalho do
Milton Paredes (AIR versões 320 e 340); o site original estava fora do ar, mas nas
próprias discussões alguns
mirrors para o AIR 340 foram citados. Também vi
outra discussão citando a Big Merlin (disponível no site da
Allegro e também no
Personal Copy) e a
GeneralUser GS.
È fácil ficar perdido com tanta opção, por isso decidi simplificar, e instalei a AIR 340. É um arquivo grande, que vem duplamente comprimido -- dentro de um arquivo ZIP, o arquivo da fonte (extensão
.sf2) vem comprimido com um programa chamado
sfArk (há um
descompressor sfArk para Linux). Segui os passos:
- Coloquei o arquivo SF2 (descomprimido com o sfArk) em um diretório novo (/usr/share/midi/soundfont). Obs: renomeei o arquivo para airfont340.sf2, para retirar os espaços do nome e evitar problemas.
- Coloquei uma linha adicional no fim do arquivo de configuração do Timidity (em /etc/timidity/timidity.cfg), para referenciar o SoundFont, contendo:
# soundfont tem preferencia sobre patches normais
soundfont /usr/share/midi/soundfont/airfont340.sf2 order=0
Note que o arquivo de SoundFont é interessante porque inclui toda informação necessária (mapeamento de instrumentos, etc) o que simplifica a configuração comparado com arquivos GUS. No caso do GUS cada instrumento vem em um arquivo, e é necessário editar manualmente o arquivo de configuração para ajustar as alocações de som para cada instrumento MIDI. Trabalhoso mais flexível.
Feito isso, teste novamente os arquivos MIDI. Os instrumentos parecem todos corretamente registrados agora, e os sons são de boa qualidade.
Agora, ficam faltando mais arquivos MIDI ou Karaokê; isto fica para o próximo artigo.
Referências adicionais:
- EAWPlus GUS patch set. É um patch set mais antigo, de 2000. Não testei, mas imagino que seja uma versão mais antiga do que a que está no freepats. Há referências antigas de que este patch é de boa qualidade.
- Discussão sobre patches para o Timidity. Cita GUS, ChaosBank (outro conjunto de fontes), Midia set, etc. Interessante para entender a situação.
- Timidity, GM, Softsynths. Mais discussão, alguns links úteis, e referências sobre softsynths no ambiente Windows.
- ShomInst - Roland GS para Timidity. Baseado no GUS (não é SoundFont) mas com a promessa de suporte ao Roland GS, que é uma extensão do GM. Não teste ainda.
- Tune Smith Central - AIR 340. Mais um mirror do AIR 340, que ainda contém outros arquivos e comentários.
- TiMidity++ Configuration File Package. Exemplos de configuração do Timidity com diversos tipos de soundfont diferente. Inclui links. Achei esta página tarde -- ela podia ter poupado um bocado de trabalho.