# Java Sound unverzögert abspielen



## safexy (27. August 2007)

Hallo Leute,

Ich habe eine Anwendung geschrieben (Java), dies beinhaltet eine Animation und im richtigen Moment muss eine bestimmte Taste gedrückt werden. War diese korrekt und zum richtigen Zeitpunkt, wird ein Ton abgespielt (wav). Die Animation und das Abspielen des Sounds laufen jeweils in einem eigenen Thread. Der Ton wird jedoch oft aber nicht immer, zeitverzögert (mehrere Sekunden später) erst abgespielt.

Hat jemand so etwas ähnliches schon einmal geschrieben, wo eine Sound "synchron" abgespielt werden muss?

Wie habt ihr es umgesetzt, könnt ihr Tips bzw. Beispiele zur Umsetzung geben. (In Java-Spielen mit Sound-Effekten braucht man dieses ja auch..)

Vielen Dank.

Florian


----------



## kieste (27. August 2007)

Hallo Florian,
ich habe keine konkrete Lösung für dein beschriebenes Problem, aber eine Antwort auf deine Frage nach Tipps zur Sound Programmierung unter Java. Ich benutze das FMJ Framework und Quicktime for Java mit Erfolg. Das Abspielen von Sounds und Video ist sehr performant, der Quelltext denkbar easy und die API mächtig.

Open Source Projekt fmj:
http://fmj.sourceforge.net/

Folgendes Buch war für mich hilfreich, wenn auch schon etwas veraltet:
"QuickTime for Java: A Developer's Notebook (Developers Notebook)" von  Anthony Rogers

Beste Grüße

Viel Erfolg

-s.


----------



## safexy (27. August 2007)

@kieste

danke für den Tip, werde ich mir wohl mal anschauen

@all

inzwischen habe ich wohl eine brauchbare Lösung "erschaffen"

Hier eine kurze Beschreibung der vorrübergehenden Implementierung:

Nur 1 Sound-Thread, den mit maximaler Priorität.
Mehrere Clip-Objekte die im Kreis immer wieder verwendet werden (bei mir sinds derzeit 3, wird aber noch mehr, da noch ein paar mehr Soundeffekte eingebaut werden). Wenn das aktuelle Clip-Objekt benutzt wird, schließe das Clip-Objekt, welches als nächsten verwendet werden soll, sofern es != null.

Den Sound-Thread lass ich dann 10 Millisekunden schlafen, wenn kein weiterer Sound in der Queue ist, der abgespielt werden soll.

Aber für weitere Ideen oder Tipps bin ich weiterhin dankbar.

Wenn mein Teil fertig ist, werde ich einen Link hier reinsetzen, wo ihr den Quellcode finden könnt.

safexy


----------

