diff --git a/GdpdExample/Main.tscn b/GdpdExample/Main.tscn index 08937250694234a885585ed12aa719e7df34c1dd..fd759a5edab940885595187a4b7f457500da9ec3 100644 --- a/GdpdExample/Main.tscn +++ b/GdpdExample/Main.tscn @@ -4,17 +4,10 @@ script/source = "extends Control var gdpd = load(\"res://addons/gdpd/bin/gdpd.gdns\") -var patch +#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\")) @@ -25,6 +18,15 @@ func _load_patch(pd_patch) : var patch_name = pd_patch.split(\"/\")[-1] var patch_dir = pd_patch.trim_suffix(patch_name) + #initialize pd + var 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]) + + #load patch patch.openfile(patch_name, patch_dir) " diff --git a/GdpdExample/addons/gdpd/bin/libgdpd.gdnlib b/GdpdExample/addons/gdpd/bin/libgdpd.gdnlib index 99933eb516a4329aa7aa2bac6c7b395a3b48338d..048e4afda8844119f77b118645465d3907cd9c32 100644 --- a/GdpdExample/addons/gdpd/bin/libgdpd.gdnlib +++ b/GdpdExample/addons/gdpd/bin/libgdpd.gdnlib @@ -1,7 +1,7 @@ [general] singleton=false -load_once=true +load_once=false symbol_prefix="godot_" reloadable=true @@ -13,6 +13,6 @@ OSX.64="res://addons/gdpd/bin/osx/libgdpd.dylib" [dependencies] -X11.64=[] +X11.64=[ ] Windows.64=[ ] OSX.64=[ ] diff --git a/src/gdpd.cpp b/src/gdpd.cpp index 0d53f63c024cef9bfef3f66fe45ed9a4853fa774..551b1a6ee4133bdffe5b368d86e4effa5b0c5a5f 100644 --- a/src/gdpd.cpp +++ b/src/gdpd.cpp @@ -156,7 +156,7 @@ int Gdpd::start() { void Gdpd::stop() { m_audio.stopStream(); m_audio.closeStream(); - m_pd.closePatch(m_patch); + m_pd.clear(); m_pd.computeAudio(false); print("Stopped"); } @@ -181,13 +181,16 @@ void Gdpd::openfile(godot::String baseStr, godot::String dirStr) { std::string dirS(dirWs.begin(), dirWs.end()); //libpd_openfile(baseS.c_str(), dirS.c_str()); - m_patch = m_pd.openPatch(baseS.c_str(), dirS.c_str()); + //m_patch = m_pd.openPatch(baseS.c_str(), dirS.c_str()); + m_pd.openPatch(baseS.c_str(), dirS.c_str()); print("Opened patch"); } -void Gdpd::closefile() { - m_pd.closePatch(m_patch); +void Gdpd::closefile(godot::String baseStr) { + std::wstring baseWs = baseStr.unicode_str(); + std::string baseS(baseWs.begin(), baseWs.end()); + m_pd.closePatch(baseS.c_str()); } void Gdpd::subscribe(String symbStr) { diff --git a/src/gdpd.hpp b/src/gdpd.hpp index ae00d9f62d6fe66cbd90e9bd3e1c8eb5cde5992b..2bedbb99c3ea5c445e9fa1a73237277bb787afd6 100644 --- a/src/gdpd.hpp +++ b/src/gdpd.hpp @@ -48,7 +48,7 @@ public: int start(); void stop(); void openfile(String basename, String dirname); - void closefile(); + void closefile(String basename); bool has_message(); Array get_next(); int blocksize(); diff --git a/src/rtaudio/RtAudio.os b/src/rtaudio/RtAudio.os index e6c362417eea4c66694fb6a7fd4727c23093c67a..067f8bb431a651b59d9ae5deccc671021129c206 100644 Binary files a/src/rtaudio/RtAudio.os and b/src/rtaudio/RtAudio.os differ