Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update vsdecoder SoundBiteTest and cleanup #3019

Merged
merged 11 commits into from
Feb 9, 2017
42 changes: 15 additions & 27 deletions java/src/jmri/jmrit/vsdecoder/Diesel3Sound.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public void handleSpeedChange(Float s, EnginePane e) {
}

// Responds to "CHANGE" trigger
@Override
public void changeThrottle(float s) {
// This is all we have to do. The loop thread will handle everything else.
if (_loopThread != null) {
Expand Down Expand Up @@ -490,22 +491,15 @@ private float setFloatFromString(String s) {

static public List<AudioBuffer> getBufferList(VSDFile vf, String filename, String sname, String uname) {
List<AudioBuffer> buflist = null;
if (vf == null) {
// Need to fix this.
//buf.setURL(vsd_file_base + filename);
log.debug("No VSD File");
return (null);
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
//buflist = AudioUtil.getSplitInputStream(VSDSound.BufSysNamePrefix+filename, ins, 250, 100);
buflist = AudioUtil.getAudioBufferList(VSDSound.BufSysNamePrefix + filename, ins, 250, 100);
} else {
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
//buflist = AudioUtil.getSplitInputStream(VSDSound.BufSysNamePrefix+filename, ins, 250, 100);
buflist = AudioUtil.getAudioBufferList(VSDSound.BufSysNamePrefix + filename, ins, 250, 100);
} else {
log.debug("Input Stream failed");
return (null);
}
return (buflist);
log.debug("Input Stream failed");
return (null);
}
return (buflist);
}

static public AudioBuffer getBuffer(VSDFile vf, String filename, String sname, String uname) {
Expand All @@ -514,19 +508,12 @@ static public AudioBuffer getBuffer(VSDFile vf, String filename, String sname, S
try {
buf = (AudioBuffer) am.provideAudio(VSDSound.BufSysNamePrefix + filename);
buf.setUserName(VSDSound.BufUserNamePrefix + uname);
if (vf == null) {
// Need to fix this.
//buf.setURL(vsd_file_base + filename);
log.debug("No VSD File");
return (null);
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
buf.setInputStream(ins);
} else {
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
buf.setInputStream(ins);
} else {
log.debug("Input Stream failed");
return (null);
}
log.debug("Input Stream failed");
return (null);
}
} catch (AudioException | IllegalArgumentException ex) {
log.error("Problem creating SoundBite: " + ex);
Expand Down Expand Up @@ -569,7 +556,7 @@ public D3LoopThread(Diesel3Sound d, D3Notch n, String s, boolean r) {
is_looping = false;
is_dying = false;
_notch = n;
_sound = new SoundBite(s, SoundBite.BufferMode.QUEUE_MODE);
_sound = new SoundBite(s);
_sound.setGain(0.8f);
_parent = d;
_throttle = 0.0f;
Expand Down Expand Up @@ -641,6 +628,7 @@ public void stopEngine(AudioBuffer stop_buf) {
}
}

@Override
public void run() {
try {
while (is_running) {
Expand Down
7 changes: 0 additions & 7 deletions java/src/jmri/jmrit/vsdecoder/NotchTransition.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,6 @@ class NotchTransition extends SoundBite {
private int prev_notch;
private int next_notch;

public NotchTransition(String name) {
super(name);
prev_notch = 0;
next_notch = 0;
length = 0;
}

public NotchTransition(VSDFile vf, String filename, String sname, String uname) {
super(vf, filename, sname, uname);
prev_notch = 0;
Expand Down
35 changes: 17 additions & 18 deletions java/src/jmri/jmrit/vsdecoder/SoundBite.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,32 +45,23 @@ public static enum BufferMode {
BufferMode bufferMode;
ArrayList<AudioBuffer> loopBufferList = new ArrayList<AudioBuffer>();

// Constructor for QUEUE_MODE.
public SoundBite(String name) {
this(name, BufferMode.BOUND_MODE);
}

// Constructor to replace QueueSoundBite, really.
public SoundBite(String name, BufferMode mode) {
super(name);
this.filename = null;
system_name = VSDSound.SrcSysNamePrefix + name;
user_name = VSDSound.SrcUserNamePrefix + name;
bufferMode = mode;
initialized = init(null, mode);
bufferMode = BufferMode.QUEUE_MODE;
initialized = init(null, bufferMode);
}

// Constructor for backward compatibility
// Constructor for BOUND_MODE.
public SoundBite(VSDFile vf, String filename, String sname, String uname) {
this(BufferMode.BOUND_MODE, vf, filename, sname, uname);
}

public SoundBite(BufferMode mode, VSDFile vf, String filename, String sname, String uname) {
super(uname);
this.filename = filename;
system_name = sname;
user_name = uname;
bufferMode = mode;
initialized = init(vf, mode);
bufferMode = BufferMode.BOUND_MODE;
initialized = init(vf, bufferMode);
}

public String getFileName() {
Expand Down Expand Up @@ -100,7 +91,8 @@ public final boolean init(VSDFile vf, BufferMode mode) {
sound_buf = (AudioBuffer) am.provideAudio(BufSysNamePrefix + system_name);
sound_buf.setUserName(BufUserNamePrefix + user_name);
if (vf == null) {
sound_buf.setURL(vsd_file_base + filename);
log.debug("VSD file is null! Filename: {}", filename);
sound_buf.setURL(filename); // Path must be provided by caller.
} else {
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
Expand Down Expand Up @@ -223,9 +215,11 @@ public void setFadeTimes(int in, int out) {
sound_src.setFadeOut(out);
}

@Override
public void shutdown() {
}

@Override
public void mute(boolean m) {
if (m) {
volume = sound_src.getGain();
Expand All @@ -235,21 +229,25 @@ public void mute(boolean m) {
}
}

@Override
public void setVolume(float v) {
volume = v * gain;
sound_src.setGain(volume);
}

@Override
public void play() {
sound_src.play();
is_playing = true;
}

@Override
public void loop() {
sound_src.play();
is_playing = true;
}

@Override
public void stop() {
sound_src.stop();
is_playing = false;
Expand All @@ -264,6 +262,7 @@ public void rewind() {
sound_src.rewind();
}

@Override
public void fadeOut() {
// Skip the fade action if the fade out time is zero.
if (sound_src.getFadeOut() == 0) {
Expand All @@ -274,6 +273,7 @@ public void fadeOut() {
is_playing = false;
}

@Override
public void fadeIn() {
// Skip the fade action if the fade in time is zero.
if (sound_src.getFadeIn() == 0) {
Expand All @@ -292,8 +292,7 @@ public void setPosition(PhysicalLocation v) {

public void setURL(String filename) {
this.filename = filename;
sound_buf.setURL(vsd_file_base + filename);

sound_buf.setURL(filename); // Path must be provided by caller.
}

public long getLength() {
Expand Down
22 changes: 7 additions & 15 deletions java/src/jmri/jmrit/vsdecoder/Steam1Sound.java
Original file line number Diff line number Diff line change
Expand Up @@ -509,8 +509,6 @@ static public AudioBuffer getBuffer(VSDFile vf, String filename,
b = (AudioBuffer) am.provideAudio(VSDSound.BufSysNamePrefix + sname + filename);
b.setUserName(VSDSound.BufUserNamePrefix + uname);
if (vf == null) {
// Need to fix this.
//buf.setURL(vsd_file_base + filename);
log.warn("No VSD File");
return null;
} else {
Expand Down Expand Up @@ -547,19 +545,12 @@ static public AudioBuffer getBufferHelper(String sname, String uname) {
}

static public java.io.InputStream getWavStream(VSDFile vf, String filename) {
if (vf == null) {
// Need to fix this.
//buf.setURL(vsd_file_base + filename);
log.warn("No VSD File");
return null;
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
return ins;
} else {
java.io.InputStream ins = vf.getInputStream(filename);
if (ins != null) {
return ins;
} else {
log.warn("input Stream failed for {}", filename);
return null;
}
log.warn("input Stream failed for {}", filename);
return null;
}
}

Expand Down Expand Up @@ -636,7 +627,7 @@ public S1LoopThread(Steam1Sound d, String s, int ts, float dd,
coast_notch = null;
helper_notch = null;
// Sound for queueing.
_sound = new SoundBite(s + "_QUEUE", SoundBite.BufferMode.QUEUE_MODE);
_sound = new SoundBite(s + "_QUEUE");
_sound.setGain(VSDSound.default_gain); // All chuff sounds will have this gain
_parent = d;
_top_speed = ts;
Expand Down Expand Up @@ -810,6 +801,7 @@ public void stopIdling() {
//
// LOOP-PLAYER
//
@Override
public void run() {
try {
while (is_running) {
Expand Down
2 changes: 0 additions & 2 deletions java/src/jmri/jmrit/vsdecoder/VSDSound.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ abstract public class VSDSound {

public final static float default_gain = 0.8f;

protected String vsd_file_base = "program:resources/vsdecoder";

javax.swing.Timer t;

boolean is_playing;
Expand Down
13 changes: 7 additions & 6 deletions java/test/jmri/jmrit/vsdecoder/SoundBiteTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,18 @@ public void testStateConstants() {

@Test
public void testCreateSimple() {
SoundBite uut = new SoundBite("unitUnderTest");
SoundBite uut = new SoundBite("unitUnderTest"); // QUEUE_MODE
Assert.assertEquals("sound name", "unitUnderTest", uut.getName());
Assert.assertFalse("is playing", uut.isPlaying());
}

String filename = "java/test/jmri/jmrit/vsdecoder/test.wav";

@Test
@Ignore("Causes NPE")
public void testCreateFull() {
SoundBite uut = new SoundBite(null, "test.wav", "sysname", "uname");
SoundBite uut = new SoundBite(null, filename, "sysname", "uname"); // BOUND_MODE
Assert.assertEquals("sound name", "uname", uut.getName());
Assert.assertEquals("file name", "filename", uut.getFileName());
Assert.assertEquals("file name", filename, uut.getFileName());
Assert.assertEquals("system name", "sysname", uut.getSystemName());
Assert.assertEquals("user name", "uname", uut.getUserName());
Assert.assertTrue("initialized", uut.isInitialized());
Expand All @@ -40,7 +41,7 @@ public void testCreateFull() {

@Test
public void TestSetGet() {
SoundBite uut = new SoundBite("unitUnderTest");
SoundBite uut = new SoundBite("unitUnderTest"); // QUEUE_MODE
uut.setName("new name");
Assert.assertEquals("set name", "new name", uut.getName());
uut.setLooped(true);
Expand All @@ -56,7 +57,7 @@ private Element buildTestXML() {

@Test
public void testSetXML() {
SoundBite uut = new SoundBite("unitUnderTest");
SoundBite uut = new SoundBite("unitUnderTest"); // QUEUE_MODE
Element e = buildTestXML();
uut.setXml(e);
// SoundBite.setXml() does nothing.
Expand Down
6 changes: 3 additions & 3 deletions java/test/jmri/jmrit/vsdecoder/VSDSoundTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ public void testStateConstants() {

// Note: VSDSound is abstract. Using SoundBite as test vehicle.
public void testCreateSimple() {
VSDSound uut = new SoundBite("unitUnderTest");
VSDSound uut = new SoundBite("unitUnderTest"); // BOUND_MODE
Assert.assertEquals("sound name", "unitUnderTest", uut.getName());
Assert.assertFalse("is playing", uut.isPlaying());
}

public void testSetGet() {
VSDSound uut = new SoundBite("unitUnderTest");
VSDSound uut = new SoundBite("unitUnderTest"); // BOUND_MODE
uut.setName("new name");
Assert.assertEquals("set name", "new name", uut.getName());
}
Expand All @@ -41,7 +41,7 @@ private Element buildTestXML() {
}

public void testSetXML() {
VSDSound uut = new SoundBite("unitUnderTest");
VSDSound uut = new SoundBite("unitUnderTest"); // BOUND_MODE
Element e = buildTestXML();
uut.setXml(e);
// VSDSound.setXml() does nothing.
Expand Down