MIDI Indisponível no Linux

Ao trabalhar com MIDI usando a API do JavaSound é necessário ter um dispositivo MIDI compatível instalado no sistema operacional. Caso contrário, você terá o seguinte erro:

javax.sound.midi.MidiUnavailableException
	at javax.sound.midi.MidiSystem.getDefaultDeviceWrapper(MidiSystem.java:1078)
	at javax.sound.midi.MidiSystem.getReceiver(MidiSystem.java:240)
	at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:442)
	at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:348)
	at JavaSound.main(JavaSound.java:167)
Caused by: java.lang.IllegalArgumentException: Requested device not installed
	at javax.sound.midi.MidiSystem.getDefaultDevice(MidiSystem.java:1130)
	at javax.sound.midi.MidiSystem.getDefaultDeviceWrapper(MidiSystem.java:1076)
	... 4 more

Se sua placa de Som não tem suporte a MIDI, ou se o Linux não reconheceu, instale o Timidity, que é um sequenciador MIDI via software muito bom, utilizando o seguinte comando: sudo apt-get install timidity

Execute o comando: aplaymidi -l

A saída deverá ser algo do tipo:

 Port    Client name                      Port name
 14:0    Midi Through                     Midi Through Port-0
128:0    TiMidity                         TiMidity port 0
128:1    TiMidity                         TiMidity port 1
128:2    TiMidity                         TiMidity port 2
128:3    TiMidity                         TiMidity port 3

Caso não apareça nenhuma linha escrito TiMidity, reinicie o computador. O meu foi necessário, pois não sabia qual serviço iniciar. Após isso instale o alsa-oss: sudo apt-get install alsa-oss

Execute o seu aplicativo com a comando aoss. Por exemplo: aoss java -jar JavaSoundDemo.jar. Pronto! O erro some e o som aparece :).

 

Java Sound Demo
Java Sound Demo

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6