X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsink%2FAudioSink.java;h=b0f00678c8866e36e68f1f9b5fbc1f5e3d19e991;hb=d07ec839a266057079d5a065176d46a0cc567b5d;hp=f7ab938d569e73ec52247ab15d4bede54900dc2a;hpb=09f8bd2297dc864e24baa67c65be97104e00c320;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java b/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java index f7ab938..b0f0067 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java +++ b/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java @@ -36,9 +36,11 @@ import net.pterodactylus.sonitus.data.Sink; import net.pterodactylus.sonitus.data.Source; import net.pterodactylus.sonitus.data.controller.Fader; import net.pterodactylus.sonitus.data.controller.Switch; +import net.pterodactylus.sonitus.data.event.MetadataUpdated; import net.pterodactylus.sonitus.io.IntegralWriteOutputStream; import com.google.common.base.Preconditions; +import com.google.common.eventbus.EventBus; /** * {@link Sink} implementation that uses the JDK’s {@link AudioSystem} to play @@ -51,6 +53,9 @@ public class AudioSink implements Sink { /** The logger. */ private static final Logger logger = Logger.getLogger(AudioSink.class.getName()); + /** The event bus. */ + private final EventBus eventBus; + /** The volume fader. */ private final Fader volumeFader; @@ -83,8 +88,14 @@ public class AudioSink implements Sink { } }, 1024); - /** Creates a new audio sink. */ - public AudioSink() { + /** + * Creates a new audio sink. + * + * @param eventBus + * The event bus + */ + public AudioSink(EventBus eventBus) { + this.eventBus = eventBus; volumeFader = new Fader("Volume") { @Override @@ -124,6 +135,11 @@ public class AudioSink implements Sink { } @Override + public Metadata metadata() { + return metadata; + } + + @Override public List> controllers() { return Arrays.>asList(volumeFader, muteSwitch); } @@ -140,6 +156,7 @@ public class AudioSink implements Sink { sourceDataLine = AudioSystem.getSourceDataLine(audioFormat); sourceDataLine.open(audioFormat); sourceDataLine.start(); + metadataUpdated(metadata); } catch (LineUnavailableException e) { /* TODO */ throw new IOException(e); @@ -155,6 +172,8 @@ public class AudioSink implements Sink { @Override public void metadataUpdated(Metadata metadata) { logger.info(String.format("Now playing %s.", metadata)); + this.metadata = metadata; + eventBus.post(new MetadataUpdated(this, metadata)); } @Override