diff --git a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java
index 2c00a705d8001333b9b77b5d84ab6082bca51f04..8521b0bfcb04c1b977f7278aa82012f96e8cb08c 100644
--- a/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java
+++ b/PlayWallComponents/src/main/java/de/tobias/playpad/audio/TinyAudioHandler.java
@@ -37,7 +37,6 @@ public class TinyAudioHandler extends AudioHandler implements Soundcardable, See
 	public static final String SOUND_CARD = "SoundCard";
 
 	static final String TYPE = "TinyAudio";
-	public static final String NAME = "Java Audiostream";
 	private static final String MP3 = "mp3";
 
 	private static final int SLEEP_TIME_POSITION = 50;
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AVAudioPlayerBridge.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AVAudioPlayerBridge.java
index 10dfd45c3115c73d284249510433a10488b2fbca..d7ef064874a6dca1872d8707bc9f6e57dd13c797 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AVAudioPlayerBridge.java
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AVAudioPlayerBridge.java
@@ -14,9 +14,7 @@ public class AVAudioPlayerBridge {
 
 
 	static {
-		System.out.println("static init start");
 		initialize();
-		System.out.println("static init end");
 	}
 
 	private static native void initialize();
@@ -29,6 +27,8 @@ public class AVAudioPlayerBridge {
 
 	public native void play();
 
+	public native boolean isPlaying();
+
 	public native void pause();
 
 	public native void stop();
@@ -51,6 +51,14 @@ public class AVAudioPlayerBridge {
 
 	public native void setRate(double rate);
 
+	public static native AudioDevice[] getAudioDevices();
+
+	public native void setCurrentAudioDevice(String id);
+
+	/*
+	Delegate methods
+	 */
+
 	public void onPeakMeter(float left, float right) {
 		if (delegate != null) {
 			delegate.onPeakMeter(this, left, right);
@@ -69,10 +77,10 @@ public class AVAudioPlayerBridge {
 		}
 	}
 
-	private static NativeAudioDelegate delegate;
+	private NativeAudioDelegate delegate;
 
-	public static void setDelegate(NativeAudioDelegate delegate) {
-		AVAudioPlayerBridge.delegate = delegate;
+	public void setDelegate(NativeAudioDelegate delegate) {
+		this.delegate = delegate;
 	}
 
 	public interface NativeAudioDelegate {
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AudioDevice.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AudioDevice.java
new file mode 100644
index 0000000000000000000000000000000000000000..675ddc3e864883b3a85885e9728e607b17f7c1d8
--- /dev/null
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/AudioDevice.java
@@ -0,0 +1,45 @@
+package de.tobias.playpad.audio.mac;
+
+import java.util.Objects;
+
+public class AudioDevice {
+	private final String name;
+	private final String vendor;
+	private final String id;
+
+	public AudioDevice(String name, String vendor, String id) {
+		this.name = name;
+		this.vendor = vendor;
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public String getVendor() {
+		return vendor;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (!(o instanceof AudioDevice)) return false;
+		AudioDevice that = (AudioDevice) o;
+		return Objects.equals(name, that.name);
+	}
+
+	@Override
+	public int hashCode() {
+		return Objects.hash(name);
+	}
+
+	@Override
+	public String toString() {
+		return name;
+	}
+}
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandler.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandler.java
index 9a33317061549c6b3af503d6f21f7fd6218ce46a..0e94b7cbc3e8cea525918de0eed9cd6bf12a433f 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandler.java
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandler.java
@@ -3,18 +3,24 @@ package de.tobias.playpad.audio.mac;
 import de.thecodelabs.utils.threading.Worker;
 import de.tobias.playpad.audio.AudioHandler;
 import de.tobias.playpad.audio.Peakable;
+import de.tobias.playpad.audio.Soundcardable;
 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.profile.Profile;
 import javafx.application.Platform;
 import javafx.beans.property.*;
 import javafx.util.Duration;
 
 import java.nio.file.Path;
+import java.util.Optional;
+import java.util.stream.Stream;
 
-public class NativeAudioMacHandler extends AudioHandler implements Peakable, Seekable {
+public class NativeAudioMacHandler extends AudioHandler implements Peakable, Seekable, Soundcardable {
 
-	ObjectProperty<Duration> positionProperty;
+	public static final String SOUND_CARD = "SoundCardMac";
+
+	private ObjectProperty<Duration> positionProperty;
 	private ObjectProperty<Duration> durationProperty;
 	private boolean isLoaded;
 
@@ -66,7 +72,7 @@ public class NativeAudioMacHandler extends AudioHandler implements Peakable, See
 	}
 
 	@Override
-	public ReadOnlyObjectProperty<Duration> positionProperty() {
+	public ObjectProperty<Duration> positionProperty() {
 		return positionProperty;
 	}
 
@@ -96,6 +102,9 @@ public class NativeAudioMacHandler extends AudioHandler implements Peakable, See
 		{
 			isLoaded = bridge.load(paths[0].toString());
 			if (isLoaded) {
+				String name = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo().get(SOUND_CARD);
+				setOutputDevice(name);
+
 				Platform.runLater(() ->
 				{
 					durationProperty.set(Duration.seconds(bridge.getDuration()));
@@ -128,4 +137,19 @@ public class NativeAudioMacHandler extends AudioHandler implements Peakable, See
 	public double getAudioLevel(Channel channel) {
 		return audioLevelProperty(channel).get();
 	}
+
+	private AudioDevice[] devices;
+
+	@Override
+	public void setOutputDevice(String name) {
+		if (devices == null) {
+			devices = AVAudioPlayerBridge.getAudioDevices();
+		}
+
+		final Optional<String> first = Stream.of(devices)
+				.filter(device -> device.getName().equals(name))
+				.map(AudioDevice::getId)
+				.findFirst();
+		first.ifPresent(s -> bridge.setCurrentAudioDevice(s));
+	}
 }
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandlerFactory.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandlerFactory.java
index 045740ee98513966308ee231d4e8329b7f2a52e4..732b79ac4f6f405700410fc48ba279b620e235d0 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandlerFactory.java
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/NativeAudioMacHandlerFactory.java
@@ -3,72 +3,51 @@ package de.tobias.playpad.audio.mac;
 import de.tobias.playpad.audio.AudioCapability;
 import de.tobias.playpad.audio.AudioHandler;
 import de.tobias.playpad.audio.AudioHandlerFactory;
-import de.tobias.playpad.audio.Peakable.Channel;
-import de.tobias.playpad.audio.mac.AVAudioPlayerBridge.NativeAudioDelegate;
-import de.tobias.playpad.pad.PadStatus;
+import de.tobias.playpad.audio.mac.delegate.AVAudioPlayerBridgeDelegate;
+import de.tobias.playpad.audio.mac.settings.NativeAudioMacSettingsViewController;
+import de.tobias.playpad.audio.windows.NativeAudioWinHandler;
 import de.tobias.playpad.pad.content.PadContent;
 import de.tobias.playpad.viewcontroller.AudioHandlerViewController;
-import javafx.util.Duration;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
-public class NativeAudioMacHandlerFactory extends AudioHandlerFactory implements NativeAudioDelegate {
+public class NativeAudioMacHandlerFactory extends AudioHandlerFactory {
 
 	private List<NativeAudioMacHandler> handlers = new ArrayList<>();
+	private AVAudioPlayerBridgeDelegate bridgeDelegate = new AVAudioPlayerBridgeDelegate(this);
 
-	private Optional<NativeAudioMacHandler> getHandlerByBridge(AVAudioPlayerBridge bridge) {
+	public Optional<NativeAudioMacHandler> getHandlerByBridge(AVAudioPlayerBridge bridge) {
 		return handlers.stream().filter(handler -> handler.getBridge().equals(bridge)).findFirst();
 	}
 
 	public NativeAudioMacHandlerFactory(String type) {
 		super(type);
-		AVAudioPlayerBridge.setDelegate(this);
 	}
 
 	@Override
 	public AudioHandler createAudioHandler(PadContent content) {
 		NativeAudioMacHandler nativeAudioMacHandler = new NativeAudioMacHandler(content);
+		nativeAudioMacHandler.getBridge().setDelegate(bridgeDelegate);
 		handlers.add(nativeAudioMacHandler);
 		return nativeAudioMacHandler;
 	}
 
-	@Override
-	public void onFinish(AVAudioPlayerBridge bridge) {
-		Optional<NativeAudioMacHandler> nativeAudioMacHandler = getHandlerByBridge(bridge);
-		nativeAudioMacHandler.ifPresent(handler -> {
-			PadContent content = handler.getContent();
-			if (content != null) {
-				content.getPad().setStatus(PadStatus.STOP);
-			}
-		});
-	}
-
-	@Override
-	public void onPositionChanged(AVAudioPlayerBridge bridge, double position) {
-		Optional<NativeAudioMacHandler> nativeAudioMacHandler = getHandlerByBridge(bridge);
-		nativeAudioMacHandler.ifPresent(audioMacHandler -> {
-			audioMacHandler.positionProperty.set(Duration.seconds(position));
-		});
-	}
-
-	@Override
-	public void onPeakMeter(AVAudioPlayerBridge bridge, float left, float right) {
-		Optional<NativeAudioMacHandler> nativeAudioMacHandler = getHandlerByBridge(bridge);
-		nativeAudioMacHandler.ifPresent(handler -> {
-			handler.audioLevelProperty(Channel.LEFT).set(left);
-			handler.audioLevelProperty(Channel.RIGHT).set(right);
-		});
-	}
-
 	@Override
 	public boolean isFeatureAvailable(AudioCapability audioCapability) {
+		for (Class<?> clazz : NativeAudioWinHandler.class.getInterfaces()) {
+			if (clazz.equals(audioCapability.getAudioFeature()))
+				return true;
+		}
 		return false;
 	}
 
 	@Override
 	public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapability) {
+		if (audioCapability == AudioCapability.SOUNDCARD) {
+			return new NativeAudioMacSettingsViewController();
+		}
 		return null;
 	}
 }
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/delegate/AVAudioPlayerBridgeDelegate.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/delegate/AVAudioPlayerBridgeDelegate.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b6ec1af52a3b785e1428c8b24234bcadd981267
--- /dev/null
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/delegate/AVAudioPlayerBridgeDelegate.java
@@ -0,0 +1,48 @@
+package de.tobias.playpad.audio.mac.delegate;
+
+import de.tobias.playpad.audio.Peakable;
+import de.tobias.playpad.audio.mac.AVAudioPlayerBridge;
+import de.tobias.playpad.audio.mac.NativeAudioMacHandler;
+import de.tobias.playpad.audio.mac.NativeAudioMacHandlerFactory;
+import de.tobias.playpad.pad.PadStatus;
+import de.tobias.playpad.pad.content.PadContent;
+import javafx.util.Duration;
+
+import java.util.Optional;
+
+public class AVAudioPlayerBridgeDelegate implements AVAudioPlayerBridge.NativeAudioDelegate {
+
+	private NativeAudioMacHandlerFactory factory;
+
+	public AVAudioPlayerBridgeDelegate(NativeAudioMacHandlerFactory factory) {
+		this.factory = factory;
+	}
+
+	@Override
+	public void onFinish(AVAudioPlayerBridge bridge) {
+		Optional<NativeAudioMacHandler> nativeAudioMacHandler = factory.getHandlerByBridge(bridge);
+		nativeAudioMacHandler.ifPresent(handler -> {
+			PadContent content = handler.getContent();
+			if (content != null) {
+				content.getPad().setStatus(PadStatus.STOP);
+			}
+		});
+	}
+
+	@Override
+	public void onPositionChanged(AVAudioPlayerBridge bridge, double position) {
+		Optional<NativeAudioMacHandler> nativeAudioMacHandler = factory.getHandlerByBridge(bridge);
+		nativeAudioMacHandler.ifPresent(audioMacHandler -> {
+			audioMacHandler.positionProperty().set(Duration.seconds(position));
+		});
+	}
+
+	@Override
+	public void onPeakMeter(AVAudioPlayerBridge bridge, float left, float right) {
+		Optional<NativeAudioMacHandler> nativeAudioMacHandler = factory.getHandlerByBridge(bridge);
+		nativeAudioMacHandler.ifPresent(handler -> {
+			handler.audioLevelProperty(Peakable.Channel.LEFT).set(left);
+			handler.audioLevelProperty(Peakable.Channel.RIGHT).set(right);
+		});
+	}
+}
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/settings/NativeAudioMacSettingsViewController.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/settings/NativeAudioMacSettingsViewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..34f777e58f08790e8577a8d41a1b574694412729
--- /dev/null
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/mac/settings/NativeAudioMacSettingsViewController.java
@@ -0,0 +1,123 @@
+package de.tobias.playpad.audio.mac.settings;
+
+import de.thecodelabs.utils.application.App;
+import de.thecodelabs.utils.application.ApplicationUtils;
+import de.thecodelabs.utils.application.container.PathType;
+import de.thecodelabs.utils.ui.icon.FontAwesomeType;
+import de.thecodelabs.utils.ui.icon.FontIcon;
+import de.tobias.playpad.audio.mac.AVAudioPlayerBridge;
+import de.tobias.playpad.audio.mac.AudioDevice;
+import de.tobias.playpad.audio.mac.NativeAudioMacHandler;
+import de.tobias.playpad.profile.Profile;
+import de.tobias.playpad.profile.ProfileSettings;
+import de.tobias.playpad.viewcontroller.AudioHandlerViewController;
+import javafx.application.Platform;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+
+import java.nio.file.Path;
+
+public class NativeAudioMacSettingsViewController extends AudioHandlerViewController implements AVAudioPlayerBridge.NativeAudioDelegate {
+
+	private static final String TEST_SOUND_WAV = "Test-Sound.wav";
+
+	@FXML
+	private ComboBox<AudioDevice> soundCardComboBox;
+	@FXML
+	private Button testButton;
+
+	private AVAudioPlayerBridge audioPlayer = new AVAudioPlayerBridge();
+
+	private boolean isChanged;
+
+	public NativeAudioMacSettingsViewController() {
+		super("namacSettings", "mac", null);
+		final ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
+
+		testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY));
+
+		// load test sound
+		final App app = ApplicationUtils.getApplication();
+		Path file = app.getPath(PathType.RESOURCES, TEST_SOUND_WAV);
+		app.getClasspathResource(TEST_SOUND_WAV).copy(PathType.RESOURCES, TEST_SOUND_WAV);
+
+		audioPlayer.setDelegate(this);
+		audioPlayer.load(file.toString());
+
+		soundCardComboBox.getItems().setAll(AVAudioPlayerBridge.getAudioDevices());
+
+		String name = (String) profileSettings.getAudioUserInfo().get(NativeAudioMacHandler.SOUND_CARD);
+		for (AudioDevice device : AVAudioPlayerBridge.getAudioDevices()) {
+			if (device.getName().equals(name)) {
+				soundCardComboBox.getSelectionModel().select(device);
+				break;
+			}
+		}
+
+		// ersten Auswählen wenn keiner ausgewählt ist, damit keine Probleme
+		// auftreten da keiene Soundkarte ausgewäht ist
+		if (soundCardComboBox.getSelectionModel().getSelectedItem() == null) {
+			soundCardComboBox.getSelectionModel().selectFirst();
+		}
+
+		soundCardComboBox.getSelectionModel().selectedItemProperty().addListener((a, b, c) -> {
+			if (audioPlayer != null) {
+				audioPlayer.stop();
+				testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY));
+			}
+
+			isChanged = true;
+			profileSettings.getAudioUserInfo().put(NativeAudioMacHandler.SOUND_CARD, c.getName());
+		});
+	}
+
+	@Override
+	public void onClose() {
+		if (audioPlayer != null) {
+			audioPlayer.stop();
+			audioPlayer = null;
+		}
+	}
+
+	@FXML
+	private void testButtonHandler(ActionEvent event) {
+		if (audioPlayer == null) {
+			return;
+		}
+
+		if (audioPlayer.isPlaying()) {
+			audioPlayer.stop();
+			testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY));
+		} else {
+			audioPlayer.setCurrentAudioDevice(soundCardComboBox.getValue().getId());
+			audioPlayer.play();
+			testButton.setGraphic(new FontIcon(FontAwesomeType.STOP));
+		}
+	}
+
+	@Override
+	public boolean isChanged() {
+		return isChanged;
+	}
+
+	/*
+	AVAudioPlayerBridge.NativeAudioDelegate
+	 */
+
+	@Override
+	public void onFinish(AVAudioPlayerBridge bridge) {
+		Platform.runLater(() -> testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY)));
+	}
+
+	@Override
+	public void onPeakMeter(AVAudioPlayerBridge bridge, float left, float right) {
+
+	}
+
+	@Override
+	public void onPositionChanged(AVAudioPlayerBridge bridge, double position) {
+
+	}
+}
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandler.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandler.java
index c38de5f01d1d07f4eeb215578e36dea20d39ed32..54bc85c696df5c89e8203f87de4a60dea74b6e42 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandler.java
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandler.java
@@ -162,7 +162,7 @@ public class NativeAudioWinHandler extends AudioHandler implements Soundcardable
 		audioHandler.load(paths[0].toString());
 
 		String name = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo().get(NativeAudioWinHandler.SOUND_CARD);
-		audioHandler.setDevice(name);
+		setOutputDevice(name);
 
 		Platform.runLater(() ->
 		{
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandlerFactory.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandlerFactory.java
index 2b6d098641335918c5453cc51f1bc2cfbb04b495..ab3f5a0680165e2649da042507c9d6a0c1c23e38 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandlerFactory.java
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinHandlerFactory.java
@@ -27,9 +27,9 @@ public class NativeAudioWinHandlerFactory extends AudioHandlerFactory {
 	}
 
 	@Override
-	public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility) {
-		if (audioCapablility == AudioCapability.SOUNDCARD) {
-			return new NativeAudioSettingsViewController();
+	public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapability) {
+		if (audioCapability == AudioCapability.SOUNDCARD) {
+			return new NativeAudioWinSettingsViewController();
 		}
 		return null;
 	}
diff --git a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioSettingsViewController.java b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinSettingsViewController.java
similarity index 86%
rename from PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioSettingsViewController.java
rename to PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinSettingsViewController.java
index e1c0b265caae0a6a8c0e32ade092943accc4c334..e38eb3dcbbb3c7b61cfa8dd8eff4816fb54051c0 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioSettingsViewController.java
+++ b/PlayWallPluginNativeAudio/src/main/java/de/tobias/playpad/audio/windows/NativeAudioWinSettingsViewController.java
@@ -7,6 +7,7 @@ import de.thecodelabs.utils.threading.Worker;
 import de.thecodelabs.utils.ui.icon.FontAwesomeType;
 import de.thecodelabs.utils.ui.icon.FontIcon;
 import de.tobias.playpad.profile.Profile;
+import de.tobias.playpad.profile.ProfileSettings;
 import de.tobias.playpad.viewcontroller.AudioHandlerViewController;
 import javafx.application.Platform;
 import javafx.event.ActionEvent;
@@ -17,7 +18,7 @@ import nativeaudio.NativeAudio;
 
 import java.nio.file.Path;
 
-public class NativeAudioSettingsViewController extends AudioHandlerViewController {
+public class NativeAudioWinSettingsViewController extends AudioHandlerViewController {
 
 	private static final String TEST_SOUND_WAV = "Test-Sound.wav";
 
@@ -30,15 +31,15 @@ public class NativeAudioSettingsViewController extends AudioHandlerViewControlle
 
 	private NativeAudio audioPlayer;
 
-	NativeAudioSettingsViewController() {
+	NativeAudioWinSettingsViewController() {
 		super("nawinSettings", "win", null);
+		final ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
 
 		testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY));
 
 		soundCardComboBox.getItems().setAll(NativeAudio.getDevices());
 
-		String name = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo()
-				.get(NativeAudioWinHandler.SOUND_CARD);
+		String name = (String) profileSettings.getAudioUserInfo().get(NativeAudioWinHandler.SOUND_CARD);
 		for (String info : NativeAudio.getDevices()) {
 			if (info.equals(name)) {
 				soundCardComboBox.getSelectionModel().select(info);
@@ -60,7 +61,7 @@ public class NativeAudioSettingsViewController extends AudioHandlerViewControlle
 			}
 
 			isChanged = true;
-			Profile.currentProfile().getProfileSettings().getAudioUserInfo().put(NativeAudioWinHandler.SOUND_CARD, c);
+			profileSettings.getAudioUserInfo().put(NativeAudioWinHandler.SOUND_CARD, c);
 		});
 	}
 
diff --git a/PlayWallPluginNativeAudio/src/main/java/de_tobias_playpad_audio_mac_AVAudioPlayerBridge.h b/PlayWallPluginNativeAudio/src/main/java/de_tobias_playpad_audio_mac_AVAudioPlayerBridge.h
index 755158d75fa147d5222abf4134764a19bad7ad64..1c09fe03d64db80ba9d2a9c6cebc1c52edb6ec11 100644
--- a/PlayWallPluginNativeAudio/src/main/java/de_tobias_playpad_audio_mac_AVAudioPlayerBridge.h
+++ b/PlayWallPluginNativeAudio/src/main/java/de_tobias_playpad_audio_mac_AVAudioPlayerBridge.h
@@ -31,6 +31,14 @@ JNIEXPORT void JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_init
 JNIEXPORT void JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_play
   (JNIEnv *, jobject);
 
+/*
+ * Class:     de_tobias_playpad_audio_mac_AVAudioPlayerBridge
+ * Method:    isPlaying
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_isPlaying
+  (JNIEnv *, jobject);
+
 /*
  * Class:     de_tobias_playpad_audio_mac_AVAudioPlayerBridge
  * Method:    pause
@@ -119,6 +127,22 @@ JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_g
 JNIEXPORT void JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_setRate
   (JNIEnv *, jobject, jdouble);
 
+/*
+ * Class:     de_tobias_playpad_audio_mac_AVAudioPlayerBridge
+ * Method:    getAudioDevices
+ * Signature: ()[Lde/tobias/playpad/audio/mac/AudioDevice;
+ */
+JNIEXPORT jobjectArray JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_getAudioDevices
+  (JNIEnv *, jclass);
+
+/*
+ * Class:     de_tobias_playpad_audio_mac_AVAudioPlayerBridge
+ * Method:    setCurrentAudioDevice
+ * Signature: (Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_audio_mac_AVAudioPlayerBridge_setCurrentAudioDevice
+  (JNIEnv *, jobject, jstring);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib b/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib
index 262f9b8506783c5ed2d22ce93436bb63a0df1bf7..3b3e3996c854c711047b590c7c716ad86583be71 100755
Binary files a/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib and b/PlayWallPluginNativeAudio/src/main/resources/mac/libNativeAudio.dylib differ
diff --git a/PlayWallPluginNativeAudio/src/main/resources/mac/namacSettings.fxml b/PlayWallPluginNativeAudio/src/main/resources/mac/namacSettings.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..c52a5222d7ea4aa039054c722581ee69329807e6
--- /dev/null
+++ b/PlayWallPluginNativeAudio/src/main/resources/mac/namacSettings.fxml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.layout.HBox?>
+<HBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
+    <children>
+        <ComboBox fx:id="soundCardComboBox" layoutX="118.0" layoutY="14.0" prefHeight="26.0" prefWidth="241.0"/>
+        <Button fx:id="testButton" layoutX="372.0" layoutY="14.0" mnemonicParsing="false"
+                onAction="#testButtonHandler"/>
+    </children>
+</HBox>