X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsink%2FAudioSink.java;h=07499ad80b14d05cfe222bd62b86b8599a557282;hb=8c7035dfe65a019d661a7de8c8a2e4db97cc681e;hp=066588d02392e69ffe283c24b7f830161d1e68c5;hpb=095d258d45033d5b56d0f422971b2866c2799437;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 066588d..07499ad 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java +++ b/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java @@ -34,17 +34,16 @@ import javax.sound.sampled.FloatControl; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; +import net.pterodactylus.sonitus.data.AbstractControlledComponent; import net.pterodactylus.sonitus.data.Controller; import net.pterodactylus.sonitus.data.Metadata; 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 @@ -52,23 +51,17 @@ import com.google.common.eventbus.EventBus; * * @author David ‘Bombe’ Roden */ -public class AudioSink implements Sink { +public class AudioSink extends AbstractControlledComponent 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; /** The “mute” switch. */ private final Switch muteSwitch; - /** The current metadata. */ - private Metadata metadata; - /** The audio output. */ private SourceDataLine sourceDataLine; @@ -92,14 +85,9 @@ public class AudioSink implements Sink { } }, 1024); - /** - * Creates a new audio sink. - * - * @param eventBus - * The event bus - */ - public AudioSink(EventBus eventBus) { - this.eventBus = eventBus; + /** Creates a new audio sink. */ + public AudioSink() { + super("Audio Output"); volumeFader = new Fader("Volume") { @Override @@ -151,16 +139,6 @@ public class AudioSink implements Sink { // @Override - public String name() { - return "Audio Output"; - } - - @Override - public Metadata metadata() { - return metadata; - } - - @Override public List> controllers() { return Arrays.>asList(volumeFader, muteSwitch); } @@ -193,9 +171,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)); + super.metadataUpdated(metadata); + logger.fine(String.format("Now playing %s.", metadata)); } @Override @@ -209,7 +186,7 @@ public class AudioSink implements Sink { // /** - * Returns the {@link FloatControl.Type.VOLUME} control. + * Returns the {@link FloatControl.Type#VOLUME} control. * * @param dataLine * The data line to search for the control @@ -220,7 +197,7 @@ public class AudioSink implements Sink { } /** - * Returns the {@link BooleanControl.Type.MUTE} control. + * Returns the {@link BooleanControl.Type#MUTE} control. * * @param dataLine * The data line to search for the control