diff --git a/PlayWallNativeWin/.classpath b/PlayWallNativeWin/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..709ee3891c7490ab21accfb7f66c61054b14fbe7
--- /dev/null
+++ b/PlayWallNativeWin/.classpath
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Plugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/YML"/>
+	<classpathentry kind="lib" path="j4n/jni4net.j-0.8.8.0.jar"/>
+	<classpathentry kind="lib" path="j4n/NativeAudio.j4n.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/PlayWallCore"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/libUtils"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/Updater"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/PlayWallNativeWin/.gitignore b/PlayWallNativeWin/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53
--- /dev/null
+++ b/PlayWallNativeWin/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/PlayWallNativeWin/.project b/PlayWallNativeWin/.project
new file mode 100644
index 0000000000000000000000000000000000000000..f859d19b4ac27ba37188d2fb96f24ea765eccd5f
--- /dev/null
+++ b/PlayWallNativeWin/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>PlayWallNativeWin</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/PlayWallNativeWin/.settings/org.eclipse.jdt.core.prefs b/PlayWallNativeWin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf
--- /dev/null
+++ b/PlayWallNativeWin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/PlayWallNativeWin/j4n/NAudio.dll b/PlayWallNativeWin/j4n/NAudio.dll
new file mode 100644
index 0000000000000000000000000000000000000000..9dd5ae7de34d2bc2dcf934eb027fa60d20237c3d
Binary files /dev/null and b/PlayWallNativeWin/j4n/NAudio.dll differ
diff --git a/PlayWallNativeWin/j4n/NativeAudio.dll b/PlayWallNativeWin/j4n/NativeAudio.dll
new file mode 100644
index 0000000000000000000000000000000000000000..e85f118b0af0c8c9a03777d25938e76a635adcb1
Binary files /dev/null and b/PlayWallNativeWin/j4n/NativeAudio.dll differ
diff --git a/PlayWallNativeWin/j4n/NativeAudio.j4n.dll b/PlayWallNativeWin/j4n/NativeAudio.j4n.dll
new file mode 100644
index 0000000000000000000000000000000000000000..7b2db090abeaaf57e7cd652f28caf10bfbfa1d56
Binary files /dev/null and b/PlayWallNativeWin/j4n/NativeAudio.j4n.dll differ
diff --git a/PlayWallNativeWin/j4n/NativeAudio.j4n.jar b/PlayWallNativeWin/j4n/NativeAudio.j4n.jar
new file mode 100644
index 0000000000000000000000000000000000000000..8f888bc0ebad18acd661a0d0ea694791d69778a4
Binary files /dev/null and b/PlayWallNativeWin/j4n/NativeAudio.j4n.jar differ
diff --git a/PlayWallNativeWin/j4n/NativeAudio.proxygen.xml b/PlayWallNativeWin/j4n/NativeAudio.proxygen.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8e339777e6fbcaf610050cca93491a9dfdabd518
--- /dev/null
+++ b/PlayWallNativeWin/j4n/NativeAudio.proxygen.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jni4net-proxygen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jni4net.sf.net/0.8.8.0/toolConfig.xsd">
+  <TargetDirJvm>.\jvm</TargetDirJvm>
+  <TargetDirClr>.\clr</TargetDirClr>
+  <AssemblyReference Assembly="NativeAudio.dll" Generate="true" />
+</jni4net-proxygen>
\ No newline at end of file
diff --git a/PlayWallNativeWin/j4n/build.cmd b/PlayWallNativeWin/j4n/build.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..4c2f0e843e45bfa61339ae55eb6cc142bd066db3
--- /dev/null
+++ b/PlayWallNativeWin/j4n/build.cmd
@@ -0,0 +1,21 @@
+@echo off
+if not exist target mkdir target
+if not exist target\classes mkdir target\classes
+
+
+echo compile classes
+javac -nowarn -d target\classes -sourcepath jvm -cp "d:\programmieren\git-java\playwall\playwallnativewin\j4n\jni4net-0.8.8.0-bin\lib\jni4net.j-0.8.8.0.jar"; "jvm\nativeaudio\LoopStream.java" "jvm\nativeaudio\NativeAudio.java" 
+IF %ERRORLEVEL% NEQ 0 goto end
+
+
+echo NativeAudio.j4n.jar 
+jar cvf NativeAudio.j4n.jar  -C target\classes "nativeaudio\LoopStream.class"  -C target\classes "nativeaudio\NativeAudio.class"  > nul 
+IF %ERRORLEVEL% NEQ 0 goto end
+
+
+echo NativeAudio.j4n.dll 
+csc /nologo /warn:0 /t:library /out:NativeAudio.j4n.dll /recurse:clr\*.cs  /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\NativeAudio.dll" /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\jni4net-0.8.8.0-bin\lib\jni4net.n-0.8.8.0.dll"
+IF %ERRORLEVEL% NEQ 0 goto end
+
+
+:end
diff --git a/PlayWallNativeWin/j4n/clr/nativeaudio/LoopStream.generated.cs b/PlayWallNativeWin/j4n/clr/nativeaudio/LoopStream.generated.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cf1228582af0be39daa9c6762b55c7506df0e570
--- /dev/null
+++ b/PlayWallNativeWin/j4n/clr/nativeaudio/LoopStream.generated.cs
@@ -0,0 +1,89 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by jni4net. See http://jni4net.sourceforge.net/ 
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace NativeAudio {
+    
+    
+    #region Component Designer generated code 
+    public partial class LoopStream_ {
+        
+        public static global::java.lang.Class _class {
+            get {
+                return global::NativeAudio.@__LoopStream.staticClass;
+            }
+        }
+    }
+    #endregion
+    
+    #region Component Designer generated code 
+    [global::net.sf.jni4net.attributes.JavaProxyAttribute(typeof(global::NativeAudio.LoopStream), typeof(global::NativeAudio.LoopStream_))]
+    [global::net.sf.jni4net.attributes.ClrWrapperAttribute(typeof(global::NativeAudio.LoopStream), typeof(global::NativeAudio.LoopStream_))]
+    internal sealed partial class @__LoopStream : global::java.lang.Object {
+        
+        internal new static global::java.lang.Class staticClass;
+        
+        private @__LoopStream(global::net.sf.jni4net.jni.JNIEnv @__env) : 
+                base(@__env) {
+        }
+        
+        private static void InitJNI(global::net.sf.jni4net.jni.JNIEnv @__env, java.lang.Class @__class) {
+            global::NativeAudio.@__LoopStream.staticClass = @__class;
+        }
+        
+        private static global::System.Collections.Generic.List<global::net.sf.jni4net.jni.JNINativeMethod> @__Init(global::net.sf.jni4net.jni.JNIEnv @__env, global::java.lang.Class @__class) {
+            global::System.Type @__type = typeof(__LoopStream);
+            global::System.Collections.Generic.List<global::net.sf.jni4net.jni.JNINativeMethod> methods = new global::System.Collections.Generic.List<global::net.sf.jni4net.jni.JNINativeMethod>();
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "getEnableLooping", "EnableLooping0", "()Z"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "setEnableLooping", "EnableLooping1", "(Z)V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "__ctorLoopStream0", "__ctorLoopStream0", "(Lnet/sf/jni4net/inj/IClrProxy;Lsystem/io/Stream;)V"));
+            return methods;
+        }
+        
+        private static bool EnableLooping0(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()Z
+            // ()Z
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            bool @__return = default(bool);
+            try {
+            global::NativeAudio.LoopStream @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.LoopStream>(@__env, @__obj);
+            @__return = ((bool)(@__real.EnableLooping));
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+            return @__return;
+        }
+        
+        private static void EnableLooping1(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj, bool value) {
+            // (Z)V
+            // (Z)V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.LoopStream @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.LoopStream>(@__env, @__obj);
+            @__real.EnableLooping = value;
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static void @__ctorLoopStream0(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__class, global::net.sf.jni4net.utils.JniLocalHandle @__obj, global::net.sf.jni4net.utils.JniLocalHandle sourceStream) {
+            // (Lsystem/io/Stream;)V
+            // (LNAudio/Wave/WaveStream;)V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.LoopStream @__real = new global::NativeAudio.LoopStream(global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NAudio.Wave.WaveStream>(@__env, sourceStream));
+            global::net.sf.jni4net.utils.Convertor.InitProxy(@__env, @__obj, @__real);
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        new internal sealed class ContructionHelper : global::net.sf.jni4net.utils.IConstructionHelper {
+            
+            public global::net.sf.jni4net.jni.IJvmProxy CreateProxy(global::net.sf.jni4net.jni.JNIEnv @__env) {
+                return new global::NativeAudio.@__LoopStream(@__env);
+            }
+        }
+    }
+    #endregion
+}
diff --git a/PlayWallNativeWin/j4n/clr/nativeaudio/NativeAudio.generated.cs b/PlayWallNativeWin/j4n/clr/nativeaudio/NativeAudio.generated.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a869f90ff6f4e4128af2b54161408cbcd556dfda
--- /dev/null
+++ b/PlayWallNativeWin/j4n/clr/nativeaudio/NativeAudio.generated.cs
@@ -0,0 +1,183 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by jni4net. See http://jni4net.sourceforge.net/ 
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace NativeAudio {
+    
+    
+    #region Component Designer generated code 
+    public partial class NativeAudio_ {
+        
+        public static global::java.lang.Class _class {
+            get {
+                return global::NativeAudio.@__NativeAudio.staticClass;
+            }
+        }
+    }
+    #endregion
+    
+    #region Component Designer generated code 
+    [global::net.sf.jni4net.attributes.JavaProxyAttribute(typeof(global::NativeAudio.NativeAudio), typeof(global::NativeAudio.NativeAudio_))]
+    [global::net.sf.jni4net.attributes.ClrWrapperAttribute(typeof(global::NativeAudio.NativeAudio), typeof(global::NativeAudio.NativeAudio_))]
+    internal sealed partial class @__NativeAudio : global::java.lang.Object {
+        
+        internal new static global::java.lang.Class staticClass;
+        
+        private @__NativeAudio(global::net.sf.jni4net.jni.JNIEnv @__env) : 
+                base(@__env) {
+        }
+        
+        private static void InitJNI(global::net.sf.jni4net.jni.JNIEnv @__env, java.lang.Class @__class) {
+            global::NativeAudio.@__NativeAudio.staticClass = @__class;
+        }
+        
+        private static global::System.Collections.Generic.List<global::net.sf.jni4net.jni.JNINativeMethod> @__Init(global::net.sf.jni4net.jni.JNIEnv @__env, global::java.lang.Class @__class) {
+            global::System.Type @__type = typeof(__NativeAudio);
+            global::System.Collections.Generic.List<global::net.sf.jni4net.jni.JNINativeMethod> methods = new global::System.Collections.Generic.List<global::net.sf.jni4net.jni.JNINativeMethod>();
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "load", "load0", "(Ljava/lang/String;)Z"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "play", "play1", "()V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "pause", "pause2", "()V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "stop", "stop3", "()V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "getDuration", "getDuration4", "()D"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "getPosition", "getPosition5", "()D"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "isPlaying", "isPlaying6", "()Z"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "setVolume", "setVolume7", "(F)V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "setLoop", "setLoop8", "(Z)V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "unload", "unload9", "()V"));
+            methods.Add(global::net.sf.jni4net.jni.JNINativeMethod.Create(@__type, "__ctorNativeAudio0", "__ctorNativeAudio0", "(Lnet/sf/jni4net/inj/IClrProxy;)V"));
+            return methods;
+        }
+        
+        private static bool load0(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj, global::net.sf.jni4net.utils.JniLocalHandle path) {
+            // (Ljava/lang/String;)Z
+            // (LSystem/String;)Z
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            bool @__return = default(bool);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__return = ((bool)(@__real.load(global::net.sf.jni4net.utils.Convertor.StrongJ2CString(@__env, path))));
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+            return @__return;
+        }
+        
+        private static void play1(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()V
+            // ()V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__real.play();
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static void pause2(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()V
+            // ()V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__real.pause();
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static void stop3(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()V
+            // ()V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__real.stop();
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static double getDuration4(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()D
+            // ()D
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            double @__return = default(double);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__return = ((double)(@__real.getDuration()));
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+            return @__return;
+        }
+        
+        private static double getPosition5(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()D
+            // ()D
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            double @__return = default(double);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__return = ((double)(@__real.getPosition()));
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+            return @__return;
+        }
+        
+        private static bool isPlaying6(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()Z
+            // ()Z
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            bool @__return = default(bool);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__return = ((bool)(@__real.isPlaying()));
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+            return @__return;
+        }
+        
+        private static void setVolume7(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj, float volume) {
+            // (F)V
+            // (F)V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__real.setVolume(volume);
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static void setLoop8(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj, bool loop) {
+            // (Z)V
+            // (Z)V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__real.setLoop(loop);
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static void unload9(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()V
+            // ()V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = global::net.sf.jni4net.utils.Convertor.StrongJp2C<global::NativeAudio.NativeAudio>(@__env, @__obj);
+            @__real.unload();
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        private static void @__ctorNativeAudio0(global::System.IntPtr @__envp, global::net.sf.jni4net.utils.JniLocalHandle @__class, global::net.sf.jni4net.utils.JniLocalHandle @__obj) {
+            // ()V
+            // ()V
+            global::net.sf.jni4net.jni.JNIEnv @__env = global::net.sf.jni4net.jni.JNIEnv.Wrap(@__envp);
+            try {
+            global::NativeAudio.NativeAudio @__real = new global::NativeAudio.NativeAudio();
+            global::net.sf.jni4net.utils.Convertor.InitProxy(@__env, @__obj, @__real);
+            }catch (global::System.Exception __ex){@__env.ThrowExisting(__ex);}
+        }
+        
+        new internal sealed class ContructionHelper : global::net.sf.jni4net.utils.IConstructionHelper {
+            
+            public global::net.sf.jni4net.jni.IJvmProxy CreateProxy(global::net.sf.jni4net.jni.JNIEnv @__env) {
+                return new global::NativeAudio.@__NativeAudio(@__env);
+            }
+        }
+    }
+    #endregion
+}
diff --git a/PlayWallNativeWin/j4n/generate.bat b/PlayWallNativeWin/j4n/generate.bat
new file mode 100644
index 0000000000000000000000000000000000000000..f7636d55f59799fde55275cadbf2e0e004a3c39e
--- /dev/null
+++ b/PlayWallNativeWin/j4n/generate.bat
@@ -0,0 +1 @@
+proxygen.exe NativeAudio.dll -wd .
\ No newline at end of file
diff --git a/PlayWallNativeWin/j4n/jni4net.j-0.8.8.0.jar b/PlayWallNativeWin/j4n/jni4net.j-0.8.8.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..922c2ad94d8c7a0a75f3613450819eb02e6d2757
Binary files /dev/null and b/PlayWallNativeWin/j4n/jni4net.j-0.8.8.0.jar differ
diff --git a/PlayWallNativeWin/j4n/jni4net.n-0.8.8.0.dll b/PlayWallNativeWin/j4n/jni4net.n-0.8.8.0.dll
new file mode 100644
index 0000000000000000000000000000000000000000..2c7dc61711aea95d4a9d27f72ee9b540625ec0da
Binary files /dev/null and b/PlayWallNativeWin/j4n/jni4net.n-0.8.8.0.dll differ
diff --git a/PlayWallNativeWin/j4n/jni4net.n.w32.v40-0.8.8.0.dll b/PlayWallNativeWin/j4n/jni4net.n.w32.v40-0.8.8.0.dll
new file mode 100644
index 0000000000000000000000000000000000000000..e90e34defd278af539cd5d40a44f5d5f6b3b983d
Binary files /dev/null and b/PlayWallNativeWin/j4n/jni4net.n.w32.v40-0.8.8.0.dll differ
diff --git a/PlayWallNativeWin/j4n/jni4net.n.w64.v40-0.8.8.0.dll b/PlayWallNativeWin/j4n/jni4net.n.w64.v40-0.8.8.0.dll
new file mode 100644
index 0000000000000000000000000000000000000000..6ff98f1eca73982a4d293447484864290d2d2170
Binary files /dev/null and b/PlayWallNativeWin/j4n/jni4net.n.w64.v40-0.8.8.0.dll differ
diff --git a/PlayWallNativeWin/j4n/jvm/nativeaudio/LoopStream.java b/PlayWallNativeWin/j4n/jvm/nativeaudio/LoopStream.java
new file mode 100644
index 0000000000000000000000000000000000000000..e11a08759b9cfef51fba8e8931747e57d5fb0409
--- /dev/null
+++ b/PlayWallNativeWin/j4n/jvm/nativeaudio/LoopStream.java
@@ -0,0 +1,45 @@
+// ------------------------------------------------------------------------------
+//  <autogenerated>
+//      This code was generated by jni4net. See http://jni4net.sourceforge.net/ 
+// 
+//      Changes to this file may cause incorrect behavior and will be lost if 
+//      the code is regenerated.
+//  </autogenerated>
+// ------------------------------------------------------------------------------
+
+package nativeaudio;
+
+@net.sf.jni4net.attributes.ClrType
+public class LoopStream extends system.io.Stream {
+    
+    //<generated-proxy>
+    private static system.Type staticType;
+    
+    protected LoopStream(net.sf.jni4net.inj.INJEnv __env, long __handle) {
+            super(__env, __handle);
+    }
+    
+    @net.sf.jni4net.attributes.ClrConstructor("(LNAudio/Wave/WaveStream;)V")
+    public LoopStream(system.io.Stream sourceStream) {
+            super(((net.sf.jni4net.inj.INJEnv)(null)), 0);
+        nativeaudio.LoopStream.__ctorLoopStream0(this, sourceStream);
+    }
+    
+    @net.sf.jni4net.attributes.ClrMethod("(Lsystem/io/Stream;)V")
+    private native static void __ctorLoopStream0(net.sf.jni4net.inj.IClrProxy thiz, system.io.Stream sourceStream);
+    
+    @net.sf.jni4net.attributes.ClrMethod("()Z")
+    public native boolean getEnableLooping();
+    
+    @net.sf.jni4net.attributes.ClrMethod("(Z)V")
+    public native void setEnableLooping(boolean value);
+    
+    public static system.Type typeof() {
+        return nativeaudio.LoopStream.staticType;
+    }
+    
+    private static void InitJNI(net.sf.jni4net.inj.INJEnv env, system.Type staticType) {
+        nativeaudio.LoopStream.staticType = staticType;
+    }
+    //</generated-proxy>
+}
diff --git a/PlayWallNativeWin/j4n/jvm/nativeaudio/NativeAudio.java b/PlayWallNativeWin/j4n/jvm/nativeaudio/NativeAudio.java
new file mode 100644
index 0000000000000000000000000000000000000000..f8a496f024e50f15f69ef3bdaf9752351e56d735
--- /dev/null
+++ b/PlayWallNativeWin/j4n/jvm/nativeaudio/NativeAudio.java
@@ -0,0 +1,69 @@
+// ------------------------------------------------------------------------------
+//  <autogenerated>
+//      This code was generated by jni4net. See http://jni4net.sourceforge.net/ 
+// 
+//      Changes to this file may cause incorrect behavior and will be lost if 
+//      the code is regenerated.
+//  </autogenerated>
+// ------------------------------------------------------------------------------
+
+package nativeaudio;
+
+@net.sf.jni4net.attributes.ClrType
+public class NativeAudio extends system.Object {
+    
+    //<generated-proxy>
+    private static system.Type staticType;
+    
+    protected NativeAudio(net.sf.jni4net.inj.INJEnv __env, long __handle) {
+            super(__env, __handle);
+    }
+    
+    @net.sf.jni4net.attributes.ClrConstructor("()V")
+    public NativeAudio() {
+            super(((net.sf.jni4net.inj.INJEnv)(null)), 0);
+        nativeaudio.NativeAudio.__ctorNativeAudio0(this);
+    }
+    
+    @net.sf.jni4net.attributes.ClrMethod("()V")
+    private native static void __ctorNativeAudio0(net.sf.jni4net.inj.IClrProxy thiz);
+    
+    @net.sf.jni4net.attributes.ClrMethod("(LSystem/String;)Z")
+    public native boolean load(java.lang.String path);
+    
+    @net.sf.jni4net.attributes.ClrMethod("()V")
+    public native void play();
+    
+    @net.sf.jni4net.attributes.ClrMethod("()V")
+    public native void pause();
+    
+    @net.sf.jni4net.attributes.ClrMethod("()V")
+    public native void stop();
+    
+    @net.sf.jni4net.attributes.ClrMethod("()D")
+    public native double getDuration();
+    
+    @net.sf.jni4net.attributes.ClrMethod("()D")
+    public native double getPosition();
+    
+    @net.sf.jni4net.attributes.ClrMethod("()Z")
+    public native boolean isPlaying();
+    
+    @net.sf.jni4net.attributes.ClrMethod("(F)V")
+    public native void setVolume(float volume);
+    
+    @net.sf.jni4net.attributes.ClrMethod("(Z)V")
+    public native void setLoop(boolean loop);
+    
+    @net.sf.jni4net.attributes.ClrMethod("()V")
+    public native void unload();
+    
+    public static system.Type typeof() {
+        return nativeaudio.NativeAudio.staticType;
+    }
+    
+    private static void InitJNI(net.sf.jni4net.inj.INJEnv env, system.Type staticType) {
+        nativeaudio.NativeAudio.staticType = staticType;
+    }
+    //</generated-proxy>
+}
diff --git a/PlayWallNativeWin/j4n/proxygen.exe b/PlayWallNativeWin/j4n/proxygen.exe
new file mode 100644
index 0000000000000000000000000000000000000000..816db4ef246603f6313670c111e4de0957905d56
Binary files /dev/null and b/PlayWallNativeWin/j4n/proxygen.exe differ
diff --git a/PlayWallNativeWin/j4n/proxygen.exe.config b/PlayWallNativeWin/j4n/proxygen.exe.config
new file mode 100644
index 0000000000000000000000000000000000000000..88c3d408ec7ed3687fcf214d01aa502f4bd0e89f
--- /dev/null
+++ b/PlayWallNativeWin/j4n/proxygen.exe.config
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
+    <supportedRuntime version="v2.0.50727"/>
+  </startup>
+</configuration>
\ No newline at end of file
diff --git a/PlayWallNativeWin/j4n/target/classes/nativeaudio/LoopStream.class b/PlayWallNativeWin/j4n/target/classes/nativeaudio/LoopStream.class
new file mode 100644
index 0000000000000000000000000000000000000000..cbde588f149720bb84608ad2bcc8ae43d1ac4250
Binary files /dev/null and b/PlayWallNativeWin/j4n/target/classes/nativeaudio/LoopStream.class differ
diff --git a/PlayWallNativeWin/j4n/target/classes/nativeaudio/NativeAudio.class b/PlayWallNativeWin/j4n/target/classes/nativeaudio/NativeAudio.class
new file mode 100644
index 0000000000000000000000000000000000000000..e81585d278c3c21c56c80de6ccd3c9db5118c09d
Binary files /dev/null and b/PlayWallNativeWin/j4n/target/classes/nativeaudio/NativeAudio.class differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinHandler.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..0851ed0333c6f317dc2908ee04d865b4d717ab1c
--- /dev/null
+++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinHandler.java
@@ -0,0 +1,159 @@
+package de.tobias.playpad.nawin;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.Iterator;
+import java.util.List;
+
+import de.tobias.playpad.audio.AudioHandler;
+import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.PadStatus;
+import de.tobias.playpad.pad.conntent.PadContent;
+import javafx.application.Platform;
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.ReadOnlyObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.util.Duration;
+import nativeaudio.NativeAudio;
+
+public class NativeAudioWinHandler extends AudioHandler {
+
+	private NativeAudio audioHandler;
+	private ObjectProperty<Duration> durationProperty;
+	private ObjectProperty<Duration> positionProperty;
+
+	private static Thread positionThread;
+	private static List<NativeAudioWinHandler> playedHandlers = new ArrayList<>();
+	private static final int SLEEP_TIME_POSITION = 50;
+
+	static {
+		positionThread = new Thread(() -> {
+			while (true) {
+				try {
+					if (playedHandlers.isEmpty()) {
+						synchronized (positionThread) {
+							positionThread.wait();
+						}
+					}
+
+					for (Iterator<NativeAudioWinHandler> iterator = playedHandlers.iterator(); iterator.hasNext();) {
+						NativeAudioWinHandler handler = iterator.next();
+						Pad pad = handler.getContent().getPad();
+
+						if (handler.audioHandler != null) {
+							if (!handler.audioHandler.isPlaying()) {
+								if (!pad.getPadSettings().isLoop()) {
+									System.out.println("Stop");
+									pad.setEof(true);
+
+									// Remove from Loop and Stop
+									iterator.remove();
+									Platform.runLater(() -> pad.setStatus(PadStatus.STOP));
+								}
+							}
+						}
+
+						Duration position = Duration.millis(handler.audioHandler.getPosition());
+
+						// Update der Zeit
+						Platform.runLater(() -> handler.positionProperty.set(position));
+					}
+
+					Thread.sleep(SLEEP_TIME_POSITION);
+				} catch (InterruptedException e) {} catch (ConcurrentModificationException e) {} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		});
+
+		positionThread.start();
+	}
+
+	public NativeAudioWinHandler(PadContent content) {
+		super(content);
+		durationProperty = new SimpleObjectProperty<>();
+		positionProperty = new SimpleObjectProperty<>();
+	}
+
+	@Override
+	public void play() {
+		audioHandler.setLoop(getContent().getPad().getPadSettings().isLoop());
+		audioHandler.play();
+
+		boolean start = false;
+		if (playedHandlers.isEmpty()) {
+			start = true;
+		}
+
+		if (!playedHandlers.contains(this))
+			playedHandlers.add(this);
+		if (start) {
+			synchronized (positionThread) {
+				positionThread.notify();
+			}
+		}
+	}
+
+	@Override
+	public void pause() {
+		audioHandler.pause();
+		if (playedHandlers.contains(this))
+			playedHandlers.remove(this);
+	}
+
+	@Override
+	public void stop() {
+		audioHandler.stop();
+		if (playedHandlers.contains(this))
+			playedHandlers.remove(this);
+	}
+
+	@Override
+	public Duration getPosition() {
+		return positionProperty.get();
+	}
+
+	@Override
+	public ReadOnlyObjectProperty<Duration> positionProperty() {
+		return positionProperty;
+	}
+
+	@Override
+	public Duration getDuration() {
+		return durationProperty.get();
+	}
+
+	@Override
+	public ReadOnlyObjectProperty<Duration> durationProperty() {
+		return durationProperty;
+	}
+
+	@Override
+	public void setVolume(double volume) {
+		audioHandler.setVolume((float) volume);
+	}
+
+	@Override
+	public boolean isMediaLoaded() {
+		return audioHandler != null;
+	}
+
+	@Override
+	public void loadMedia(Path[] paths) {
+		if (audioHandler == null)
+			audioHandler = new NativeAudio();
+		audioHandler.load(paths[0].toString());
+		Platform.runLater(() -> {
+			durationProperty.set(Duration.millis(audioHandler.getDuration()));
+			getContent().getPad().setStatus(PadStatus.READY);
+		});
+	}
+
+	@Override
+	public void unloadMedia() {
+		audioHandler.unload();
+		audioHandler = null;
+	}
+
+}
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b20dd30b48f06fd0d05c2e580e41de3b859f2d94
--- /dev/null
+++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java
@@ -0,0 +1,98 @@
+package de.tobias.playpad.nawin;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import de.tobias.playpad.PlayPadPlugin;
+import de.tobias.playpad.audio.AudioRegistry;
+import de.tobias.playpad.nawin.audio.NativeAudioWinHandlerConnect;
+import de.tobias.playpad.nawin.audio.NativeAudioWinPlugin;
+import de.tobias.playpad.plugin.Module;
+import de.tobias.updater.client.Updatable;
+import de.tobias.utils.application.App;
+import de.tobias.utils.application.ApplicationUtils;
+import de.tobias.utils.application.container.PathType;
+import de.tobias.utils.util.IOUtils;
+import de.tobias.utils.util.OS;
+import net.sf.jni4net.Bridge;
+import net.xeoh.plugins.base.annotations.PluginImplementation;
+import net.xeoh.plugins.base.annotations.events.PluginLoaded;
+import net.xeoh.plugins.base.annotations.events.Shutdown;
+
+@PluginImplementation
+public class NativeAudioWinPluginImpl implements NativeAudioWinPlugin {
+
+	private static final String ASSETS = "de/tobias/playpad/nawin/assets/";
+	
+	private static final String NAME = "NativeAudioWin";
+	private static final String IDENTIFIER = "de.tobias.playpad.nawin.NativeAudioWinPluginImpl";
+	
+	private Module module;
+	private Updatable updatable;
+	
+	@PluginLoaded
+	public void onLoaded(NativeAudioWinPlugin plugin) {
+		module = new Module(NAME, IDENTIFIER);
+		updatable = new NativeAudioWinUpdater();
+		
+		try {
+			prepareBridging();
+			bridgeCsharp();
+
+			if (OS.isWindows()) {
+				AudioRegistry registry = PlayPadPlugin.getRegistryCollection().getAudioHandlers();
+				registry.registerComponent(new NativeAudioWinHandlerConnect(), "NativeWin", module);
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void prepareBridging() throws IOException {
+		App app = ApplicationUtils.getApplication();
+		Path resourceFolder = app.getPath(PathType.LIBRARY, "nawin");
+		if (Files.notExists(resourceFolder)) {
+			Files.createDirectories(resourceFolder);
+		}
+
+		copyResource(resourceFolder, ASSETS, "jni4net.j-0.8.8.0.jar");
+		copyResource(resourceFolder, ASSETS, "jni4net.n-0.8.8.0.dll");
+		copyResource(resourceFolder, ASSETS, "jni4net.n.w32.v40-0.8.8.0.dll");
+		copyResource(resourceFolder, ASSETS, "jni4net.n.w64.v40-0.8.8.0.dll");
+		copyResource(resourceFolder, ASSETS, "NativeAudio.dll");
+		copyResource(resourceFolder, ASSETS, "NativeAudio.j4n.dll");
+		copyResource(resourceFolder, ASSETS, "NativeAudio.j4n.jar");
+		copyResource(resourceFolder, ASSETS, "NAudio.dll");
+	}
+
+	private void copyResource(Path resourceFolder, String packageName, String file) throws IOException {
+		IOUtils.copy(getClass().getClassLoader().getResourceAsStream(packageName + file), resourceFolder.resolve(file));
+		System.out.println("Copied: " + file);
+	}
+
+	private void bridgeCsharp() throws IOException {
+		Bridge.setVerbose(true);
+		Bridge.init();
+
+		App app = ApplicationUtils.getApplication();
+		Path resourceFolder = app.getPath(PathType.LIBRARY, "nawin");
+
+		Bridge.LoadAndRegisterAssemblyFrom(resourceFolder.resolve("NativeAudio.j4n.dll").toFile());
+	}
+
+	@Shutdown
+	public void onShutdown() {
+
+	}
+	
+	@Override
+	public Module getModule() {
+		return module;
+	}
+	
+	@Override
+	public Updatable getUpdatable() {
+		return updatable;
+	}
+}
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinUpdater.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinUpdater.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb30fc50e412031a03cd7c5f5955319a4700dfb5
--- /dev/null
+++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinUpdater.java
@@ -0,0 +1,79 @@
+package de.tobias.playpad.nawin;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Path;
+
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+
+import de.tobias.updater.client.Updatable;
+import de.tobias.updater.client.UpdateChannel;
+import de.tobias.utils.application.App;
+import de.tobias.utils.application.ApplicationUtils;
+import de.tobias.utils.application.container.PathType;
+
+public class NativeAudioWinUpdater implements Updatable {
+
+	private int newBuild;
+	private String newVersion;
+	private URL remotePath;
+
+	private String localFileName;
+	private String name;
+
+	@Override
+	public int getCurrentBuild() {
+		return 1;
+	}
+
+	@Override
+	public String getCurrentVersion() {
+		return "1.0";
+	}
+
+	@Override
+	public int getNewBuild() {
+		return newBuild;
+	}
+
+	@Override
+	public String getNewVersion() {
+		return newVersion;
+	}
+
+	@Override
+	public void loadInformation(UpdateChannel channel) throws IOException {
+		App app = ApplicationUtils.getMainApplication();
+		URL url = new URL(app.getInfo().getUpdateURL() + "/" + channel + "/plugins.yml");
+		FileConfiguration config = YamlConfiguration.loadConfiguration(url.openStream());
+
+		newBuild = config.getInt("plugins.nawin.build");
+		newVersion = config.getString("plugins.nawin.version");
+		remotePath = new URL(config.getString("plugins.nawin.url"));
+		localFileName = config.getString("plugins.nawin.filename");
+		name = config.getString("plugins.nawin.name");
+
+	}
+
+	@Override
+	public boolean isUpdateAvailable() {
+		return getCurrentBuild() < getNewBuild();
+	}
+
+	@Override
+	public URL getDownloadPath() {
+		return remotePath;
+	}
+
+	@Override
+	public Path getLocalPath() {
+		return ApplicationUtils.getApplication().getPath(PathType.LIBRARY, localFileName);
+	}
+
+	@Override
+	public String name() {
+		return name;
+	}
+
+}
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NAudio.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NAudio.dll
new file mode 100644
index 0000000000000000000000000000000000000000..9dd5ae7de34d2bc2dcf934eb027fa60d20237c3d
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NAudio.dll differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll
new file mode 100644
index 0000000000000000000000000000000000000000..e85f118b0af0c8c9a03777d25938e76a635adcb1
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll
new file mode 100644
index 0000000000000000000000000000000000000000..7b2db090abeaaf57e7cd652f28caf10bfbfa1d56
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar
new file mode 100644
index 0000000000000000000000000000000000000000..8f888bc0ebad18acd661a0d0ea694791d69778a4
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.j-0.8.8.0.jar b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.j-0.8.8.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..922c2ad94d8c7a0a75f3613450819eb02e6d2757
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.j-0.8.8.0.jar differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n-0.8.8.0.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n-0.8.8.0.dll
new file mode 100644
index 0000000000000000000000000000000000000000..2c7dc61711aea95d4a9d27f72ee9b540625ec0da
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n-0.8.8.0.dll differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n.w32.v40-0.8.8.0.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n.w32.v40-0.8.8.0.dll
new file mode 100644
index 0000000000000000000000000000000000000000..e90e34defd278af539cd5d40a44f5d5f6b3b983d
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n.w32.v40-0.8.8.0.dll differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n.w64.v40-0.8.8.0.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n.w64.v40-0.8.8.0.dll
new file mode 100644
index 0000000000000000000000000000000000000000..6ff98f1eca73982a4d293447484864290d2d2170
Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/jni4net.n.w64.v40-0.8.8.0.dll differ
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java
new file mode 100644
index 0000000000000000000000000000000000000000..38c20064b015bdcc7e1438c8f705dcbf6cbf117d
--- /dev/null
+++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java
@@ -0,0 +1,26 @@
+package de.tobias.playpad.nawin.audio;
+
+import de.tobias.playpad.audio.AudioHandler;
+import de.tobias.playpad.audio.AudioHandlerConnect;
+import de.tobias.playpad.nawin.NativeAudioWinHandler;
+import de.tobias.playpad.pad.conntent.PadContent;
+import de.tobias.playpad.viewcontroller.AudioHandlerViewController;
+
+public class NativeAudioWinHandlerConnect extends AudioHandlerConnect {
+
+	@Override
+	public AudioHandler createAudioHandler(PadContent content) {
+		return new NativeAudioWinHandler(content);
+	}
+
+	@Override
+	public AudioHandlerViewController getAudioHandlerSettingsViewController() {
+		return null;
+	}
+
+	@Override
+	public String getType() {
+		return "NativeWin";
+	}
+
+}
diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinPlugin.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..21d877b6fa47a505c92f23c78f155144da560257
--- /dev/null
+++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinPlugin.java
@@ -0,0 +1,7 @@
+package de.tobias.playpad.nawin.audio;
+
+import de.tobias.playpad.plugin.AdvancedPlugin;
+
+public interface NativeAudioWinPlugin extends AdvancedPlugin {
+
+}