Comment the SoundSystem.

This commit is contained in:
Jan Philipp Timme 2014-11-06 22:58:07 +01:00
parent 3d80faddef
commit a12ef61f7b

View File

@ -18,12 +18,33 @@ import javax.sound.sampled.UnsupportedAudioFileException;
import de.teamteamteam.spacescooter.utility.Loader; import de.teamteamteam.spacescooter.utility.Loader;
/**
* Provides a static interface for convenient playing of sounds.
*/
public class SoundSystem { public class SoundSystem {
/**
* Internal Mixer instance.
* Provides Controls of all sorts for the audio device.
*/
private static Mixer mixer = null; private static Mixer mixer = null;
/**
* Internal Line instance.
* Represents an audio channel of our audio device.
*/
private static Line line = null; private static Line line = null;
/**
* Internal CompoundControl containing things like
* volume control and more for our line.
*/
private static CompoundControl volCtrl = null; private static CompoundControl volCtrl = null;
/**
* Internal SourceDataLine - used to pump out audio data which will
* be played then.
*/
private static SourceDataLine sourceDataLine = null; private static SourceDataLine sourceDataLine = null;
@ -38,6 +59,7 @@ public class SoundSystem {
*/ */
public static Mixer.Info[] getAvailableDevices() { public static Mixer.Info[] getAvailableDevices() {
Mixer.Info[] devices = AudioSystem.getMixerInfo(); Mixer.Info[] devices = AudioSystem.getMixerInfo();
//Print information about available sound devices.
System.out.println("[Available Devices]"); System.out.println("[Available Devices]");
for(int i=0; i < devices.length; i++) { for(int i=0; i < devices.length; i++) {
System.out.println("["+i+"] " + devices[i]); System.out.println("["+i+"] " + devices[i]);
@ -80,6 +102,7 @@ public class SoundSystem {
/** /**
* Create a SourceDataLine and play the BufferedInputStream into it. * Create a SourceDataLine and play the BufferedInputStream into it.
* Uses the internal audioPlayerRunnable since this operation is blocking.
*/ */
public static void playFromAudioInputStream(URL soundURL) { public static void playFromAudioInputStream(URL soundURL) {
final URL fSoundURL = soundURL; final URL fSoundURL = soundURL;
@ -109,6 +132,10 @@ public class SoundSystem {
soundThread.start(); soundThread.start();
} }
/**
* This method allows to set the output volume using a float parameter.
* TODO: This is not finished yet.
*/
public static void setVolume(float volume) { public static void setVolume(float volume) {
Control[] c = SoundSystem.line.getControls(); Control[] c = SoundSystem.line.getControls();
SoundSystem.volCtrl = (CompoundControl) SoundSystem.line.getControl(c[0].getType()); SoundSystem.volCtrl = (CompoundControl) SoundSystem.line.getControl(c[0].getType());
@ -126,12 +153,17 @@ public class SoundSystem {
bc.setValue(false); bc.setValue(false);
} }
/**
* Play a sound by passing a relative path to this method.
*/
public static void playSound(String filename) { public static void playSound(String filename) {
SoundSystem.playFromAudioInputStream(Loader.getSoundURLByFilename(filename)); SoundSystem.playFromAudioInputStream(Loader.getSoundURLByFilename(filename));
} }
/**
* Open a given sound URL and return an AudioInputStream.
* Can be used externally to make sure an audio format can be played by the AudioSystem.
*/
public static AudioInputStream getAudioInputStreamByURL(URL soundURL) throws UnsupportedAudioFileException, IOException { public static AudioInputStream getAudioInputStreamByURL(URL soundURL) throws UnsupportedAudioFileException, IOException {
return AudioSystem.getAudioInputStream(new BufferedInputStream(soundURL.openStream())); return AudioSystem.getAudioInputStream(new BufferedInputStream(soundURL.openStream()));
} }