Sound

Status
Nicht offen für weitere Antworten.

0xdeadbeef

Top Contributor
Habe kürzlich in mein aktuelles Projekt Sound eingebaut. Das tut auch soweit, aber manchmal wird ein Sample nicht wirklich abgespielt.
Hier erstmal der Code.

Code:
import java.net.URL;
import java.net.URLClassLoader;
import javax.sound.sampled.*;

public class Sound {
	
	public Sound() throws SoundException {
		canPlay = false;
		String fName="";
		soundBuffer = new byte[NUMBER][];
		
		try {
			URLClassLoader urlLoader = (URLClassLoader) this.getClass().getClassLoader();
			for (int i = 0; i<NUMBER; i++) {
				fName = "sound/sound_"+Integer.toString(i)+".wav";
				URL fileLoc = urlLoader.findResource(fName);
				if (fileLoc == null)
					throw new SoundException();
				AudioInputStream f = AudioSystem.getAudioInputStream(fileLoc); 
				format = f.getFormat();
				soundBuffer[i] = new byte[(int)f.getFrameLength()*format.getFrameSize()];
				f.read(soundBuffer[i]);
				f.close();
				
			}
		} catch (Exception ex) {
			throw new SoundException("Error loading sound file "+ fName);
		}
		info = new Line.Info(Clip.class);
	}
	
	public void play(int num) {
		int retryCount = 0;
		while (retryCount < 3) {
			try {
				Clip c = (Clip)AudioSystem.getLine(info);
				c.open(format,soundBuffer[num],0,soundBuffer[num].length);
				if (c.isRunning())
					c.stop();
				c.start();
				retryCount = 100;
			} catch (LineUnavailableException ex) {
				retryCount++;
			}
		}
	}
	
	byte soundBuffer[][];
	AudioFormat format;
	boolean canPlay;
	Line.Info info;
	final static int NUMBER = 24;

Also ich habe 24 Samples (sound_0.wav ... sound_23.wav) in WAV-Format, die ich im Constructor in Byte-Arrays einlese. Beim Abspielen hole ich mir einen Clip über Audiosystem. Die Sache mit dem Retrycount war ein hilfloser Versuch zur Behebung des Problems, ebenso wie die Behandlung "c.isRunning". In der Tat behebt keiner der beiden Workarounds das Problem, daß ab und zu gar nichts ausgegeben wird - außer vielleicht einem Knacksen. Eine halbe Sekunde später wird genau das gleiche Sample wieder ganz abgespielt.
Das tritt auf mehreren Rechnern gleichermaßen auf, ist aber nicht 100% reproduzierbar. Manchmal wird 'zigmal hintereinander kein Sound verschluckt, dann mehrfach jedes 2. oder 3. Mal.
Irgendwelche Ideen? Bringt es was, explizit über den Mixer zu gehen?
 

0xdeadbeef

Top Contributor
Danke erstmal für die Antwort zu so später Stunde...
Wenn ich Dich recht verstehe, müßte es bei meinem Beispiel reichen, den Mixer explizit auszuwählen (also "Java Sound Audio Engine"), oder? Ansonsten sehe ich jedenfalls keine massiven Unterschiede...
Hatte mir anfangs überlegt, die Wahl des Mixers dem Spieler zu überlassen. Werde diese Idee dann eventuell reaktivieren. Also alle Mixer, die den Anforderungen genügen in ein Sound-Menü aufnehmen und dann per JRadioButtonMenuItem oder so auswählen...
Jedenfalls danke erstmal...
 

EgonOlsen

Bekanntes Mitglied
0xdeadbeef hat gesagt.:
Wenn ich Dich recht verstehe, müßte es bei meinem Beispiel reichen, den Mixer explizit auszuwählen (also "Java Sound Audio Engine"), oder?
Sieht so aus. Ansonsten machst du ja nicht wesentlich anderes als ich.
 

0xdeadbeef

Top Contributor
Hm, kann jetzt zwischen 3 Mixern umschalten: "Primärer Soundtreiber", "Game Theatre XP" und "Java Sound Engine". Wobei die ersten beiden wohl identisch sind.
Wie auch immer. Mir scheint es so, daß die Wahl des Mixers auf meinem Rechner keine großen Unterschiede macht. In beiden Fällen wird der Sound manchmal nicht abgespielt...
:autsch:
 

0xdeadbeef

Top Contributor
Hm, mit der 1.5 05 scheint es - zumindest oberflächlich betrachtet - endlich zu funktionieren.
In den Release Notes der JRE/JDK sind auch zwei Sound-Themen aufgeführt, wobei zumindest eines genau mein Problem (Abspielen kurzer Sounds) beschreibt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
L Audio-volume /w input Sound.sampled Spiele- und Multimedia-Programmierung 1
D Java sound pulseaudio Spiele- und Multimedia-Programmierung 0
K Sound im loop abspielen, wenn boolscher wert true ist Spiele- und Multimedia-Programmierung 3
M Sound Problem Spiele- und Multimedia-Programmierung 3
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Sound und Musik Spiele- und Multimedia-Programmierung 4
C virtueller stereomix (java sound API) Spiele- und Multimedia-Programmierung 0
I Sound Dateien abspielen Spiele- und Multimedia-Programmierung 9
C Sound einfügen und abspielen Spiele- und Multimedia-Programmierung 6
G Sound-Sampling: Sinuston; kein Fehler, aber auch kein Ton :-( Spiele- und Multimedia-Programmierung 3
M Bilderwechsel in Video an Sound anpassen Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
F Kein Sound bei javazoom Spiele- und Multimedia-Programmierung 2
J Sound einbinden funktioniert nicht Spiele- und Multimedia-Programmierung 13
S Java Sound-API stagniert Spiele- und Multimedia-Programmierung 16
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
H Java Sound: WAVE Format17 einlesen. Spiele- und Multimedia-Programmierung 2
Kr0e Java Sound API - DataLine Spiele- und Multimedia-Programmierung 2
S testen ob Sound läuft Spiele- und Multimedia-Programmierung 3
J Windows Sound Aufnehmen Spiele- und Multimedia-Programmierung 10
C Alles hängt, wenn ein Sound abgespielt wird Spiele- und Multimedia-Programmierung 9
K javax.sound.sampled.Clip clone() Spiele- und Multimedia-Programmierung 2
C Java3D Sound spielt nur einen Sound ab. Spiele- und Multimedia-Programmierung 8
G Ortsabhängiger Sound Spiele- und Multimedia-Programmierung 5
T Sound schneller abspielen Spiele- und Multimedia-Programmierung 4
S Java Sound - Skipping in .mp3 Files und Bug (Bitte überprüfenl) Spiele- und Multimedia-Programmierung 14
G Beste Sound Api Spiele- und Multimedia-Programmierung 2
C Java Sound API Clip.Close() Problem Spiele- und Multimedia-Programmierung 1
Zettelkasten Spezialwiedergabe von Sound vorzeitig beenden Spiele- und Multimedia-Programmierung 3
A Sound Amplitude ermitteln bzw Sound auslöschen Spiele- und Multimedia-Programmierung 4
P Sound auf zwei Lautsprechern getrennt abspielen Spiele- und Multimedia-Programmierung 9
G javafx MediaPlayer sound problem Spiele- und Multimedia-Programmierung 2
Developer_X Sound Lautstärke ohne spezifische API regulieren Spiele- und Multimedia-Programmierung 3
M Java Sound API : Zuordnung Port-Mixer zu Input-Mixer Spiele- und Multimedia-Programmierung 9
P Java Sound OutOfMemoryError Spiele- und Multimedia-Programmierung 2
T Java Sound Probleme Spiele- und Multimedia-Programmierung 8
Pithecanthropus Sound geht nicht Spiele- und Multimedia-Programmierung 6
Dragonfire Java Sound API - Lautstärke ändert sich nicht Spiele- und Multimedia-Programmierung 2
N sound absoielen Spiele- und Multimedia-Programmierung 3
DEvent Java sound Bibliothek Spiele- und Multimedia-Programmierung 11
P Sound Datein mit JAVA zusammenstellen?! Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Point Sound Spiele- und Multimedia-Programmierung 71
B sound mit behavior geht nicht Spiele- und Multimedia-Programmierung 4
M Sound-Lösung für Java/JMF Spiele- und Multimedia-Programmierung 8
S sound zuverlässig wiedergeben Spiele- und Multimedia-Programmierung 15
G Sound Probleme Spiele- und Multimedia-Programmierung 2
D Sound und Bilddateien vorladen Spiele- und Multimedia-Programmierung 7
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben