MidiUnavailableException

M

MidiUnavailable

Gast
Hi,
folgender Code funktioniert bei mir nicht:

Java:
import javax.sound.midi.*;

public class SoundEngine
{
	public SoundEngine()
	{
		
	}
	
	public void playTest()
	{
		final int DATA[][] = 
		{
				{50, 1, 1}, // C
				{50, 3, 3},
		};
		
		Synthesizer Synth = MidiSystem.getSynthesizer();
		Synth.open();
		Receiver Recv = Synth.getReceiver();
		ShortMessage msg = new ShortMessage();
		for (int i = 0; i< DATA.length; i++)
		{
			for (int j = 0; j < DATA[i][2]; j++)
			{
				msg.setMessage(ShortMessage.NOTE_ON, 0, DATA[i][0], 64);
				Recv.send(msg, -1);
				Thread.sleep(DATA[i][1] * 400);
				
				msg.setMessage(ShortMessage.NOTE_OFF, 0, DATA[i][0], 0);
				Recv.send(msg, -1);
			}
		}
		
		Synth.close();
		
	}
}


"Synthesizer Synth = ..." wirft "Unhandled exception type MidiUnavailableException" aus.

An der PC Hardware sollte es eigentlich nicht liegen, Midis werden ohne Probleme abgespielt.

Hat jemand ne Ahnung woran das liegen könnte?

Danke im Voraus :D
 

eRaaaa

Top Contributor
?? Das kann doch unmöglich dein kompletter Code sein, ein kurzes Beispiel kann es auch unmöglich sein, wo ist die Fehlerbehandlung(ist das evtl. schon der Fehler :D ? ), wo rufst du playTest() auf etc.?

Java:
import javax.sound.midi.*;

public class SoundEngine {

	public SoundEngine() {
		try {
			playTest();
		} catch (MidiUnavailableException e) {
			e.printStackTrace();
		} catch (InvalidMidiDataException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new SoundEngine();
	}

	public void playTest() throws MidiUnavailableException,
			InvalidMidiDataException, InterruptedException {
		final int DATA[][] = { { 50, 1, 1 }, // C
				{ 50, 3, 3 }, };

		Synthesizer Synth = MidiSystem.getSynthesizer();
		Synth.open();
		Receiver Recv = Synth.getReceiver();
		ShortMessage msg = new ShortMessage();
		for (int i = 0; i < DATA.length; i++) {
			for (int j = 0; j < DATA[i][2]; j++) {
				msg.setMessage(ShortMessage.NOTE_ON, 0, DATA[i][0], 64);
				Recv.send(msg, -1);
				Thread.sleep(DATA[i][1] * 400);
				msg.setMessage(ShortMessage.NOTE_OFF, 0, DATA[i][0], 0);
				Recv.send(msg, -1);
			}
		}
		Synth.close();
	}
}

wäre schon eher ein Testprogramm...bei mir läuft dieses auch. Wie sieht`s bei dir aus? Ansonsten nenne doch mal die komplette Fehlermeldung...
 
M

MidiUnavailable

Gast
Hi,
nein, das ist nur die Klasse, die playTest bereitstellt, in "Main" wirds aufgerufen


Habs jetzt nochmal probiert und auf einmal geht es xD Danke trotzdem
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I MidiUnavailableException Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben