diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java index 2e2544ad5372e6c6d4a5b0c97cf0ed43410aead9..2893dd123598aae235ac5345f0f4819c0717ed42 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapper.java @@ -85,7 +85,10 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public void handleFeedback(FeedbackMessage type) { - Midi.getInstance().getMidiDevice().ifPresent(device -> device.handleFeedback(type, key, feedback)); + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { + device.handleFeedback(type, key, feedback); + } } @Override @@ -96,9 +99,9 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac // Feedback, abhängig vom Device @Override public boolean supportFeedback() { - Optional<Device> midiDevice = Midi.getInstance().getMidiDevice(); - if (midiDevice.isPresent()) { - return midiDevice.get().supportFeedback(); + Device midiDevice = Midi.getInstance().getMidiDevice(); + if (midiDevice != null) { + return midiDevice.supportFeedback(); } return false; } @@ -114,9 +117,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor[] getColors() { - Optional<Device> midiDevice = Midi.getInstance().getMidiDevice(); - if (midiDevice.isPresent()) { - Device device = midiDevice.get(); + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { if (device instanceof DeviceColorAssociatorConnector) { return ((DeviceColorAssociatorConnector) device).getColors(); } @@ -126,9 +128,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor getDefaultEventColor() { - Optional<Device> midiDevice = Midi.getInstance().getMidiDevice(); - if (midiDevice.isPresent()) { - Device device = midiDevice.get(); + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { if (device instanceof DeviceColorAssociatorConnector) { return ((DeviceColorAssociatorConnector) device).getDefaultEventColor(); } @@ -138,9 +139,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor getDefaultStandardColor() { - Optional<Device> midiDevice = Midi.getInstance().getMidiDevice(); - if (midiDevice.isPresent()) { - Device device = midiDevice.get(); + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { if (device instanceof DeviceColorAssociatorConnector) { return ((DeviceColorAssociatorConnector) device).getDefaultStandardColor(); } @@ -150,9 +150,8 @@ public class MidiMapper extends Mapper implements ColorAssociator, MapperFeedbac @Override public DisplayableFeedbackColor map(Color color) { - Optional<Device> midiDevice = Midi.getInstance().getMidiDevice(); - if (midiDevice.isPresent()) { - Device device = midiDevice.get(); + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { if (device instanceof DeviceColorAssociatorConnector) { return ((DeviceColorAssociatorConnector) device).map(color); } diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java index ffeb227ae4bf2a2c94e10bd041c4da96b41294bd..27e14b3e0fa297cc775151dc5a9ca6972904d039 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/MidiMapperFactory.java @@ -24,12 +24,14 @@ public class MidiMapperFactory extends MapperFactory implements MapperConnectFee @Override public void initFeedbackType() { - Midi.getInstance().getMidiDevice().ifPresent(Device::initDevice); + Device device = Midi.getInstance().getMidiDevice(); + device.initDevice(); } @Override public void clearFeedbackType() { - Midi.getInstance().getMidiDevice().ifPresent(Device::clearFeedback); + Device device = Midi.getInstance().getMidiDevice(); + device.clearFeedback(); } // TODO Remove diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java index b63415aed4d0a04705785ab898cf57971ebb42de..85f6ec285db2564fe25d3f0875761c063553413c 100644 --- a/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java +++ b/PlayWall/src/de/tobias/playpad/action/mapper/listener/MidiHandler.java @@ -7,6 +7,7 @@ import javax.sound.midi.MidiMessage; import de.tobias.playpad.action.Action; import de.tobias.playpad.action.InputType; import de.tobias.playpad.action.MappingUtils; +import de.tobias.playpad.action.mididevice.Device; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.midi.MidiListener; import de.tobias.playpad.project.Project; @@ -42,7 +43,8 @@ public class MidiHandler implements MidiListener { int key = message.getMessage()[1]; // Custom Midi Listener - midi.getMidiDevice().ifPresent(device -> device.onMidiMessage(message)); + Device device = midi.getMidiDevice(); + device.onMidiMessage(message); InputType type; if (message.getMessage()[2] != 0) { diff --git a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java index 02af656d2c50e2cb0a9a2701522f2f2aa36c6a7a..d363e7e52f470c96db11501207be287cc83ecbd8 100644 --- a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java +++ b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java @@ -1,22 +1,18 @@ package de.tobias.playpad.audio; -import java.nio.file.Path; - import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.conntent.PadContent; import de.tobias.playpad.pad.content.AudioContent; import javafx.application.Platform; -import javafx.beans.property.BooleanProperty; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.ReadOnlyObjectProperty; -import javafx.beans.property.SimpleBooleanProperty; -import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.*; import javafx.scene.media.AudioEqualizer; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import javafx.util.Duration; -public class JavaFXAudioHandler extends AudioHandler implements Equalizable { +import java.nio.file.Path; + +public class JavaFXAudioHandler extends AudioHandler implements AudioEqualizeable { private Media media; private MediaPlayer player; diff --git a/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java b/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java index 8279b461a40c8bed0f8af391634019611ac4e005..ad1b9fd095c5c692cb63445710dd3c6be994e9d2 100644 --- a/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java +++ b/PlayWall/src/de/tobias/playpad/pad/content/AudioContent.java @@ -5,26 +5,26 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import de.tobias.playpad.audio.AudioEqualizeable; import org.dom4j.Element; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.audio.AudioHandler; import de.tobias.playpad.audio.AudioRegistry; -import de.tobias.playpad.audio.Equalizable; -import de.tobias.playpad.audio.fade.Fading; +import de.tobias.playpad.pad.conntent.play.Equalizeable; +import de.tobias.playpad.audio.Fade; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.conntent.PadContent; import de.tobias.playpad.pad.conntent.path.SinglePathContent; import de.tobias.playpad.pad.conntent.play.Durationable; import de.tobias.playpad.pad.conntent.play.Fadeable; -import de.tobias.playpad.pad.conntent.play.IVolume; +import de.tobias.playpad.pad.conntent.play.FadeHandler; import de.tobias.playpad.pad.conntent.play.Pauseable; import de.tobias.playpad.project.ProjectExporter; import de.tobias.playpad.registry.NoSuchComponentException; import de.tobias.playpad.volume.VolumeManager; import de.tobias.utils.util.ZipFile; -import javafx.animation.Transition; import javafx.application.Platform; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; @@ -33,7 +33,7 @@ import javafx.beans.value.ChangeListener; import javafx.scene.media.AudioEqualizer; import javafx.util.Duration; -public class AudioContent extends PadContent implements Pauseable, Durationable, Fadeable, Equalizable, SinglePathContent, IVolume { +public class AudioContent extends PadContent implements Pauseable, Durationable, Fadeable, Equalizeable, SinglePathContent, FadeHandler { private final String type; @@ -45,12 +45,12 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, private ChangeListener<Number> volumeListener; - private Fading fading; + private Fade fade; - public AudioContent(String type, Pad pad) { + AudioContent(String type, Pad pad) { super(pad); this.type = type; - fading = new Fading(this); + fade = new Fade(this); // Pad Volume Listener volumeListener = (a, b, c) -> updateVolume(); @@ -106,7 +106,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, Duration fadeIn = pad.getPadSettings().getFade().getFadeIn(); if (fadeIn.toMillis() > 0) { - fading.fadeIn(fadeIn); + fade.fadeIn(fadeIn); } } @@ -114,7 +114,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, public void fadeOut(Runnable onFinish) { Duration fadeOut = getPad().getPadSettings().getFade().getFadeOut(); if (fadeOut.toMillis() > 0) { - fading.fadeOut(fadeOut, () -> { + fade.fadeOut(fadeOut, () -> { onFinish.run(); updateVolume(); }); @@ -123,9 +123,8 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, } } - @Override - public boolean isFading() { - return fading.isFading(); + public boolean getFade() { + return fade.isFading(); } @Override @@ -138,8 +137,8 @@ public class AudioContent extends PadContent implements Pauseable, Durationable, @Override public AudioEqualizer getAudioEqualizer() { - if (audioHandler instanceof Equalizable) { - return ((Equalizable) audioHandler).getAudioEqualizer(); + if (audioHandler instanceof AudioEqualizeable) { + return ((AudioEqualizeable) audioHandler).getAudioEqualizer(); } return null; } diff --git a/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java b/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java index 0bc0126ec95f77ab1cff8dd8c2800574ad1a3e59..02e0d0525f5567264b6060bd0fa096cd96c18d22 100644 --- a/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java +++ b/PlayWall/src/de/tobias/playpad/pad/listener/PadPositionListener.java @@ -39,7 +39,7 @@ public class PadPositionListener implements Runnable, IPadPositionListener { PadContent content = pad.getContent(); // Zeit aktualiesieren bei Play und wenn Fade Out ist - boolean isFading = content instanceof Fadeable && ((Fadeable) content).isFading(); + boolean isFading = content instanceof Fadeable && ((Fadeable) content).getFade(); boolean isPlaying = pad.getStatus() == PadStatus.PLAY; if (content instanceof Durationable && (isPlaying || isFading)) { diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java index 52d5caca51388b4f65b9ec92f0622ee4da70e479..aabd426b60650b0bbfe87f0603e65af054ea5599 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java @@ -10,6 +10,7 @@ import de.tobias.playpad.action.mapper.MapperViewController; import de.tobias.playpad.action.mapper.MidiMapper; import de.tobias.playpad.action.mapper.feedback.DoubleMidiFeedback; import de.tobias.playpad.action.mapper.feedback.SingleMidiFeedback; +import de.tobias.playpad.action.mididevice.Device; import de.tobias.playpad.midi.Midi; import de.tobias.playpad.midi.MidiListener; import de.tobias.playpad.viewcontroller.option.feedback.DoubleFeedbackViewController; @@ -132,8 +133,8 @@ public class MidiMapperViewController extends MapperViewController implements Mi midiInputKeyLabel.setText(String.valueOf(mapper.getKey())); - Midi.getInstance().getMidiDevice().ifPresent(device -> - { + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { if (device.supportFeedback()) { // remove old Elements if (feedbackController != null) { @@ -147,6 +148,6 @@ public class MidiMapperViewController extends MapperViewController implements Mi } showFeedback(); } - }); + } } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java index 8a9fbce01763b5933bb0c16ae160f6e45e039f1d..a88ef435f74964545185c0beafc8511a630a063e 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/DoubleFeedbackViewController.java @@ -42,9 +42,8 @@ public class DoubleFeedbackViewController extends ContentViewController { super("doubleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle()); this.feedback = feedback; - Optional<Device> deviceOptional = Midi.getInstance().getMidiDevice(); - deviceOptional.ifPresent(device -> - { + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); if (colorDefault != null) { colorPreviewDefault.setFill(colorDefault.getPaint()); @@ -55,7 +54,7 @@ public class DoubleFeedbackViewController extends ContentViewController { colorPreviewEvent.setFill(colorPlay.getPaint()); setColorChooseButtonColor(colorPlay.getPaint(), colorChooseEventButton); } - }); + } } @Override @@ -75,8 +74,8 @@ public class DoubleFeedbackViewController extends ContentViewController { private void colorChooseButtonHandler(ActionEvent event) { if (colorChooser == null) { colorChooser = new PopOver(); - Midi.getInstance().getMidiDevice().ifPresent((device) -> - { + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); if (event.getSource() == colorChooseDefaultButton) { color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); @@ -106,7 +105,7 @@ public class DoubleFeedbackViewController extends ContentViewController { colorChooser.setCornerRadius(5); colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER); colorChooser.show((Node) event.getSource()); - }); + } } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java index b29ff5718a8d4d2e294b3f9d272588bbd686bdf4..ab0d032051d5d8424a34e9327cd4a4b11bc506e4 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/feedback/SingleFeedbackViewController.java @@ -38,15 +38,14 @@ public class SingleFeedbackViewController extends ContentViewController { super("singleFeedback", "de/tobias/playpad/assets/view/option/feedback/", PlayPadMain.getUiResourceBundle()); this.feedback = feedback; - Optional<Device> deviceOptional = Midi.getInstance().getMidiDevice(); - deviceOptional.ifPresent(device -> - { + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { DisplayableFeedbackColor colorDefault = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); if (colorDefault != null) { colorPreviewDefault.setFill(colorDefault.getPaint()); setColorChooseButtonColor(colorDefault.getPaint(), colorChooseDefaultButton); } - }); + } } @Override @@ -61,8 +60,8 @@ public class SingleFeedbackViewController extends ContentViewController { private void colorChooseButtonHandler(ActionEvent event) { if (colorChooser == null) { colorChooser = new PopOver(); - Midi.getInstance().getMidiDevice().ifPresent((device) -> - { + Device device = Midi.getInstance().getMidiDevice(); + if (device != null) { DisplayableFeedbackColor color = device.getColor(feedback.getValueForFeedbackMessage(FeedbackMessage.STANDARD)); ColorPickerView colorView = new ColorPickerView(color, device.getColors(), item -> @@ -83,7 +82,7 @@ public class SingleFeedbackViewController extends ContentViewController { colorChooser.setCornerRadius(5); colorChooser.setArrowLocation(ArrowLocation.LEFT_CENTER); colorChooser.show((Node) event.getSource()); - }); + } } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java index efedbd16a858c01b42deb8a4b802b7f3ac8483ef..72c74016cedbc502c0cc82188bbf68b18cfd252e 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/MidiTabViewController.java @@ -66,7 +66,7 @@ public class MidiTabViewController extends ProfileSettingsTabViewController { profilSettings.setMidiDeviceName(device); // UI Rückmeldung - if (midi.getInputDevice().isPresent()) { + if (midi.getInputDevice() != null) { showInfoMessage(Localization.getString(Strings.Info_Midi_Device_Connected, device)); } } catch (NullPointerException e) { diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java index 125317608174802768a73a3565090b5027fffc16..abb3d675c2bfb00e7fe6da7c1300dbae69070477 100644 --- a/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java +++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioCapability.java @@ -1,8 +1,10 @@ package de.tobias.playpad.audio; +import de.tobias.playpad.pad.conntent.play.Equalizeable; + public class AudioCapability { - public static final AudioCapability EQUALIZER = new AudioCapability("EQUALIZER", Equalizable.class); + public static final AudioCapability EQUALIZER = new AudioCapability("EQUALIZER", Equalizeable.class); public static final AudioCapability SOUNDCARD = new AudioCapability("SOUNDCARD", Soundcardable.class); private String name; diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioEqualizeable.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioEqualizeable.java new file mode 100644 index 0000000000000000000000000000000000000000..513ce84caf4d7c42fa8282501b8519495b14c3bc --- /dev/null +++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioEqualizeable.java @@ -0,0 +1,10 @@ +package de.tobias.playpad.audio; + +import javafx.scene.media.AudioEqualizer; + +/** + * Created by tobias on 01.01.17. + */ +public interface AudioEqualizeable { + AudioEqualizer getAudioEqualizer(); +} diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java index 202af60899bcbf573ad2a1347867829dd60c338f..842572a4b4713dd59e7b8d08a72218363ef7628e 100644 --- a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java +++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java @@ -6,7 +6,7 @@ import de.tobias.playpad.pad.conntent.PadContent; import javafx.beans.property.ReadOnlyObjectProperty; import javafx.util.Duration; -// Mögliche Interfaces: Equalizable +// Mögliche Interfaces: Equalizeable public abstract class AudioHandler { diff --git a/PlayWallCore/src/de/tobias/playpad/audio/Equalizable.java b/PlayWallCore/src/de/tobias/playpad/audio/Equalizable.java deleted file mode 100644 index d00c9d6280301a9b8a24bafc90967d7ca236ffed..0000000000000000000000000000000000000000 --- a/PlayWallCore/src/de/tobias/playpad/audio/Equalizable.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.tobias.playpad.audio; - -import javafx.scene.media.AudioEqualizer; - -public interface Equalizable extends AudioFeature { - - public AudioEqualizer getAudioEqualizer(); -} diff --git a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fading.java b/PlayWallCore/src/de/tobias/playpad/audio/Fade.java similarity index 77% rename from PlayWallCore/src/de/tobias/playpad/audio/fade/Fading.java rename to PlayWallCore/src/de/tobias/playpad/audio/Fade.java index e915ca85ec448be08fa8fc23c469a3bbbb121548..95ee85681dea7006a5fcba7dde21a221d8c5cc9c 100644 --- a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fading.java +++ b/PlayWallCore/src/de/tobias/playpad/audio/Fade.java @@ -1,24 +1,24 @@ -package de.tobias.playpad.audio.fade; +package de.tobias.playpad.audio; -import de.tobias.playpad.pad.conntent.play.IVolume; +import de.tobias.playpad.pad.conntent.play.FadeHandler; import javafx.animation.Transition; import javafx.util.Duration; /** - * Fading utils. + * Fade utils. * * @author tobias * @since 6.0.0 */ -public class Fading { +public class Fade { - private IVolume iVolume; + private FadeHandler fadeHandler; private Transition currentFadeTransition; private double velocity = 1; - public Fading(IVolume iVolume) { - this.iVolume = iVolume; + public Fade(FadeHandler fadeHandler) { + this.fadeHandler = fadeHandler; } public void fadeIn(Duration duration) { @@ -63,11 +63,11 @@ public class Fading { double diff = Math.abs(to - from); if (from < to) { // Fade In double fade = fadeInVolumeMultiplier(frac, velocity); - iVolume.setFadeLevel(from + fade * diff); + fadeHandler.setFadeLevel(from + fade * diff); } else { // Fade Out double fade = fadeOutVolumeMultiplier(frac, velocity); double newValue = to + fade * diff; - iVolume.setFadeLevel(newValue); + fadeHandler.setFadeLevel(newValue); } } }; @@ -81,11 +81,11 @@ public class Fading { currentFadeTransition.play(); } - protected double fadeInVolumeMultiplier(double time, double velocity) { + private double fadeInVolumeMultiplier(double time, double velocity) { return Math.pow(Math.E, velocity * (time - 1)) * time; } - protected double fadeOutVolumeMultiplier(double time, double velocity) { + private double fadeOutVolumeMultiplier(double time, double velocity) { return Math.pow(Math.E, -velocity * time) * (1 - time); } diff --git a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fadeable.java b/PlayWallCore/src/de/tobias/playpad/audio/fade/Fadeable.java deleted file mode 100644 index 1f888187677aa19a144dc837997efabf7b837f42..0000000000000000000000000000000000000000 --- a/PlayWallCore/src/de/tobias/playpad/audio/fade/Fadeable.java +++ /dev/null @@ -1,13 +0,0 @@ -package de.tobias.playpad.audio.fade; - -/** - * Schnittstelle, die für das Faden die Lautstärke in der Audio Implementierung setzt. - * - * @author tobias - * - * @since 6.0.0 - */ -public interface Fadeable { - - public void setVolume(double vol); -} diff --git a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java index 34868d79a351c4fcf102c23bdb58f598e4a6b240..2b81812afbba0a69cb375178e4f561503a6606e3 100644 --- a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java +++ b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java @@ -1,25 +1,16 @@ package de.tobias.playpad.midi; -import java.util.Optional; - -import javax.sound.midi.InvalidMidiDataException; -import javax.sound.midi.MidiDevice; -import javax.sound.midi.MidiDevice.Info; -import javax.sound.midi.MidiMessage; -import javax.sound.midi.MidiSystem; -import javax.sound.midi.MidiUnavailableException; -import javax.sound.midi.Receiver; -import javax.sound.midi.ShortMessage; -import javax.sound.midi.Transmitter; - import de.tobias.playpad.action.mididevice.Device; import de.tobias.playpad.midi.device.DeviceRegistry; -public class Midi { +import javax.sound.midi.*; +import javax.sound.midi.MidiDevice.Info; + +public class Midi implements AutoCloseable { - private Optional<MidiDevice> inputDevice = Optional.empty(); - private Optional<MidiDevice> outputDevice = Optional.empty(); - private Optional<Device> midiDeviceImpl = Optional.empty(); + private MidiDevice inputDevice; + private MidiDevice outputDevice; + private Device midiDeviceImpl; private MidiListener listener; @@ -32,7 +23,8 @@ public class Midi { return instance; } - private Midi() {} + private Midi() { + } public MidiListener getListener() { return listener; @@ -43,19 +35,18 @@ public class Midi { } public static Info[] getMidiDevices() { - MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); - return infos; + return MidiSystem.getMidiDeviceInfo(); } - public Optional<MidiDevice> getInputDevice() { + public MidiDevice getInputDevice() { return inputDevice; } - public Optional<MidiDevice> getOutputDevice() { + public MidiDevice getOutputDevice() { return outputDevice; } - public Optional<Device> getMidiDevice() { + public Device getMidiDevice() { return midiDeviceImpl; } @@ -80,69 +71,56 @@ public class Midi { setMidiDevice(input, output); } - public void setMidiDevice(MidiDevice.Info input, MidiDevice.Info output) throws MidiUnavailableException, IllegalArgumentException { - MidiDevice inputDevice = MidiSystem.getMidiDevice(input); - MidiDevice outputDevice = MidiSystem.getMidiDevice(output); + private void setMidiDevice(Info input, Info output) throws MidiUnavailableException, IllegalArgumentException { + MidiDevice newInputDevice = MidiSystem.getMidiDevice(input); + MidiDevice newOutputDevice = MidiSystem.getMidiDevice(output); - if (this.inputDevice.isPresent() && this.outputDevice.isPresent()) - if (this.inputDevice.get() == inputDevice && this.outputDevice.get() == outputDevice) - return; + if (newInputDevice == null && newOutputDevice == null) { + return; + } - this.inputDevice.ifPresent((device) -> - { - if (device.isOpen()) { - device.close(); - } - }); - this.outputDevice.ifPresent((device) -> - { - if (device.isOpen()) { - device.close(); - } - }); + if (this.inputDevice == newInputDevice && this.outputDevice == newOutputDevice) { + return; + } - if (inputDevice != null && outputDevice != null) { - this.inputDevice = Optional.of(inputDevice); - this.outputDevice = Optional.of(outputDevice); + // Close Old Devices + close(); - // Hier wird die DeviceImpl aufgerufen - try { - this.midiDeviceImpl = Optional.of(DeviceRegistry.getFactoryInstance().getDevice(input.getName())); - } catch (InstantiationException | IllegalAccessException e) { - e.printStackTrace(); - this.midiDeviceImpl = Optional.empty(); - } + this.inputDevice = newInputDevice; + this.outputDevice = newOutputDevice; - setupMidiDevice(); - } else { - this.inputDevice = Optional.empty(); - this.outputDevice = Optional.empty(); - this.midiDeviceImpl = Optional.empty(); + // Hier wird die DeviceImpl aufgerufen + try { + this.midiDeviceImpl = DeviceRegistry.getFactoryInstance().getDevice(input.getName()); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); } + setupMidiDevice(); } + private void setupMidiDevice() throws MidiUnavailableException { - if (inputDevice.isPresent()) { - Transmitter trans = inputDevice.get().getTransmitter(); + if (inputDevice != null) { + Transmitter trans = inputDevice.getTransmitter(); trans.setReceiver(new MidiInputReceiver()); // Belegt das Midi Gerät und macht es nutzbar - inputDevice.get().open(); - if (outputDevice.isPresent()) { - outputDevice.get().open(); + inputDevice.open(); + if (outputDevice != null) { + outputDevice.open(); } } } public void close() throws MidiUnavailableException { try { - if (inputDevice.isPresent()) { - inputDevice.get().getTransmitter().close(); - inputDevice.get().close(); + if (inputDevice != null) { + inputDevice.getTransmitter().close(); + inputDevice.close(); } - if (outputDevice.isPresent()) { - outputDevice.get().getReceiver().close(); - outputDevice.get().close(); + if (outputDevice != null) { + outputDevice.getReceiver().close(); + outputDevice.close(); } } catch (Exception e) { e.printStackTrace(); @@ -150,11 +128,11 @@ public class Midi { } public void sendMessage(int midiCommand, int midiKey, int midiVelocity) throws MidiUnavailableException, InvalidMidiDataException { - if (outputDevice.isPresent()) { + if (outputDevice != null) { if (midiCommand != 0) { ShortMessage message = new ShortMessage(midiCommand, midiKey, midiVelocity); // System.out.println("Send: " + Arrays.toString(message.getMessage())); - outputDevice.get().getReceiver().send(message, -1); + outputDevice.getReceiver().send(message, -1); } } } @@ -171,20 +149,18 @@ public class Midi { } @Override - public void close() {} + public void close() { + } + } public boolean isOpen() { - if (inputDevice.isPresent() && outputDevice.isPresent()) { - return inputDevice.get().isOpen() && outputDevice.get().isOpen(); - } else { - return false; - } + return inputDevice != null && outputDevice != null && inputDevice.isOpen() && outputDevice.isOpen(); } public void sendClearCommand() throws InvalidMidiDataException, MidiUnavailableException { - if (midiDeviceImpl.isPresent()) { - midiDeviceImpl.get().clearFeedback(); + if (midiDeviceImpl != null) { + midiDeviceImpl.clearFeedback(); } } } diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Equalizeable.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Equalizeable.java new file mode 100644 index 0000000000000000000000000000000000000000..354d9e7ee910936fd369711ef4cfbc5f5f2a4ce4 --- /dev/null +++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Equalizeable.java @@ -0,0 +1,9 @@ +package de.tobias.playpad.pad.conntent.play; + +import de.tobias.playpad.audio.AudioFeature; +import javafx.scene.media.AudioEqualizer; + +public interface Equalizeable extends AudioFeature { + + AudioEqualizer getAudioEqualizer(); +} diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/IVolume.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/FadeHandler.java similarity index 70% rename from PlayWallCore/src/de/tobias/playpad/pad/conntent/play/IVolume.java rename to PlayWallCore/src/de/tobias/playpad/pad/conntent/play/FadeHandler.java index f681dd20a0b8d43ef54e6554c3cbcd0d15133aab..82224d7e7bc547c0154151fc5b0f3f8a31058a1f 100644 --- a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/IVolume.java +++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/FadeHandler.java @@ -7,7 +7,7 @@ package de.tobias.playpad.pad.conntent.play; * * @since 6.0.0 */ -public interface IVolume { +public interface FadeHandler { - public void setFadeLevel(double level); + void setFadeLevel(double level); } diff --git a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java index 5fc99ff4392729b7922e0e5c734abfc6462c0e7b..32a59852e22934baf51e568cd65ed7469d8b2c67 100644 --- a/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java +++ b/PlayWallCore/src/de/tobias/playpad/pad/conntent/play/Fadeable.java @@ -3,9 +3,9 @@ package de.tobias.playpad.pad.conntent.play; public interface Fadeable { - public void fadeIn(); - - public void fadeOut(Runnable runnable); + void fadeIn(); + + void fadeOut(Runnable runnable); - public boolean isFading(); + boolean getFade(); } diff --git a/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java b/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java index 53ec30f551d93832e2605299af88c1e9820c011e..33085c617914d081d1cab3bd209cb7c902a0b7b3 100644 --- a/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java +++ b/PlayWallCore/src/de/tobias/playpad/plugin/AdvancedPlugin.java @@ -10,7 +10,7 @@ import de.tobias.updater.client.Updatable; */ public interface AdvancedPlugin extends net.xeoh.plugins.base.Plugin { - public Module getModule(); + Module getModule(); - public Updatable getUpdatable(); + Updatable getUpdatable(); } diff --git a/PlayWallCore/src/de/tobias/playpad/settings/Fade.java b/PlayWallCore/src/de/tobias/playpad/settings/Fade.java index 0a30c6032cd1fbd883998fedf3b833fc64b96202..20c80b3f97448380faef1d39f28b295b16f7418c 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/Fade.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/Fade.java @@ -6,7 +6,7 @@ import de.tobias.playpad.pad.PadSettings; import javafx.util.Duration; /** - * Einstellungen zum Fading, zusammengefasst in dieser Klasse. + * Einstellungen zum Fade, zusammengefasst in dieser Klasse. * * @author tobias * @@ -27,14 +27,14 @@ public class Fade { private boolean fadeOutStop; /** - * Erstellt ein neues Fading mit den Default Werten. (Fade Dauer: 0 sec) + * Erstellt ein neues Fade mit den Default Werten. (Fade Dauer: 0 sec) */ public Fade() { this(Duration.ZERO, Duration.ZERO); } /** - * Erstellt einen neues Fading mit Custom Zeiten und Default Einstellungen für Play, Pause, Stop. + * Erstellt einen neues Fade mit Custom Zeiten und Default Einstellungen für Play, Pause, Stop. * * @param fadeIn * Fade In Dauer @@ -46,7 +46,7 @@ public class Fade { } /** - * Erstellt ein Fading mit Custom Werten. + * Erstellt ein Fade mit Custom Werten. * * @param fadeIn * Fade In Dauer diff --git a/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java b/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java index e45b66e579f232a0f788d4b11fb0403642f60a95..abcf7d80b925ceef1921994421bddbd1bc835314 100644 --- a/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java +++ b/PluginEqualizer/src/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java @@ -6,7 +6,7 @@ import java.util.ResourceBundle; import org.dom4j.DocumentException; import de.tobias.playpad.PlayPadPlugin; -import de.tobias.playpad.audio.Equalizable; +import de.tobias.playpad.pad.conntent.play.Equalizeable; import de.tobias.playpad.equalizerplugin.main.Equalizer; import de.tobias.playpad.equalizerplugin.main.EqualizerPlugin; import de.tobias.playpad.pad.Pad; @@ -91,11 +91,11 @@ public class EqualizerPluginImpl implements EqualizerPlugin, WindowListener<IMai @Override public void onPlay(Pad pad) { PadContent content = pad.getContent(); - if (content != null && content instanceof Equalizable) { + if (content != null && content instanceof Equalizeable) { // Equalizer - Equalizable equalizable = (Equalizable) content; - AudioEqualizer audioEqualizer = equalizable.getAudioEqualizer(); + Equalizeable equalizeable = (Equalizeable) content; + AudioEqualizer audioEqualizer = equalizeable.getAudioEqualizer(); if (audioEqualizer != null) { for (EqualizerBand band : audioEqualizer.getBands()) { band.gainProperty().bind(Equalizer.getInstance().gainProperty((int) band.getBandwidth())); @@ -108,11 +108,11 @@ public class EqualizerPluginImpl implements EqualizerPlugin, WindowListener<IMai @Override public void onStop(Pad pad) { PadContent content = pad.getContent(); - if (content != null && content instanceof Equalizable) { + if (content != null && content instanceof Equalizeable) { // Equalizer - Equalizable equalizable = (Equalizable) content; - AudioEqualizer audioEqualizer = equalizable.getAudioEqualizer(); + Equalizeable equalizeable = (Equalizeable) content; + AudioEqualizer audioEqualizer = equalizeable.getAudioEqualizer(); if (audioEqualizer != null) { for (EqualizerBand band : audioEqualizer.getBands()) { band.gainProperty().bind(Equalizer.getInstance().gainProperty((int) band.getBandwidth()));