/** * playback start method extended by some gui stuff */ @Override public void play() { try { super.play(); } catch (LineUnavailableException | IOException e) { e.printStackTrace(); } panel[2].setText("\u25A0"); panel[2].setBackground(new Color(232, 232, 232)); // listen to the audioClip and when it is finished playing, trigger the stop() method to clean up and reset the button LineListener listener = new LineListener() { public void update(LineEvent event) { if (event.getType() == LineEvent.Type.STOP) { stop(); } } }; this.getAudioClip().addLineListener(listener); }
/** * This method sets the open state and generates * events if it changes. */ final void setOpen(boolean open) { if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ") this.open: " + this.open); boolean sendEvents = false; long position = getLongFramePosition(); synchronized (this) { if (this.open != open) { this.open = open; sendEvents = true; } } if (sendEvents) { if (open) { sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position)); } else { sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position)); } } if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ") this.open: " + this.open); }
/** * This method sets the started state and generates * events if it changes. */ final void setStarted(boolean started) { if (Printer.trace) Printer.trace("> AbstractDataLine: setStarted(" + started + ")"); boolean sendEvents = false; long position = getLongFramePosition(); synchronized (this) { if (this.started != started) { this.started = started; sendEvents = true; } } if (sendEvents) { if (started) { sendEvents(new LineEvent(this, LineEvent.Type.START, position)); } else { sendEvents(new LineEvent(this, LineEvent.Type.STOP, position)); } } if (Printer.trace) Printer.trace("< AbstractDataLine: setStarted completed"); }
private static void test(final AudioFormat format, final byte[] data) throws Exception { final Line.Info info = new DataLine.Info(Clip.class, format); final Clip clip = (Clip) AudioSystem.getLine(info); go = new CountDownLatch(1); clip.addLineListener(event -> { if (event.getType().equals(LineEvent.Type.START)) { go.countDown(); } }); clip.open(format, data, 0, data.length); clip.start(); go.await(); while (clip.isRunning()) { // This loop should not hang } while (clip.isActive()) { // This loop should not hang } clip.close(); }
public void update(LineEvent e) { if (e.getType() == LineEvent.Type.STOP) { stopOccured++; out(" Test program: receives STOP event for clip="+clip.toString()+" no."+stopOccured); out(" Test program: Calling close() in event dispatcher thread"); clip.close(); synchronized (lock) { lock.notifyAll(); } } else if (e.getType() == LineEvent.Type.CLOSE) { out(" Test program: receives CLOSE event for "+clip.toString()); synchronized (lock) { lock.notifyAll(); } } else if (e.getType() == LineEvent.Type.START) { out(" Test program: receives START event for "+clip.toString()); } else if (e.getType() == LineEvent.Type.OPEN) { out(" Test program: receives OPEN event for "+clip.toString()); } }
public void playAudio(float volumeDelta) { boolean isPlaying = false; if(clip != null) if(clip.isActive()) isPlaying = true; if(!shouldPreloadAudio && !isPlaying) { loadClip(); clip.addLineListener((LineEvent event) -> { if(event.getType() == LineEvent.Type.STOP) clip.close(); }); } float newVolume = Math.max(Math.min(volumeAdjustment + volumeDelta, volume.getMaximum()), volume.getMinimum()); volume.setValue(newVolume); clip.setFramePosition(0); clip.start(); }
@Override public void open() throws AudioException { try { this.audioInputStream = Audio.getAudioInputStream(this.resource); this.clip = AudioSystem.getClip(); this.clip.open(this.audioInputStream); this.clip.addLineListener(event -> { if(event.getType().equals(LineEvent.Type.STOP) && this.clip.getMicrosecondPosition() >= this.clip.getMicrosecondLength()) { this.trigger(AudioEvent.Type.REACHED_END); } }); this.controls = AbstractAudio.extractControls(this.clip, this.controls); this.open = true; this.trigger(AudioEvent.Type.OPENED); } catch(Exception exception) { throw new AudioException(exception); } }
/** * <strong><em>playSound</em></strong><br /><br /> * *  Plays a .wav audio file located in /res/audio/.<br /> *  <em>E.g.</em> <sub>audio</sub><br /><br /> *  File location would be: <sub>/res/audio/audio.wav</sub><br /> *  and would be played automatically. * * @param audio - File name. */ public void playSound(String audio){ try{ AudioInputStream audioInputStream = AudioSystem.getAudioInputStream( getClass().getResource("/audio/"+audio+".wav")); Clip clip = AudioSystem.getClip(); clip.open(audioInputStream); clip.start(); clip.addLineListener(new LineListener() { @Override public void update(LineEvent arg0) { if(arg0.getFramePosition()==clip.getFrameLength()){ clip.close(); } } }); clips.put(audio, clip); }catch(Exception e){ e.printStackTrace(); } }
private Clip openClip(boolean closeAfterPlaying) throws UnsupportedAudioFileException, IOException, LineUnavailableException { AudioInputStream audioStream = AudioSystem.getAudioInputStream(new ByteArrayInputStream(audioFilePath)); DataLine.Info info = getLineInfo(audioStream); Clip audioClip = (Clip) AudioSystem.getLine(info); if (closeAfterPlaying) { audioClip.addLineListener(new LineListener() { @Override public void update(LineEvent myLineEvent) { if (myLineEvent.getType() == LineEvent.Type.STOP) audioClip.close(); } }); } audioClip.open(audioStream); return audioClip; }
public void setPlayer(Wavefile af) throws Exception{ clip = af.getClip(); clip.open(); fullLength = clip.getFrameLength(); endPoint = fullLength; gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); playing = false; clip.addLineListener(new LineListener(){ @Override public void update(LineEvent arg0) { while(playing){ int tempframe = clip.getFramePosition(); MakamBoxAnalysis.positionSlide.setValue(tempframe); if (stopbutton!=null&&tempframe == fullLength){ stopbutton.doClick(); } else if(stopbutton!=null && tempframe>=endPoint){ playAgain(); } else if (tempframe == fullLength){ stop(); } } } }); }
private void playSirenSound() { try { File soundFile = new File(sirenFile); AudioInputStream soundIn = AudioSystem.getAudioInputStream(soundFile); AudioFormat format = soundIn.getFormat(); DataLine.Info info = new DataLine.Info(Clip.class, format); clip = (Clip) AudioSystem.getLine(info); clip.addLineListener(new LineListener() { @Override public void update(LineEvent event) { if (event.getType() == LineEvent.Type.STOP) { soundOn = false; } } }); clip.open(soundIn); clip.start(); soundOn = true; } catch (Exception e) { e.printStackTrace(); } }
/** * This method sets the open state and generates * events if it changes. */ protected void setOpen(boolean open) { if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ") this.open: " + this.open); boolean sendEvents = false; long position = getLongFramePosition(); synchronized (this) { if (this.open != open) { this.open = open; sendEvents = true; } } if (sendEvents) { if (open) { sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position)); } else { sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position)); } } if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ") this.open: " + this.open); }
private void playAudio(AudioInputStream audio) { LineListener lineListener = new LineListener() { public void update(LineEvent event) { if (event.getType() == LineEvent.Type.START) { Log.print(Log.DEBUG,"Audio started playing."); } else if (event.getType() == LineEvent.Type.STOP) { Log.print(Log.DEBUG,"Audio stopped playing."); } else if (event.getType() == LineEvent.Type.OPEN) { Log.print(Log.DEBUG,"Audio line opened."); } else if (event.getType() == LineEvent.Type.CLOSE) { Log.print(Log.DEBUG,"Audio line closed."); } } }; AudioPlayer ap = new AudioPlayer(audio, lineListener); ap.start(); }
public void update(LineEvent event) { if (event.getType() == LineEvent.Type.OPEN) { // start the line, init the buffer line.start(); int bytes = line.getBufferSize(); byteBuf = new byte [bytes]; doubleBuf = new double [bytes / af.getFrameSize()]; fs = af.getFrameSize(); lineOpened = true; } else if (event.getType() == LineEvent.Type.START) { // nothing to do here } else if (event.getType() == LineEvent.Type.STOP) { line.close(); } else if (event.getType() == LineEvent.Type.CLOSE) { // only free the line now lineOpened = false; } else System.err.println("Unknown LineEvent: " + event.getType()); }
@Override public void update(LineEvent le) { if (!le.getLine().equals(line)) return; System.err.println(new Date() + ": RawCapturer.update: " + le); if (le.getType() == LineEvent.Type.START){ System.err.println("RawCapturer.update: notifyStart()"); notifyStart(); } else if (le.getType() == LineEvent.Type.STOP){ System.err.println("RawCapturer.update: notifyStop()"); stopped = true; notifyStop(); } }
public VentanaInternaGrabador(final File f) { initComponents(); recorder = new SMSoundPlayerRecorder(f); this.setTitle(f.getName()); LineListener lineListener = new LineListener() { @Override public void update(LineEvent event) { if (event.getType() == Type.START) { recorderButton.setEnabled(false); stopButton.setEnabled(true); } if (event.getType() == Type.STOP) { recorderButton.setEnabled(true); stopButton.setEnabled(false); VentanaInternaReproductor vir = new VentanaInternaReproductor(f); VentanaPrincipal.getEscritorio().add(vir); vir.setVisible(true); } } }; ((SMSoundPlayerRecorder) recorder).setLineListener(lineListener); this.pack(); }
public VentanaInternaReproductor(File f) { initComponents(); player = new SMSoundPlayerRecorder(f); this.setTitle(f.getName()); LineListener lineListener = new LineListener() { @Override public void update(LineEvent event) { if (event.getType() == Type.START) { play.setEnabled(false); stop.setEnabled(true); } if (event.getType() == Type.STOP) { play.setEnabled(true); play.setSelected(false); stop.setEnabled(false); } } }; ((SMSoundPlayerRecorder)player).setLineListener(lineListener); this.pack(); }
public VentanaInternaGrabador() { initComponents(); exist=true; recorder = new SMSoundPlayerRecorder(new File("nuevo")); LineListener lineListener = new LineListener() { @Override public void update(LineEvent event) { if (event.getType() == Type.START) { recorderButton.setEnabled(false); stopButton.setEnabled(true); } if (event.getType() == Type.STOP) { recorderButton.setEnabled(true); stopButton.setEnabled(false); } } }; ((SMSoundPlayerRecorder) recorder).setLineListener(lineListener); this.pack(); }
public VentanaInternaReproductor(File f) { initComponents(); if (f != null) { player = new SMSoundPlayer(f); this.setTitle(f.getName()); LineListener lineListener = new LineListener() { @Override public void update(LineEvent event) { if (event.getType() == Type.START) { play.setEnabled(false); stop.setEnabled(true); } if (event.getType() == Type.STOP) { play.setEnabled(true); play.setSelected(false); stop.setEnabled(false); } } }; ((SMSoundPlayer) player).setLineListener(lineListener); this.pack(); } }
public void update(LineEvent lineEvent) /* Called when the clip's line detects open, close, start, or stop events. The watcher (if one exists) is notified. */ { // when clip is stopped / reaches its end if (lineEvent.getType() == LineEvent.Type.STOP) { // System.out.println("update() STOP for " + name); clip.stop(); clip.setFramePosition(0); // NEW if (!isLooping) { // it isn't looping if (watcher != null) watcher.atSequenceEnd(name, SoundsWatcher.STOPPED); } else { // else play it again clip.start(); if (watcher != null) watcher.atSequenceEnd(name, SoundsWatcher.REPLAYED); } } }
JSAudio(AudioInputStream as) throws LineUnavailableException, IOException { Mixer mix = AudioIO.findMixer(as.getFormat()); clip = (Clip) (mix != null ? mix.getLine(new Line.Info(Clip.class)) : AudioSystem.getLine(new Line.Info(Clip.class))); clip.open(as); clip.addLineListener(new LineListener() { public void update(LineEvent event) { if (loop && event.getType() == Type.STOP) { EventQueue.invokeLater(new Runnable() { public void run() { clip.start(); } }); } } }); }
public static void playSound(String filename) { URL resource = ClassLoader.getSystemClassLoader().getResource(filename); try { final Clip clip = (Clip) AudioSystem.getLine(new Line.Info(Clip.class)); clip.addLineListener(event -> { if (event.getType() == LineEvent.Type.STOP) { clip.close(); } }); clip.open(AudioSystem.getAudioInputStream(resource)); clip.start(); } catch (Exception e) { logger.error("Failed to play sound " + filename, e); } }
@Override public void update(LineEvent event) { LineEvent.Type type = event.getType(); if (type == LineEvent.Type.STOP) { clip.close(); } }
JSAudioRecordingClip(Clip clip, AudioMetaData mdata) { c = clip; // because Clip doesn't give access to the loop count // we just loop it ourselves by triggering off of a STOP event c.addLineListener( new LineListener() { public void update(LineEvent event) { if ( event.getType().equals( LineEvent.Type.STOP ) ) { if ( playing && loopCount != 0 ) { c.setMicrosecondPosition( 0 ); c.start(); if ( loopCount > 0 ) { loopCount--; } } else { playing = false; } } } } ); playing = false; loopCount = 0; meta = mdata; }
@Override public void update(LineEvent e) { String eventType = e.getType().toString(); if (eventType.equalsIgnoreCase(References.START)) { References.KEYLISTENER_PANEL.setClipON(true); References.CHRONOMETER.start(); } else if (eventType.equalsIgnoreCase(References.STOP)) { if (!pause) { stop(); } else { References.CHRONOMETER.pause(); } } }
/** * This method sets the started state and generates * events if it changes. */ final void setStarted(boolean started) { if (Printer.trace) Printer.trace("> AbstractDataLine: setStarted(" + started + ")"); boolean sendEvents = false; long position = getLongFramePosition(); synchronized (this) { //if (Printer.debug) Printer.debug(" AbstractDataLine: setStarted: this.started: " + this.started); //if (Printer.debug) Printer.debug(" started: " + started); if (this.started != started) { this.started = started; sendEvents = true; } } //if (Printer.debug) Printer.debug(" this.started: " + this.started); //if (Printer.debug) Printer.debug(" sendEvents: " + sendEvents); if (sendEvents) { if (started) { sendEvents(new LineEvent(this, LineEvent.Type.START, position)); } else { sendEvents(new LineEvent(this, LineEvent.Type.STOP, position)); } } if (Printer.trace) Printer.trace("< AbstractDataLine: setStarted completed"); }
final void sendEvent(LineEvent event) { if (listeners.size() == 0) return; LineListener[] listener_array = listeners .toArray(new LineListener[listeners.size()]); for (LineListener listener : listener_array) { listener.update(event); } }
private void sendEvent(LineEvent event) { if (listeners.size() == 0) return; LineListener[] listener_array = listeners .toArray(new LineListener[listeners.size()]); for (LineListener listener : listener_array) { listener.update(event); } }