Kontinuierlich laufende Hintergrundmusik in Java

GyRa

Grünschnabel
Hallo liebe User,

bin gerade dabei, ein Spiel zu programmieren und hätte da eine Frage zum Sound.

Mit diesem Quellcode habe ich es geschafft, beim Klicken auf ein Objekt, einen Sound abzuspielen.

Code:
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream("example.wav"));
        AudioFormat af = audioInputStream.getFormat();
        int size = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
        byte[] audio = new byte[size];
        DataLine.Info info = new DataLine.Info(Clip.class, af, size);
            audioInputStream.read(audio, 0, size);
            Clip clip = (Clip) AudioSystem.getLine(info);
            clip.open(af, audio, 0, size);
            clip.start();

Nun möchte ich, dass ein Sound (z.B eine tickende Uhr) vom Start bis zum Beenden des Programmes läuft. Wird also das Programm gestartet läuft im Hintergrund die tickende Uhr und die läuft solange bis das Programm beendet wird.

Mit freundlichen Grüßen
 
Hallo,

schau mal hier:
Java:
package de.tutorials;

import static javax.sound.sampled.AudioSystem.getAudioInputStream;
import static javax.sound.sampled.AudioSystem.getClip;

import java.io.File;
import java.util.concurrent.TimeUnit;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.Clip;

public class SoundLoopExample {
  public static void main(String[] args) throws Exception {
    File audioFile = new File("c:/Windows/Media/tada.wav");

    // Läuft bereits in einem eigenen Thread
    play(audioFile);

    TimeUnit.SECONDS.sleep(10);
  }


  private static void play(File audioFile) throws Exception {
    AudioInputStream audioInputStream = getAudioInputStream(audioFile);
    Clip clip = getClip();
    clip.open(audioInputStream);
    clip.loop(Clip.LOOP_CONTINUOUSLY);
    clip.start();
  }
}

Gruß Tom
 
Vor dem Starten einfach die loop-Methode mit der Konstante aufrufen:

Java:
clip.loop(Clip.LOOP_CONTINUOUSLY);

Aber ich empfehle Dir auch folgendes Tutorial über die Sound-API:

http://fivedots.coe.psu.ac.th/~ad/jg/ch05/index.html

Eines der ersten Beispiele ist ein einfacher Media-Player welcher ebenfalls in einer Endlosschleife eine Sound-Datei abspielt.
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Erstmal vielen Dank für die Antworten. Hab jetzt den Code von Thomas eingebunden klappt soweit auch, nur das ich einen einzigen Sound abspielen kann, der knapp 18 KB groß ist. Sobald ich die tickende Uhr abspielen will (2.5 MB) gibt Eclipse Fehlermeldungen.

Code:
	at java.io.FileInputStream.<init>(Unknown Source)
	at com.sun.media.sound.WaveFileReader.getAudioInputStream(Unknown Source)
	at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
	at escape.play(escape.java:557)
	at escape.main(escape.java:584)

Mit freundlichen Grüßen
 
Zurück