[JAVA] Metronom

Registriert
Aug. 2005
Beiträge
230
Hallo Leute!

Wir sind seit ca 2 Monaten dabei einen Metronom zu implementieren!
Leider funktioniert keine lineare Ausgabe eines Sounds! D.h.: Beats per minute (BPM), werden nicht im richtigen Zeitabstand abgespielt! Ich wollte euch bitten uns zu helfen!
Bis jetzt hatten wir die Funktion setTempoInBPM() verwendet. Der Ton wird zwar abgespielt aber nicht linear und auch nicht in der richten Zeit?!

Danke schon im voraus!

mfg mE
 
Der Methode nach gebt ihr den Ton mit MIDI aus. Wie ihr vorgeht, kommt dadurch aber nicht raus. ;)

Ich würde einfach einen Thread machen, der alle x Zeiteinheiten (per Thread.sleep() in einer "Endlosschleife") eine ShortMessage mit Zeitstempel -1 an den Midi-Out sendet (per Receiver.send()).

Hier ein exemplarischer Code (frei aus dem Kopf, nicht getestet und keine Exceptions berücksichtigt):
Code:
class Tick extends Thread
{
	private Receiver out;
	private long duration;
	private ShortMessage message;

	public Tick(Receiver out, int bpm)
	{
		this.midiOut = out;
		duration = (long)Math.round(1000 / bpm * 60);
		message.setMessage(ShortMessage.NOTE_ON, 69, 127); 
	}

	public void run()
	{
		while(!this.isInterrupted())
		{
			out.send(message, -1);
			sleep(duration);
		}
	}
}
 
Zurück
Oben