diff --git a/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java b/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java
index 24a4014d4e2cee496016d9c95c190ba06f01464b..a3b74901b382f7546931d054a80fe7341bebed91 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/pad/content/AudioContent.java
@@ -6,10 +6,7 @@ import de.tobias.playpad.audio.AudioHandler;
 import de.tobias.playpad.audio.AudioRegistry;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
-import de.tobias.playpad.pad.content.play.Durationable;
-import de.tobias.playpad.pad.content.play.Equalizeable;
-import de.tobias.playpad.pad.content.play.Pauseable;
-import de.tobias.playpad.pad.content.play.Seekable;
+import de.tobias.playpad.pad.content.play.*;
 import de.tobias.playpad.pad.fade.Fade;
 import de.tobias.playpad.pad.fade.FadeDelegate;
 import de.tobias.playpad.pad.fade.Fadeable;
@@ -26,7 +23,8 @@ import javafx.util.Duration;
 import java.nio.file.Files;
 import java.nio.file.Path;
 
-public class AudioContent extends PadContent implements Pauseable, Durationable, Fadeable, Equalizeable, FadeDelegate, Seekable {
+public class AudioContent extends PadContent implements Pauseable, Durationable, Fadeable,
+		Equalizeable, FadeDelegate, Seekable, SpeedAdjustable {
 
 	private final String type;
 
@@ -36,6 +34,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 	private ObjectProperty<Duration> positionProperty = new SimpleObjectProperty<>();
 
 	private ChangeListener<Number> volumeListener;
+	private ChangeListener<Number> rateListener;
 
 	private Fade fade;
 
@@ -45,7 +44,8 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 		fade = new Fade(this);
 
 		// Pad Volume Listener
-		volumeListener = (a, b, c) -> updateVolume();
+		volumeListener = (a, oldValue, newValue) -> updateVolume();
+		rateListener = (a, oldValue, newValue) -> setCurrentRate(newValue.doubleValue());
 	}
 
 	@Override
@@ -83,6 +83,21 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 		}
 	}
 
+	@Override
+	public double currentRate() {
+		if (audioHandler instanceof SpeedAdjustable) {
+			return ((SpeedAdjustable) audioHandler).currentRate();
+		}
+		return -1;
+	}
+
+	@Override
+	public void setCurrentRate(double rate) {
+		if (audioHandler instanceof SpeedAdjustable) {
+			((SpeedAdjustable) audioHandler).setCurrentRate(rate);
+		}
+	}
+
 	@Override
 	public void fadeIn() {
 		Pad pad = getPad();
@@ -171,6 +186,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 			positionProperty.bind(audioHandler.positionProperty());
 
 			getPad().getPadSettings().volumeProperty().addListener(volumeListener);
+			getPad().getPadSettings().speedProperty().addListener(rateListener);
 
 			updateVolume();
 		} else {
@@ -194,6 +210,7 @@ public class AudioContent extends PadContent implements Pauseable, Durationable,
 		positionProperty.unbind();
 
 		getPad().getPadSettings().volumeProperty().removeListener(volumeListener);
+		getPad().getPadSettings().speedProperty().removeListener(rateListener);
 
 		if (audioHandler != null)
 			audioHandler.unloadMedia();
diff --git a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/JavaFXAudioHandler.java b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/JavaFXAudioHandler.java
index 974db0addbda438f953c296172fd6a52c40a90e0..23dc9515b36df09919a02808a16d91ada58aa840 100644
--- a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/JavaFXAudioHandler.java
+++ b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/JavaFXAudioHandler.java
@@ -3,6 +3,7 @@ package de.tobias.playpad.audio;
 import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.pad.content.PadContent;
 import de.tobias.playpad.pad.content.play.Seekable;
+import de.tobias.playpad.pad.content.play.SpeedAdjustable;
 import javafx.application.Platform;
 import javafx.beans.property.*;
 import javafx.scene.media.AudioEqualizer;
@@ -12,7 +13,7 @@ import javafx.util.Duration;
 
 import java.nio.file.Path;
 
-public class JavaFXAudioHandler extends AudioHandler implements AudioEqualizeable, Seekable {
+public class JavaFXAudioHandler extends AudioHandler implements AudioEqualizeable, Seekable, SpeedAdjustable {
 
 	private Media media;
 	private MediaPlayer player;
@@ -83,6 +84,16 @@ public class JavaFXAudioHandler extends AudioHandler implements AudioEqualizeabl
 		}
 	}
 
+	@Override
+	public double currentRate() {
+		return player.getCurrentRate();
+	}
+
+	@Override
+	public void setCurrentRate(double rate) {
+		player.setRate(rate);
+	}
+
 	@Override
 	public boolean isMediaLoaded() {
 		return player != null;
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
index 820a217cc7e59d80699070df74c40d83e7605066..b5dd8aacb8747da2a2722a3f12f3cf091eb6c115 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
@@ -29,6 +29,7 @@ import javafx.collections.ObservableList;
 import org.dom4j.Element;
 
 import java.nio.file.Path;
+import java.util.Objects;
 import java.util.UUID;
 
 /**
@@ -601,7 +602,7 @@ public class Pad implements Cloneable {
 
 		Pad pad = (Pad) o;
 
-		return uuid != null ? uuid.equals(pad.uuid) : pad.uuid == null;
+		return Objects.equals(uuid, pad.uuid);
 	}
 
 	// Clone
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java
index e1efe36477382090705316672bffa9f56d437152..08ee050db8d224474e960ed54b41b6bc64479523 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java
@@ -25,6 +25,7 @@ public class PadSettings implements Cloneable {
 
 	// Settings
 	private DoubleProperty volumeProperty = new SimpleDoubleProperty(1.0);
+	private DoubleProperty speedProperty = new SimpleDoubleProperty(1.0);
 	private BooleanProperty loopProperty = new SimpleBooleanProperty(false);
 	private ObjectProperty<TimeMode> timeModeProperty = new SimpleObjectProperty<>();
 	private ObjectProperty<Fade> fadeProperty = new SimpleObjectProperty<>();
@@ -34,7 +35,6 @@ public class PadSettings implements Cloneable {
 	private ModernCartDesign design;
 
 	private HashMap<TriggerPoint, Trigger> triggers = new HashMap<>();
-
 	private HashMap<String, Object> customSettings = new HashMap<>();
 
 	// Sync Listener
@@ -72,6 +72,19 @@ public class PadSettings implements Cloneable {
 		return volumeProperty;
 	}
 
+	public double getSpeed() {
+		return speedProperty.get();
+	}
+
+	public void setSpeed(double rate) {
+		this.speedProperty.set(rate);
+	}
+
+	public DoubleProperty speedProperty() {
+		return speedProperty;
+	}
+
+
 	public boolean isLoop() {
 		return loopProperty.get();
 	}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/play/SpeedAdjustable.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/play/SpeedAdjustable.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c5ce48bd20dbb058b82ab39d6fb08c68bf9185f
--- /dev/null
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/play/SpeedAdjustable.java
@@ -0,0 +1,7 @@
+package de.tobias.playpad.pad.content.play;
+
+public interface SpeedAdjustable {
+	double currentRate();
+
+	void setCurrentRate(double rate);
+}
diff --git a/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib b/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib
index b6356971661d037303822711c6430b6a7dc38c96..ae1a1c469a26c1ae31c1a13001120d47baaa6a3f 100755
Binary files a/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib and b/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib differ