parent
3c0763a4c8
commit
d3f392d689
@ -0,0 +1,259 @@ |
|||||||
|
package junk; |
||||||
|
//package mightypork.gamecore.resources.audio;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//import java.nio.FloatBuffer;
|
||||||
|
//import java.util.ArrayList;
|
||||||
|
//import java.util.List;
|
||||||
|
//
|
||||||
|
//import mightypork.gamecore.backend.lwjgl.SlickAudio;
|
||||||
|
//import mightypork.gamecore.core.modules.App;
|
||||||
|
//import mightypork.gamecore.resources.ResourceLoadRequest;
|
||||||
|
//import mightypork.gamecore.resources.audio.players.EffectPlayer;
|
||||||
|
//import mightypork.gamecore.resources.audio.players.LoopPlayer;
|
||||||
|
//import mightypork.gamecore.util.BufferHelper;
|
||||||
|
//import mightypork.utils.eventbus.clients.BusNode;
|
||||||
|
//import mightypork.utils.interfaces.Destroyable;
|
||||||
|
//import mightypork.utils.interfaces.Updateable;
|
||||||
|
//import mightypork.utils.logging.Log;
|
||||||
|
//import mightypork.utils.math.constraints.vect.Vect;
|
||||||
|
//import mightypork.utils.math.constraints.vect.var.VectVar;
|
||||||
|
//
|
||||||
|
//import org.lwjgl.openal.AL;
|
||||||
|
//import org.lwjgl.openal.AL10;
|
||||||
|
//import org.newdawn.slick.openal.SoundStore;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
///**
|
||||||
|
// * Sound system class (only one instance should be made per application)
|
||||||
|
// *
|
||||||
|
// * @author Ondřej Hruška (MightyPork)
|
||||||
|
// */
|
||||||
|
//@Deprecated
|
||||||
|
//public class SoundSystem extends BusNode implements Updateable, Destroyable {
|
||||||
|
//
|
||||||
|
// private static final Vect INITIAL_LISTENER_POS = Vect.ZERO;
|
||||||
|
// private static final int MAX_SOURCES = 256;
|
||||||
|
//
|
||||||
|
// private static VectVar listener = Vect.makeVar();
|
||||||
|
// private static boolean soundSystemInited = false;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Set listener pos
|
||||||
|
// *
|
||||||
|
// * @param pos
|
||||||
|
// */
|
||||||
|
// public static void setListener(Vect pos)
|
||||||
|
// {
|
||||||
|
// listener.setTo(pos);
|
||||||
|
// final FloatBuffer buf3 = BufferHelper.alloc(3);
|
||||||
|
// final FloatBuffer buf6 = BufferHelper.alloc(6);
|
||||||
|
// buf3.clear();
|
||||||
|
// BufferHelper.fill(buf3, (float) pos.x(), (float) pos.y(), (float) pos.z());
|
||||||
|
// AL10.alListener(AL10.AL_POSITION, buf3);
|
||||||
|
// buf3.clear();
|
||||||
|
// BufferHelper.fill(buf3, 0, 0, 0);
|
||||||
|
// AL10.alListener(AL10.AL_VELOCITY, buf3);
|
||||||
|
// buf6.clear();
|
||||||
|
// BufferHelper.fill(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f);
|
||||||
|
// AL10.alListener(AL10.AL_ORIENTATION, buf6);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * @return listener coordinate
|
||||||
|
// */
|
||||||
|
// public static Vect getListener()
|
||||||
|
// {
|
||||||
|
// return listener;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // -- instance --
|
||||||
|
//
|
||||||
|
// private final Volume masterVolume = new Volume(1D);
|
||||||
|
// private final Volume effectsVolume = new JointVolume(masterVolume);
|
||||||
|
// private final Volume loopsVolume = new JointVolume(masterVolume);
|
||||||
|
//
|
||||||
|
// private final List<LoopPlayer> loopPlayers = new ArrayList<>();
|
||||||
|
// private final List<DeferredAudio> resources = new ArrayList<>();
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * @param busAccess app access
|
||||||
|
// */
|
||||||
|
// public SoundSystem() {
|
||||||
|
//
|
||||||
|
// if (!soundSystemInited) {
|
||||||
|
// soundSystemInited = true;
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// SoundStore.get().setMaxSources(MAX_SOURCES);
|
||||||
|
// SoundStore.get().init();
|
||||||
|
// setListener(INITIAL_LISTENER_POS);
|
||||||
|
//
|
||||||
|
// App.bus().send(new AudioReadyEvent());
|
||||||
|
// } catch (final Throwable t) {
|
||||||
|
// Log.e("Error initializing sound system.", t);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void destroy()
|
||||||
|
// {
|
||||||
|
// for (final DeferredAudio r : resources) {
|
||||||
|
// r.destroy();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// SoundStore.get().clear();
|
||||||
|
// AL.destroy();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void update(double delta)
|
||||||
|
// {
|
||||||
|
// for (final Updateable lp : loopPlayers) {
|
||||||
|
// lp.update(delta);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Create effect resource
|
||||||
|
// *
|
||||||
|
// * @param resource resource path
|
||||||
|
// * @param pitch default pitch (1 = unchanged)
|
||||||
|
// * @param gain default gain (0-1)
|
||||||
|
// * @return player
|
||||||
|
// */
|
||||||
|
// public EffectPlayer createEffect(String resource, double pitch, double gain)
|
||||||
|
// {
|
||||||
|
// return new EffectPlayer(createResource(resource), pitch, gain, effectsVolume);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Register loop resource (music / effect loop)
|
||||||
|
// *
|
||||||
|
// * @param resource resource path
|
||||||
|
// * @param pitch default pitch (1 = unchanged)
|
||||||
|
// * @param gain default gain (0-1)
|
||||||
|
// * @param fadeIn default time for fadeIn
|
||||||
|
// * @param fadeOut default time for fadeOut
|
||||||
|
// * @return player
|
||||||
|
// */
|
||||||
|
// public LoopPlayer createLoop(String resource, double pitch, double gain, double fadeIn, double fadeOut)
|
||||||
|
// {
|
||||||
|
// final LoopPlayer p = new LoopPlayer(createResource(resource), pitch, gain, loopsVolume);
|
||||||
|
// p.setFadeTimes(fadeIn, fadeOut);
|
||||||
|
// loopPlayers.add(p);
|
||||||
|
// return p;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Create {@link DeferredAudio} for a resource
|
||||||
|
// *
|
||||||
|
// * @param res a resource name
|
||||||
|
// * @return the resource
|
||||||
|
// * @throws IllegalArgumentException if resource is already registered
|
||||||
|
// */
|
||||||
|
// private DeferredAudio createResource(String res)
|
||||||
|
// {
|
||||||
|
// final DeferredAudio a = new SlickAudio(res);
|
||||||
|
// App.bus().send(new ResourceLoadRequest(a));
|
||||||
|
// resources.add(a);
|
||||||
|
// return a;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Fade out all loops (ie. for screen transitions)
|
||||||
|
// */
|
||||||
|
// public void fadeOutAllLoops()
|
||||||
|
// {
|
||||||
|
// for (final LoopPlayer p : loopPlayers) {
|
||||||
|
// p.fadeOut();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Pause all loops (leave volume unchanged)
|
||||||
|
// */
|
||||||
|
// public void pauseAllLoops()
|
||||||
|
// {
|
||||||
|
// for (final LoopPlayer p : loopPlayers) {
|
||||||
|
// p.pause();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Set level of master volume
|
||||||
|
// *
|
||||||
|
// * @param d level
|
||||||
|
// */
|
||||||
|
// public void setMasterVolume(double d)
|
||||||
|
// {
|
||||||
|
// masterVolume.set(d);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Set level of effects volume
|
||||||
|
// *
|
||||||
|
// * @param d level
|
||||||
|
// */
|
||||||
|
// public void setEffectsVolume(double d)
|
||||||
|
// {
|
||||||
|
// effectsVolume.set(d);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Set level of music volume
|
||||||
|
// *
|
||||||
|
// * @param d level
|
||||||
|
// */
|
||||||
|
// public void setMusicVolume(double d)
|
||||||
|
// {
|
||||||
|
// loopsVolume.set(d);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Get level of master volume
|
||||||
|
// *
|
||||||
|
// * @return level
|
||||||
|
// */
|
||||||
|
// public double getMasterVolume()
|
||||||
|
// {
|
||||||
|
// return masterVolume.get();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Get level of effects volume
|
||||||
|
// *
|
||||||
|
// * @return level
|
||||||
|
// */
|
||||||
|
// public double getEffectsVolume()
|
||||||
|
// {
|
||||||
|
// return effectsVolume.get();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Get level of music volume
|
||||||
|
// *
|
||||||
|
// * @return level
|
||||||
|
// */
|
||||||
|
// public double getMusicVolume()
|
||||||
|
// {
|
||||||
|
// return loopsVolume.get();
|
||||||
|
// }
|
||||||
|
//}
|
@ -1,15 +0,0 @@ |
|||||||
package mightypork.gamecore.resources.audio; |
|
||||||
|
|
||||||
|
|
||||||
import mightypork.utils.eventbus.BusEvent; |
|
||||||
|
|
||||||
|
|
||||||
public class AudioReadyEvent extends BusEvent<AudioReadyListener> { |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void handleBy(AudioReadyListener handler) |
|
||||||
{ |
|
||||||
handler.onInputReady(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,7 +0,0 @@ |
|||||||
package mightypork.gamecore.resources.audio; |
|
||||||
|
|
||||||
|
|
||||||
public interface AudioReadyListener { |
|
||||||
|
|
||||||
void onInputReady(); |
|
||||||
} |
|
@ -1,257 +0,0 @@ |
|||||||
package mightypork.gamecore.resources.audio; |
|
||||||
|
|
||||||
|
|
||||||
import java.nio.FloatBuffer; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
import mightypork.gamecore.backend.lwjgl.SlickAudio; |
|
||||||
import mightypork.gamecore.core.modules.App; |
|
||||||
import mightypork.gamecore.resources.ResourceLoadRequest; |
|
||||||
import mightypork.gamecore.resources.audio.players.EffectPlayer; |
|
||||||
import mightypork.gamecore.resources.audio.players.LoopPlayer; |
|
||||||
import mightypork.gamecore.util.BufferHelper; |
|
||||||
import mightypork.utils.eventbus.clients.BusNode; |
|
||||||
import mightypork.utils.interfaces.Destroyable; |
|
||||||
import mightypork.utils.interfaces.Updateable; |
|
||||||
import mightypork.utils.logging.Log; |
|
||||||
import mightypork.utils.math.constraints.vect.Vect; |
|
||||||
import mightypork.utils.math.constraints.vect.var.VectVar; |
|
||||||
|
|
||||||
import org.lwjgl.openal.AL; |
|
||||||
import org.lwjgl.openal.AL10; |
|
||||||
import org.newdawn.slick.openal.SoundStore; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Sound system class (only one instance should be made per application) |
|
||||||
* |
|
||||||
* @author Ondřej Hruška (MightyPork) |
|
||||||
*/ |
|
||||||
public class SoundSystem extends BusNode implements Updateable, Destroyable { |
|
||||||
|
|
||||||
private static final Vect INITIAL_LISTENER_POS = Vect.ZERO; |
|
||||||
private static final int MAX_SOURCES = 256; |
|
||||||
|
|
||||||
private static VectVar listener = Vect.makeVar(); |
|
||||||
private static boolean soundSystemInited = false; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Set listener pos |
|
||||||
* |
|
||||||
* @param pos |
|
||||||
*/ |
|
||||||
public static void setListener(Vect pos) |
|
||||||
{ |
|
||||||
listener.setTo(pos); |
|
||||||
final FloatBuffer buf3 = BufferHelper.alloc(3); |
|
||||||
final FloatBuffer buf6 = BufferHelper.alloc(6); |
|
||||||
buf3.clear(); |
|
||||||
BufferHelper.fill(buf3, (float) pos.x(), (float) pos.y(), (float) pos.z()); |
|
||||||
AL10.alListener(AL10.AL_POSITION, buf3); |
|
||||||
buf3.clear(); |
|
||||||
BufferHelper.fill(buf3, 0, 0, 0); |
|
||||||
AL10.alListener(AL10.AL_VELOCITY, buf3); |
|
||||||
buf6.clear(); |
|
||||||
BufferHelper.fill(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f); |
|
||||||
AL10.alListener(AL10.AL_ORIENTATION, buf6); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @return listener coordinate |
|
||||||
*/ |
|
||||||
public static Vect getListener() |
|
||||||
{ |
|
||||||
return listener; |
|
||||||
} |
|
||||||
|
|
||||||
// -- instance --
|
|
||||||
|
|
||||||
private final Volume masterVolume = new Volume(1D); |
|
||||||
private final Volume effectsVolume = new JointVolume(masterVolume); |
|
||||||
private final Volume loopsVolume = new JointVolume(masterVolume); |
|
||||||
|
|
||||||
private final List<LoopPlayer> loopPlayers = new ArrayList<>(); |
|
||||||
private final List<DeferredAudio> resources = new ArrayList<>(); |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @param busAccess app access |
|
||||||
*/ |
|
||||||
public SoundSystem() { |
|
||||||
|
|
||||||
if (!soundSystemInited) { |
|
||||||
soundSystemInited = true; |
|
||||||
|
|
||||||
try { |
|
||||||
SoundStore.get().setMaxSources(MAX_SOURCES); |
|
||||||
SoundStore.get().init(); |
|
||||||
setListener(INITIAL_LISTENER_POS); |
|
||||||
|
|
||||||
App.bus().send(new AudioReadyEvent()); |
|
||||||
} catch (final Throwable t) { |
|
||||||
Log.e("Error initializing sound system.", t); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public void destroy() |
|
||||||
{ |
|
||||||
for (final DeferredAudio r : resources) { |
|
||||||
r.destroy(); |
|
||||||
} |
|
||||||
|
|
||||||
SoundStore.get().clear(); |
|
||||||
AL.destroy(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public void update(double delta) |
|
||||||
{ |
|
||||||
for (final Updateable lp : loopPlayers) { |
|
||||||
lp.update(delta); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Create effect resource |
|
||||||
* |
|
||||||
* @param resource resource path |
|
||||||
* @param pitch default pitch (1 = unchanged) |
|
||||||
* @param gain default gain (0-1) |
|
||||||
* @return player |
|
||||||
*/ |
|
||||||
public EffectPlayer createEffect(String resource, double pitch, double gain) |
|
||||||
{ |
|
||||||
return new EffectPlayer(createResource(resource), pitch, gain, effectsVolume); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Register loop resource (music / effect loop) |
|
||||||
* |
|
||||||
* @param resource resource path |
|
||||||
* @param pitch default pitch (1 = unchanged) |
|
||||||
* @param gain default gain (0-1) |
|
||||||
* @param fadeIn default time for fadeIn |
|
||||||
* @param fadeOut default time for fadeOut |
|
||||||
* @return player |
|
||||||
*/ |
|
||||||
public LoopPlayer createLoop(String resource, double pitch, double gain, double fadeIn, double fadeOut) |
|
||||||
{ |
|
||||||
final LoopPlayer p = new LoopPlayer(createResource(resource), pitch, gain, loopsVolume); |
|
||||||
p.setFadeTimes(fadeIn, fadeOut); |
|
||||||
loopPlayers.add(p); |
|
||||||
return p; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Create {@link DeferredAudio} for a resource |
|
||||||
* |
|
||||||
* @param res a resource name |
|
||||||
* @return the resource |
|
||||||
* @throws IllegalArgumentException if resource is already registered |
|
||||||
*/ |
|
||||||
private DeferredAudio createResource(String res) |
|
||||||
{ |
|
||||||
final DeferredAudio a = new SlickAudio(res); |
|
||||||
App.bus().send(new ResourceLoadRequest(a)); |
|
||||||
resources.add(a); |
|
||||||
return a; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Fade out all loops (ie. for screen transitions) |
|
||||||
*/ |
|
||||||
public void fadeOutAllLoops() |
|
||||||
{ |
|
||||||
for (final LoopPlayer p : loopPlayers) { |
|
||||||
p.fadeOut(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Pause all loops (leave volume unchanged) |
|
||||||
*/ |
|
||||||
public void pauseAllLoops() |
|
||||||
{ |
|
||||||
for (final LoopPlayer p : loopPlayers) { |
|
||||||
p.pause(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Set level of master volume |
|
||||||
* |
|
||||||
* @param d level |
|
||||||
*/ |
|
||||||
public void setMasterVolume(double d) |
|
||||||
{ |
|
||||||
masterVolume.set(d); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Set level of effects volume |
|
||||||
* |
|
||||||
* @param d level |
|
||||||
*/ |
|
||||||
public void setEffectsVolume(double d) |
|
||||||
{ |
|
||||||
effectsVolume.set(d); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Set level of music volume |
|
||||||
* |
|
||||||
* @param d level |
|
||||||
*/ |
|
||||||
public void setMusicVolume(double d) |
|
||||||
{ |
|
||||||
loopsVolume.set(d); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Get level of master volume |
|
||||||
* |
|
||||||
* @return level |
|
||||||
*/ |
|
||||||
public double getMasterVolume() |
|
||||||
{ |
|
||||||
return masterVolume.get(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Get level of effects volume |
|
||||||
* |
|
||||||
* @return level |
|
||||||
*/ |
|
||||||
public double getEffectsVolume() |
|
||||||
{ |
|
||||||
return effectsVolume.get(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Get level of music volume |
|
||||||
* |
|
||||||
* @return level |
|
||||||
*/ |
|
||||||
public double getMusicVolume() |
|
||||||
{ |
|
||||||
return loopsVolume.get(); |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue