diff --git a/GdpdExample/Main.tscn b/GdpdExample/Main.tscn
new file mode 100644
index 0000000000000000000000000000000000000000..08937250694234a885585ed12aa719e7df34c1dd
--- /dev/null
+++ b/GdpdExample/Main.tscn
@@ -0,0 +1,35 @@
+[gd_scene load_steps=2 format=2]
+
+[sub_resource type="GDScript" id=1]
+script/source = "extends Control
+
+var gdpd = load(\"res://addons/gdpd/bin/gdpd.gdns\")
+var patch
+
+func _ready():
+	#initialize pd 
+	patch = gdpd.new()
+
+	#retrieve 
+	var inps = patch.get_available_input_devices()
+	var outs = patch.get_available_output_devices()
+	patch.init_devices(inps[0], outs[0])
+	
+	#the patch path should be the absolute one
+	_load_patch(ProjectSettings.globalize_path(\"res://patch1.pd\"))
+	_load_patch(ProjectSettings.globalize_path(\"res://patch2.pd\"))
+
+
+func _load_patch(pd_patch) :
+	#separate file name from directory
+	var patch_name = pd_patch.split(\"/\")[-1]
+	var patch_dir = pd_patch.trim_suffix(patch_name)
+	
+	#load patch
+	patch.openfile(patch_name, patch_dir)
+"
+
+[node name="Control" type="Control"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = SubResource( 1 )
diff --git a/bin/gdpd.gdns b/GdpdExample/addons/gdpd/bin/gdpd.gdns
similarity index 100%
rename from bin/gdpd.gdns
rename to GdpdExample/addons/gdpd/bin/gdpd.gdns
diff --git a/bin/libgdpd.gdnlib b/GdpdExample/addons/gdpd/bin/libgdpd.gdnlib
similarity index 100%
rename from bin/libgdpd.gdnlib
rename to GdpdExample/addons/gdpd/bin/libgdpd.gdnlib
diff --git a/GdpdExample/default_env.tres b/GdpdExample/default_env.tres
new file mode 100644
index 0000000000000000000000000000000000000000..20207a4aa2cfbae0c95636531b00d91502940d12
--- /dev/null
+++ b/GdpdExample/default_env.tres
@@ -0,0 +1,7 @@
+[gd_resource type="Environment" load_steps=2 format=2]
+
+[sub_resource type="ProceduralSky" id=1]
+
+[resource]
+background_mode = 2
+background_sky = SubResource( 1 )
diff --git a/GdpdExample/icon.png b/GdpdExample/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f3f45025404a96aa4f1f30de8ad04becd5cea73
Binary files /dev/null and b/GdpdExample/icon.png differ
diff --git a/GdpdExample/icon.png.import b/GdpdExample/icon.png.import
new file mode 100644
index 0000000000000000000000000000000000000000..96cbf4629a557eb7339eef87ad61b7e7d8c8f0e7
--- /dev/null
+++ b/GdpdExample/icon.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://icon.png"
+dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/GdpdExample/patch1.pd b/GdpdExample/patch1.pd
new file mode 100644
index 0000000000000000000000000000000000000000..1b76f22db6ca7e7058e0a5c3f1f4d3fdabdba2ac
Binary files /dev/null and b/GdpdExample/patch1.pd differ
diff --git a/GdpdExample/patch2.pd b/GdpdExample/patch2.pd
new file mode 100644
index 0000000000000000000000000000000000000000..a21bd1f0f0bbc0e0ca10b06711b81c5f93e550f0
Binary files /dev/null and b/GdpdExample/patch2.pd differ
diff --git a/GdpdExample/project.godot b/GdpdExample/project.godot
new file mode 100644
index 0000000000000000000000000000000000000000..ccec52e3f776f1b9920d0b5c74b7ec7bd2ba7ff3
--- /dev/null
+++ b/GdpdExample/project.godot
@@ -0,0 +1,27 @@
+; Engine configuration file.
+; It's best edited using the editor UI and not directly,
+; since the parameters that go here are not all obvious.
+;
+; Format:
+;   [section] ; section goes between []
+;   param=value ; assign values to parameters
+
+config_version=4
+
+_global_script_classes=[  ]
+_global_script_class_icons={
+
+}
+
+[application]
+
+config/name="GdpdExample"
+run/main_scene="res://Main.tscn"
+config/icon="res://icon.png"
+
+[rendering]
+
+quality/driver/driver_name="GLES2"
+vram_compression/import_etc=true
+vram_compression/import_etc2=false
+environment/default_environment="res://default_env.tres"
diff --git a/SConstruct b/SConstruct
index 6ee59d1b58f67847c01445501746b8d75ce2b013..62b159afec1666beafda5da739cfbc68ada10ccd 100644
--- a/SConstruct
+++ b/SConstruct
@@ -12,7 +12,7 @@ opts.Add(EnumVariable('platform', "Compilation platform", '', ['', 'windows', 'x
 opts.Add(EnumVariable('p', "Compilation target, alias for 'platform'", '', ['', 'windows', 'x11', 'linux', 'osx']))
 opts.Add(BoolVariable('use_llvm', "Use the LLVM / Clang compiler", 'no'))
 opts.Add(BoolVariable('use_mingw', "Use the MingW for cross-compiling", 'no'))
-opts.Add(PathVariable('target_path', 'The path where the lib is installed.', 'bin/'))
+opts.Add(PathVariable('target_path', 'The path where the lib is installed.', 'GdpdExample/addons/gdpd/bin/'))
 opts.Add(PathVariable('target_name', 'The library name.', 'libgdpd', PathVariable.PathAccept))
 
 # Local dependency paths, adapt them to your setup
@@ -91,11 +91,25 @@ elif env['platform'] == "windows":
         env['CXX'] = 'x86_64-w64-mingw32-g++-win32'
         env['CC'] = 'x86_64-w64-mingw32-gcc-win32'
         env.Append(CCFLAGS=['-g', '-O3', '-std=c++14', '-Wwrite-strings', '-fpermissive'])
-        env.Append(LINKFLAGS=['--static', '-Wl,--no-undefined', '-static-libgcc', '-static-libstdc++'])
-        env.Append(CPPDEFINES=['WIN32', '_WIN32', '_MSC_VER', '_WINDOWS', '_CRT_SECURE_NO_WARNINGS'])
+        #env.Append(LINKFLAGS=['--static', '-Wl,--no-undefined', '-static-libgcc', '-static-libstdc++'])
+        #env.Append(CPPDEFINES=['WIN32', '_WIN32', '_MSC_VER', '_WINDOWS', '_CRT_SECURE_NO_WARNINGS'])
+        env.Append(CFLAGS=['-DWINVER=0x502','-DWIN32','-D_WIN32','-Wno-int-to-pointer-cast', 
+                               '-Wno-pointer-to-int-cast'])
+        env.Append(CPPDEFINES=['HAVE_UNISTD_H=1','LIBPD_EXTRA=1','PD=1', 
+                                'PD_INTERNAL','USEAPI_DUMMY=1','libpd_EXPORTS'])
         #env.Append(CPPDEFINES=['__WINDOWS_DS__', 'LIBPD_EXTRA'])
         env.Append(CPPDEFINES=['__RTAUDIO_DUMMY__', 'LIBPD_EXTRA'])
         env.Append(CFLAGS=['-DUSEAPI_DUMMY', '-DPD', '-DHAVE_UNISTD_H', '-D_GNU_SOURCE'])
+        env.Append(LDPATH=['/usr/x86_64-w64-mingw32/lib/'])
+        env.Append(LINKFLAGS=['-Wl,--export-all-symbols',
+                '-static-libgcc','/usr/x86_64-w64-mingw32/lib/libm.a'])
+
+    #env.Append(LINKFLAGS=['-lkernel32','-luser32', '-lgdi32', 
+    #                      '-lwinspool', '-lshell32', '-lole32', 
+    #                      '-loleaut32', '-luuid', '-lcomdlg32', 
+    #                      '-ladvapi32','-lws2_32', '-lwsock32'])
+    env.Append(LINKFLAGS=['/usr/x86_64-w64-mingw32/lib/libws2_32.a',
+                            '/usr/x86_64-w64-mingw32/lib/libwsock32.a'])
 
 
     #env.Append(CPPDEFINES=['WINVER=0x502'])
@@ -128,7 +142,7 @@ env.Append(CFLAGS=['-DUSEAPI_DUMMY', '-DPD', '-DHAVE_UNISTD_H', '-D_GNU_SOURCE']
 # tweak this if you want to use different folders, or more folders, to store your source code in.
 env.Append(CPPPATH=['src/'])
 
-sources = Glob('src/*.cpp') + Glob('src/rtaudio/*.cpp') + Glob('src/libpd/libpd_wrapper/*.c') + Glob('src/libpd/libpd_wrapper/util/*.c') + Glob('src/libpd/pure-data/extra/**/*.c') + Glob('src/libpd/pure-data/src/[xmgz]_*.c') + Glob('src/libpd/pure-data/src/d_[acgmorsu]*.c') + Glob('src/libpd/pure-data/src/d_dac.c') + Glob('src/libpd/pure-data/src/d_delay.c') + Glob('src/libpd/pure-data/src/d_fft.c') + Glob('src/libpd/pure-data/src/d_fft_fftsg.c') + Glob('src/libpd/pure-data/src/d_filter.c') + Glob('src/libpd/pure-data/src/s_audio.c') + Glob('src/libpd/pure-data/src/s_audio_dummy.c') + Glob('src/libpd/pure-data/src/s_print.c') + Glob('src/libpd/pure-data/src/s_path.c')  + Glob('src/libpd/pure-data/src/s_main.c') + Glob('src/libpd/pure-data/src/s_inter.c') + Glob('src/libpd/pure-data/src/s_utf8.c') + Glob('src/libpd/pure-data/src/s_loader.c') + Glob('src/libpd/pure-data/extra/*.c')
+sources = Glob('src/*.cpp') + Glob('src/rtaudio/*.cpp') + Glob('src/libpd/libpd_wrapper/*.c') + Glob('src/libpd/libpd_wrapper/util/*.c') + Glob('src/libpd/pure-data/extra/**/*.c') + Glob('src/libpd/pure-data/src/[xmgz]_*.c') + Glob('src/libpd/pure-data/src/d_[acgmorsu]*.c') + Glob('src/libpd/pure-data/src/d_dac.c') + Glob('src/libpd/pure-data/src/d_delay.c') + Glob('src/libpd/pure-data/src/d_fft.c') + Glob('src/libpd/pure-data/src/d_fft_fftsg.c') + Glob('src/libpd/pure-data/src/d_filter.c') + Glob('src/libpd/pure-data/src/s_audio.c') + Glob('src/libpd/pure-data/src/s_audio_dummy.c') + Glob('src/libpd/pure-data/src/s_print.c') + Glob('src/libpd/pure-data/src/s_path.c')  + Glob('src/libpd/pure-data/src/s_main.c') + Glob('src/libpd/pure-data/src/s_inter.c') + Glob('src/libpd/pure-data/src/s_utf8.c') + Glob('src/libpd/pure-data/src/s_loader.c') + Glob('src/libpd/pure-data/extra/*.c') 
 
 library = env.SharedLibrary(target=env['target_path'] + env['target_name'] , source=sources)
 
diff --git a/src/rtaudio/RtAudio.os b/src/rtaudio/RtAudio.os
index 067f8bb431a651b59d9ae5deccc671021129c206..e6c362417eea4c66694fb6a7fd4727c23093c67a 100644
Binary files a/src/rtaudio/RtAudio.os and b/src/rtaudio/RtAudio.os differ