Por que java midi synth no mac para de tocar notas
Estou tentando criar um aplicativo simples que leia de uma porta midi (hardware) e encaminhe eventos para o sintetizador de software. Geralmente funciona, exceto que o sintetizador suave para de tocar de tempos em tempos. Posso ver as mensagens midi sendo encaminhadas nos logs, posso rastrear na depuração e ver que o evento alcança o código nativo no receptor de sintetizador, mas por alguma razão, o sintetizador não toca a nota. Se você esperar, o som será reproduzido novamente, depois pare e reproduza novamente ...
Aqui é um aplicativo de demonstração que mostra o problema. Se você pressionar o botão Enter no console, ouvirá uma nota repetidamente. Depois de algum tempo (provavelmente menos de um minuto), o som será interrompido (se você mantiver o botão pressionado) e depois voltar
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Synthesizer;
public class TestMidi2 {
public static void main( String[] args ) throws Exception {
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
boolean on = true;
while ( in.readLine() != null ) {
if ( on ) {
synth.getChannels()[0].noteOn( 45, 127 );
} else {
synth.getChannels()[0].noteOff( 45 );
}
on = !on;
}
}
}
Estou no MacOS X lion se isso faz alguma diferença (o que acho que faz
Qualquer ideia? Gambiarra? Gostaria de tentar outro sintetizador de software, mas não consegui encontrar nenhum. Também estou disposto a experimentar o hardware midi synth, desde que eles possam tocar piano, flauta e guitarra básicos (não preciso de nada profissional, apenas um som decente
Obrigado