use of javax.sound.sampled.LineListener in project jdk8u_jdk by JetBrains.
the class EventDispatcher method processEvent.
/**
* Invoked when there is at least one event in the queue.
* Implement this as a callback to process one event.
*/
void processEvent(EventInfo eventInfo) {
int count = eventInfo.getListenerCount();
// process an LineEvent
if (eventInfo.getEvent() instanceof LineEvent) {
LineEvent event = (LineEvent) eventInfo.getEvent();
if (Printer.debug)
Printer.debug("Sending " + event + " to " + count + " listeners");
for (int i = 0; i < count; i++) {
try {
((LineListener) eventInfo.getListener(i)).update(event);
} catch (Throwable t) {
if (Printer.err)
t.printStackTrace();
}
}
return;
}
// process a MetaMessage
if (eventInfo.getEvent() instanceof MetaMessage) {
MetaMessage event = (MetaMessage) eventInfo.getEvent();
for (int i = 0; i < count; i++) {
try {
((MetaEventListener) eventInfo.getListener(i)).meta(event);
} catch (Throwable t) {
if (Printer.err)
t.printStackTrace();
}
}
return;
}
// process a Controller or Mode Event
if (eventInfo.getEvent() instanceof ShortMessage) {
ShortMessage event = (ShortMessage) eventInfo.getEvent();
int status = event.getStatus();
// c is the channel they are sent on.
if ((status & 0xF0) == 0xB0) {
for (int i = 0; i < count; i++) {
try {
((ControllerEventListener) eventInfo.getListener(i)).controlChange(event);
} catch (Throwable t) {
if (Printer.err)
t.printStackTrace();
}
}
}
return;
}
Printer.err("Unknown event type: " + eventInfo.getEvent());
}
use of javax.sound.sampled.LineListener in project yamcs-studio by yamcs.
the class SoundSystem method beep.
/**
* Plays a beep, only if there is not currently a previous beep playing.
*/
public static synchronized void beep() {
try {
if (beepClip != null) {
return;
}
beepClip = AudioSystem.getClip();
InputStream in = SoundSystem.class.getResourceAsStream(BEEP_SOUND);
AudioInputStream audioIn = AudioSystem.getAudioInputStream(new BufferedInputStream(in));
beepClip.open(audioIn);
beepClip.start();
// explicitly stop the clip when sound has stopped
beepClip.addLineListener(new LineListener() {
@Override
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.STOP) {
event.getLine().close();
beepClip = null;
}
}
});
} catch (Exception e) {
System.out.println(e);
log.log(Level.WARNING, "Error playing beep sound", e);
}
}
Aggregations