From 17f24620f83c085f74831744f16cb47f1a8c195e Mon Sep 17 00:00:00 2001 From: Rick <53375860+RickTaylor79@users.noreply.github.com> Date: Wed, 25 Sep 2024 22:23:46 +0100 Subject: [PATCH] fix pan --- .DS_Store | Bin 14340 -> 14340 bytes Quetzalcoatl/.DS_Store | Bin 30724 -> 30724 bytes .../AdditionalSourceCode/nodes/chain26.h | 560 ------------------ .../AdditionalSourceCode/nodes/factory.cpp | 1 - .../AdditionalSourceCode/nodes/includes.h | 1 - Quetzalcoatl/AdditionalSourceCode/nodes/pan.h | 228 ++++++- Quetzalcoatl/DspNetworks/Networks/pan.xml | 227 ++++++- Quetzalcoatl/Expansions/.DS_Store | Bin 14340 -> 6148 bytes Quetzalcoatl/Presets/Quetzalcoatl.hip | Bin 749166 -> 750239 bytes 9 files changed, 428 insertions(+), 589 deletions(-) delete mode 100644 Quetzalcoatl/AdditionalSourceCode/nodes/chain26.h diff --git a/.DS_Store b/.DS_Store index 3897d70115a2097066a5c53ea0d10d6f5c3a56e6..f96e98b14f48ce8a9c183e3c5bb86fbb9b13654f 100755 GIT binary patch delta 15 WcmZoEXeromUx~@Ya`QtaWl;b%?FIJ$ delta 15 WcmZoEXeromUx~@cZ1Y1UWl;b%%?0uR diff --git a/Quetzalcoatl/.DS_Store b/Quetzalcoatl/.DS_Store index 614b4d250ef741b42ef16b4e71d410e7f1686d10..c6eb6bd50b19dacd8b01859bca8f56cbf73c2bbc 100755 GIT binary patch delta 182 zcmV;n07?IZ@BxJI0kB^oljBfz6EQd}ATlsBeJmh*H!(FVAUHNPlWS2klSCpGlQJSs z0t{J`QDCjJHzRrhlXhY^4dDRi0Pz6%0R9010Roe{Vk?tmH!>;G0n-8A0p|he0qFtz z0t5mM0uKTZ0vQ4t0vrMz0x$wG0y+Xi0!RW$lfX|OlaeJsvr9010h5q950hmlFOzm+ kGm|(nSPh{8qXDD=r2(!1uK}==oiaPKUnr~xvk5T!N0FF0TL1t6 delta 316 zcmXxe%`3xk9Kdn!4@KG4I2wjx+K?=d$Pmvr$@|-;gpobCkC}J&=cm0?MexK^@I>;-#A&2Jzu%lrg3VFwY`OEVGGXn;i}~ z$v07cBwh?+lvGI*lVnJin59(gQX`Gx7EfG^pr+03n!6zd z^^qO|b!6T(C| a=YmVFxaWaKo>bUr)4FoQiCVJtxBd_BX;(P_ diff --git a/Quetzalcoatl/AdditionalSourceCode/nodes/chain26.h b/Quetzalcoatl/AdditionalSourceCode/nodes/chain26.h deleted file mode 100644 index 3ce8db3..0000000 --- a/Quetzalcoatl/AdditionalSourceCode/nodes/chain26.h +++ /dev/null @@ -1,560 +0,0 @@ -#pragma once - -// These will improve the readability of the connection definition - -#define getT(Idx) template get() -#define connectT(Idx, target) template connect(target) -#define getParameterT(Idx) template getParameter() -#define setParameterT(Idx, value) template setParameter(value) -#define setParameterWT(Idx, value) template setWrapParameter(value) -using namespace scriptnode; -using namespace snex; -using namespace snex::Types; - -namespace chain26_impl -{ -// ==============================| Node & Parameter type declarations |============================== - -template -using input_toggle16_t = control::input_toggle, 1>>; -template -using smoothed_parameter1_x4_t = wrap::mod, 1>, - control::smoothed_parameter>>; - -template -using smoothed_parameter17_t = wrap::mod, 2>, - control::smoothed_parameter>>; - -template -using chain_t = container::chain>, - smoothed_parameter17_t, - input_toggle16_t, - routing::event_data_writer>; - -template using input_toggle_t = input_toggle16_t; -template -using smoothed_parameter_t = wrap::mod, 1>, - control::smoothed_parameter>>; - -template -using smoothed_parameter15_t = wrap::mod, 2>, - control::smoothed_parameter>>; - -template -using chain1_t = container::chain>, - smoothed_parameter15_t, - input_toggle_t, - routing::event_data_writer>; - -template using input_toggle1_t = input_toggle16_t; -template -using smoothed_parameter1_t = wrap::mod, 0>, - control::smoothed_parameter>>; - -template -using smoothed_parameter16_t = wrap::mod, 1>, - control::smoothed_parameter>>; - -template -using chain11_t = container::chain>, - smoothed_parameter16_t, - input_toggle1_t, - routing::event_data_writer>; - -template using input_toggle2_t = input_toggle16_t; -template -using smoothed_parameter2_t = wrap::mod, 0>, - control::smoothed_parameter>>; - -template -using smoothed_parameter19_t = wrap::mod, 1>, - control::smoothed_parameter>>; - -template -using chain12_t = container::chain>, - smoothed_parameter19_t, - input_toggle2_t, - routing::event_data_writer>; - -template using input_toggle3_t = input_toggle16_t; -template -using smoothed_parameter3_t = wrap::mod, 0>, - control::smoothed_parameter>>; - -template -using smoothed_parameter20_t = wrap::mod, 1>, - control::smoothed_parameter>>; - -template -using chain13_t = container::chain>, - smoothed_parameter20_t, - input_toggle3_t, - routing::event_data_writer>; - -template using input_toggle4_t = input_toggle16_t; -template -using smoothed_parameter4_t = wrap::mod, 0>, - control::smoothed_parameter>>; - -template -using smoothed_parameter21_t = wrap::mod, 1>, - control::smoothed_parameter>>; - -template -using chain15_t = container::chain>, - smoothed_parameter21_t, - input_toggle4_t, - routing::event_data_writer>; - -using smoothed_parameter5_mod = parameter::plain, - 0>; -template -using smoothed_parameter5_t = wrap::mod>>; - -using smoothed_parameter22_mod = parameter::plain, - 1>; -template -using smoothed_parameter22_t = wrap::mod>>; - -template -using chain16_t = container::chain>, - smoothed_parameter22_t, - control::input_toggle, - routing::event_data_writer>; - -using smoothed_parameter6_mod = smoothed_parameter5_mod; -template -using smoothed_parameter6_t = wrap::mod>>; - -using smoothed_parameter23_mod = smoothed_parameter22_mod; -template -using smoothed_parameter23_t = wrap::mod>>; - -template -using chain17_t = container::chain>, - smoothed_parameter23_t, - control::input_toggle, - routing::event_data_writer>; - -template -using split_t = container::split>, - chain1_t, - chain11_t, - chain12_t, - chain13_t, - chain15_t, - chain16_t, - chain17_t>; - -namespace chain26_t_parameters -{ -// Parameter list for chain26_impl::chain26_t ------------------------------------------------------ - -template -using Smooth = parameter::chain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>, - parameter::plain, 1>>; - -template -using SmoothType = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in1 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in2 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in3 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in4 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in5 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in6 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in7 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using in8 = parameter::chain, 0>, - parameter::plain, 0>>; - -template -using chain26_t_plist = parameter::list, - SmoothType, - in1, - in2, - in3, - in4, - in5, - in6, - in7, - in8>; -} - -template -using chain26_t_ = container::chain, - wrap::fix<1, split_t>>; - -// =================================| Root node initialiser class |================================= - -template struct instance: public chain26_impl::chain26_t_ -{ - - struct metadata - { - static const int NumTables = 0; - static const int NumSliderPacks = 0; - static const int NumAudioFiles = 0; - static const int NumFilters = 0; - static const int NumDisplayBuffers = 0; - - SNEX_METADATA_ID(chain26); - SNEX_METADATA_NUM_CHANNELS(1); - SNEX_METADATA_ENCODED_PARAMETERS(152) - { - 0x005B, 0x0000, 0x5300, 0x6F6D, 0x746F, 0x0068, 0xCCCD, 0x3DCC, - 0x0000, 0x447A, 0x0000, 0x3F80, 0x0000, 0x3F80, 0xCCCD, 0x3DCC, - 0x015B, 0x0000, 0x5300, 0x6F6D, 0x746F, 0x5468, 0x7079, 0x0065, - 0x0000, 0x0000, 0x0000, 0x3F80, 0x0000, 0x3F80, 0x0000, 0x3F80, - 0x0000, 0x3F80, 0x025B, 0x0000, 0x6900, 0x316E, 0x0000, 0x0000, - 0x0000, 0x8000, 0x003F, 0x8000, 0x003F, 0x8000, 0x003F, 0x0000, - 0x5B00, 0x0003, 0x0000, 0x6E69, 0x0032, 0x0000, 0x0000, 0x0000, - 0x3F80, 0x0000, 0x3F80, 0x0000, 0x3F80, 0x0000, 0x0000, 0x045B, - 0x0000, 0x6900, 0x336E, 0x0000, 0x0000, 0x0000, 0x8000, 0x003F, - 0x8000, 0x003F, 0x8000, 0x003F, 0x0000, 0x5B00, 0x0005, 0x0000, - 0x6E69, 0x0034, 0x0000, 0x0000, 0x0000, 0x3F80, 0x0000, 0x3F80, - 0x0000, 0x3F80, 0x0000, 0x0000, 0x065B, 0x0000, 0x6900, 0x356E, - 0x0000, 0x0000, 0x0000, 0x8000, 0x003F, 0x8000, 0x003F, 0x8000, - 0x003F, 0x0000, 0x5B00, 0x0007, 0x0000, 0x6E69, 0x0036, 0x0000, - 0x0000, 0x0000, 0x3F80, 0x0000, 0x3F80, 0x0000, 0x3F80, 0x0000, - 0x0000, 0x085B, 0x0000, 0x6900, 0x376E, 0x0000, 0x0000, 0x0000, - 0x8000, 0x003F, 0x8000, 0x003F, 0x8000, 0x003F, 0x0000, 0x5B00, - 0x0009, 0x0000, 0x6E69, 0x0038, 0x0000, 0x0000, 0x0000, 0x3F80, - 0x0000, 0x3F80, 0x0000, 0x3F80, 0x0000, 0x0000, 0x0000, 0x0000 - }; - }; - - instance() - { - // Node References ------------------------------------------------------------------------- - - auto& split = this->getT(0); // chain26_impl::split_t - auto& chain = this->getT(0).getT(0); // chain26_impl::chain_t - auto& smoothed_parameter1_x4 = this->getT(0).getT(0).getT(0); // chain26_impl::smoothed_parameter1_x4_t - auto& smoothed_parameter17 = this->getT(0).getT(0).getT(1); // chain26_impl::smoothed_parameter17_t - auto& input_toggle16 = this->getT(0).getT(0).getT(2); // chain26_impl::input_toggle16_t - auto& event_data_writer = this->getT(0).getT(0).getT(3); // routing::event_data_writer - auto& chain1 = this->getT(0).getT(1); // chain26_impl::chain1_t - auto& smoothed_parameter = this->getT(0).getT(1).getT(0); // chain26_impl::smoothed_parameter_t - auto& smoothed_parameter15 = this->getT(0).getT(1).getT(1); // chain26_impl::smoothed_parameter15_t - auto& input_toggle = this->getT(0).getT(1).getT(2); // chain26_impl::input_toggle_t - auto& event_data_writer1 = this->getT(0).getT(1).getT(3); // routing::event_data_writer - auto& chain11 = this->getT(0).getT(2); // chain26_impl::chain11_t - auto& smoothed_parameter1 = this->getT(0).getT(2).getT(0); // chain26_impl::smoothed_parameter1_t - auto& smoothed_parameter16 = this->getT(0).getT(2).getT(1); // chain26_impl::smoothed_parameter16_t - auto& input_toggle1 = this->getT(0).getT(2).getT(2); // chain26_impl::input_toggle1_t - auto& event_data_writer3 = this->getT(0).getT(2).getT(3); // routing::event_data_writer - auto& chain12 = this->getT(0).getT(3); // chain26_impl::chain12_t - auto& smoothed_parameter2 = this->getT(0).getT(3).getT(0); // chain26_impl::smoothed_parameter2_t - auto& smoothed_parameter19 = this->getT(0).getT(3).getT(1); // chain26_impl::smoothed_parameter19_t - auto& input_toggle2 = this->getT(0).getT(3).getT(2); // chain26_impl::input_toggle2_t - auto& event_data_writer4 = this->getT(0).getT(3).getT(3); // routing::event_data_writer - auto& chain13 = this->getT(0).getT(4); // chain26_impl::chain13_t - auto& smoothed_parameter3 = this->getT(0).getT(4).getT(0); // chain26_impl::smoothed_parameter3_t - auto& smoothed_parameter20 = this->getT(0).getT(4).getT(1); // chain26_impl::smoothed_parameter20_t - auto& input_toggle3 = this->getT(0).getT(4).getT(2); // chain26_impl::input_toggle3_t - auto& event_data_writer5 = this->getT(0).getT(4).getT(3); // routing::event_data_writer - auto& chain15 = this->getT(0).getT(5); // chain26_impl::chain15_t - auto& smoothed_parameter4 = this->getT(0).getT(5).getT(0); // chain26_impl::smoothed_parameter4_t - auto& smoothed_parameter21 = this->getT(0).getT(5).getT(1); // chain26_impl::smoothed_parameter21_t - auto& input_toggle4 = this->getT(0).getT(5).getT(2); // chain26_impl::input_toggle4_t - auto& event_data_writer6 = this->getT(0).getT(5).getT(3); // routing::event_data_writer - auto& chain16 = this->getT(0).getT(6); // chain26_impl::chain16_t - auto& smoothed_parameter5 = this->getT(0).getT(6).getT(0); // chain26_impl::smoothed_parameter5_t - auto& smoothed_parameter22 = this->getT(0).getT(6).getT(1); // chain26_impl::smoothed_parameter22_t - auto& input_toggle5 = this->getT(0).getT(6).getT(2); // control::input_toggle - auto& event_data_writer7 = this->getT(0).getT(6).getT(3); // routing::event_data_writer - auto& chain17 = this->getT(0).getT(7); // chain26_impl::chain17_t - auto& smoothed_parameter6 = this->getT(0).getT(7).getT(0); // chain26_impl::smoothed_parameter6_t - auto& smoothed_parameter23 = this->getT(0).getT(7).getT(1); // chain26_impl::smoothed_parameter23_t - auto& input_toggle6 = this->getT(0).getT(7).getT(2); // control::input_toggle - auto& event_data_writer8 = this->getT(0).getT(7).getT(3); // routing::event_data_writer - - // Parameter Connections ------------------------------------------------------------------- - - auto& Smooth_p = this->getParameterT(0); - Smooth_p.connectT(0, smoothed_parameter1_x4); // Smooth -> smoothed_parameter1_x4::SmoothingTime - Smooth_p.connectT(1, smoothed_parameter17); // Smooth -> smoothed_parameter17::SmoothingTime - Smooth_p.connectT(2, smoothed_parameter); // Smooth -> smoothed_parameter::SmoothingTime - Smooth_p.connectT(3, smoothed_parameter15); // Smooth -> smoothed_parameter15::SmoothingTime - Smooth_p.connectT(4, smoothed_parameter16); // Smooth -> smoothed_parameter16::SmoothingTime - Smooth_p.connectT(5, smoothed_parameter19); // Smooth -> smoothed_parameter19::SmoothingTime - Smooth_p.connectT(6, smoothed_parameter20); // Smooth -> smoothed_parameter20::SmoothingTime - Smooth_p.connectT(7, smoothed_parameter21); // Smooth -> smoothed_parameter21::SmoothingTime - Smooth_p.connectT(8, smoothed_parameter22); // Smooth -> smoothed_parameter22::SmoothingTime - Smooth_p.connectT(9, smoothed_parameter23); // Smooth -> smoothed_parameter23::SmoothingTime - - auto& SmoothType_p = this->getParameterT(1); - SmoothType_p.connectT(0, input_toggle16); // SmoothType -> input_toggle16::Input - SmoothType_p.connectT(1, input_toggle); // SmoothType -> input_toggle::Input - - auto& in1_p = this->getParameterT(2); - in1_p.connectT(0, smoothed_parameter1_x4); // in1 -> smoothed_parameter1_x4::Value - in1_p.connectT(1, smoothed_parameter17); // in1 -> smoothed_parameter17::Value - - auto& in2_p = this->getParameterT(3); - in2_p.connectT(0, smoothed_parameter); // in2 -> smoothed_parameter::Value - in2_p.connectT(1, smoothed_parameter15); // in2 -> smoothed_parameter15::Value - - auto& in3_p = this->getParameterT(4); - in3_p.connectT(0, smoothed_parameter1); // in3 -> smoothed_parameter1::Value - in3_p.connectT(1, smoothed_parameter16); // in3 -> smoothed_parameter16::Value - - auto& in4_p = this->getParameterT(5); - in4_p.connectT(0, smoothed_parameter2); // in4 -> smoothed_parameter2::Value - in4_p.connectT(1, smoothed_parameter19); // in4 -> smoothed_parameter19::Value - - auto& in5_p = this->getParameterT(6); - in5_p.connectT(0, smoothed_parameter3); // in5 -> smoothed_parameter3::Value - in5_p.connectT(1, smoothed_parameter20); // in5 -> smoothed_parameter20::Value - - auto& in6_p = this->getParameterT(7); - in6_p.connectT(0, smoothed_parameter4); // in6 -> smoothed_parameter4::Value - in6_p.connectT(1, smoothed_parameter21); // in6 -> smoothed_parameter21::Value - - auto& in7_p = this->getParameterT(8); - in7_p.connectT(0, smoothed_parameter5); // in7 -> smoothed_parameter5::Value - in7_p.connectT(1, smoothed_parameter22); // in7 -> smoothed_parameter22::Value - - auto& in8_p = this->getParameterT(9); - in8_p.connectT(0, smoothed_parameter6); // in8 -> smoothed_parameter6::Value - in8_p.connectT(1, smoothed_parameter23); // in8 -> smoothed_parameter23::Value - - // Modulation Connections ------------------------------------------------------------------ - - input_toggle16.getWrappedObject().getParameter().connectT(0, event_data_writer); // input_toggle16 -> event_data_writer::Value - smoothed_parameter1_x4.getParameter().connectT(0, input_toggle16); // smoothed_parameter1_x4 -> input_toggle16::Value1 - smoothed_parameter17.getParameter().connectT(0, input_toggle16); // smoothed_parameter17 -> input_toggle16::Value2 - input_toggle.getWrappedObject().getParameter().connectT(0, event_data_writer1); // input_toggle -> event_data_writer1::Value - smoothed_parameter.getParameter().connectT(0, input_toggle); // smoothed_parameter -> input_toggle::Value1 - smoothed_parameter15.getParameter().connectT(0, input_toggle); // smoothed_parameter15 -> input_toggle::Value2 - input_toggle1.getWrappedObject().getParameter().connectT(0, event_data_writer3); // input_toggle1 -> event_data_writer3::Value - smoothed_parameter1.getParameter().connectT(0, input_toggle1); // smoothed_parameter1 -> input_toggle1::Input - smoothed_parameter16.getParameter().connectT(0, input_toggle1); // smoothed_parameter16 -> input_toggle1::Value1 - input_toggle2.getWrappedObject().getParameter().connectT(0, event_data_writer4); // input_toggle2 -> event_data_writer4::Value - smoothed_parameter2.getParameter().connectT(0, input_toggle2); // smoothed_parameter2 -> input_toggle2::Input - smoothed_parameter19.getParameter().connectT(0, input_toggle2); // smoothed_parameter19 -> input_toggle2::Value1 - input_toggle3.getWrappedObject().getParameter().connectT(0, event_data_writer5); // input_toggle3 -> event_data_writer5::Value - smoothed_parameter3.getParameter().connectT(0, input_toggle3); // smoothed_parameter3 -> input_toggle3::Input - smoothed_parameter20.getParameter().connectT(0, input_toggle3); // smoothed_parameter20 -> input_toggle3::Value1 - input_toggle4.getWrappedObject().getParameter().connectT(0, event_data_writer6); // input_toggle4 -> event_data_writer6::Value - smoothed_parameter4.getParameter().connectT(0, input_toggle4); // smoothed_parameter4 -> input_toggle4::Input - smoothed_parameter21.getParameter().connectT(0, input_toggle4); // smoothed_parameter21 -> input_toggle4::Value1 - smoothed_parameter5.getParameter().connectT(0, input_toggle5); // smoothed_parameter5 -> input_toggle5::Input - smoothed_parameter22.getParameter().connectT(0, input_toggle5); // smoothed_parameter22 -> input_toggle5::Value1 - smoothed_parameter6.getParameter().connectT(0, input_toggle6); // smoothed_parameter6 -> input_toggle6::Input - smoothed_parameter23.getParameter().connectT(0, input_toggle6); // smoothed_parameter23 -> input_toggle6::Value1 - - // Default Values -------------------------------------------------------------------------- - - ; // smoothed_parameter1_x4::Value is automated - ; // smoothed_parameter1_x4::SmoothingTime is automated - smoothed_parameter1_x4.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter17::Value is automated - ; // smoothed_parameter17::SmoothingTime is automated - smoothed_parameter17.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle16::Input is automated - ; // input_toggle16::Value1 is automated - ; // input_toggle16::Value2 is automated - - event_data_writer.setParameterT(0, 8.); // routing::event_data_writer::SlotIndex - ; // event_data_writer::Value is automated - - ; // smoothed_parameter::Value is automated - ; // smoothed_parameter::SmoothingTime is automated - smoothed_parameter.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter15::Value is automated - ; // smoothed_parameter15::SmoothingTime is automated - smoothed_parameter15.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle::Input is automated - ; // input_toggle::Value1 is automated - ; // input_toggle::Value2 is automated - - event_data_writer1.setParameterT(0, 9.); // routing::event_data_writer::SlotIndex - ; // event_data_writer1::Value is automated - - ; // smoothed_parameter1::Value is automated - smoothed_parameter1.setParameterT(1, 100.); // control::smoothed_parameter::SmoothingTime - smoothed_parameter1.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter16::Value is automated - ; // smoothed_parameter16::SmoothingTime is automated - smoothed_parameter16.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle1::Input is automated - ; // input_toggle1::Value1 is automated - input_toggle1.setParameterT(2, 0.); // control::input_toggle::Value2 - - event_data_writer3.setParameterT(0, 10.); // routing::event_data_writer::SlotIndex - ; // event_data_writer3::Value is automated - - ; // smoothed_parameter2::Value is automated - smoothed_parameter2.setParameterT(1, 100.); // control::smoothed_parameter::SmoothingTime - smoothed_parameter2.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter19::Value is automated - ; // smoothed_parameter19::SmoothingTime is automated - smoothed_parameter19.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle2::Input is automated - ; // input_toggle2::Value1 is automated - input_toggle2.setParameterT(2, 0.); // control::input_toggle::Value2 - - event_data_writer4.setParameterT(0, 11.); // routing::event_data_writer::SlotIndex - ; // event_data_writer4::Value is automated - - ; // smoothed_parameter3::Value is automated - smoothed_parameter3.setParameterT(1, 100.); // control::smoothed_parameter::SmoothingTime - smoothed_parameter3.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter20::Value is automated - ; // smoothed_parameter20::SmoothingTime is automated - smoothed_parameter20.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle3::Input is automated - ; // input_toggle3::Value1 is automated - input_toggle3.setParameterT(2, 0.); // control::input_toggle::Value2 - - event_data_writer5.setParameterT(0, 12.); // routing::event_data_writer::SlotIndex - ; // event_data_writer5::Value is automated - - ; // smoothed_parameter4::Value is automated - smoothed_parameter4.setParameterT(1, 100.); // control::smoothed_parameter::SmoothingTime - smoothed_parameter4.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter21::Value is automated - ; // smoothed_parameter21::SmoothingTime is automated - smoothed_parameter21.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle4::Input is automated - ; // input_toggle4::Value1 is automated - input_toggle4.setParameterT(2, 0.); // control::input_toggle::Value2 - - event_data_writer6.setParameterT(0, 13.); // routing::event_data_writer::SlotIndex - ; // event_data_writer6::Value is automated - - ; // smoothed_parameter5::Value is automated - smoothed_parameter5.setParameterT(1, 100.); // control::smoothed_parameter::SmoothingTime - smoothed_parameter5.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter22::Value is automated - ; // smoothed_parameter22::SmoothingTime is automated - smoothed_parameter22.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle5::Input is automated - ; // input_toggle5::Value1 is automated - input_toggle5.setParameterT(2, 0.); // control::input_toggle::Value2 - - event_data_writer7.setParameterT(0, 14.); // routing::event_data_writer::SlotIndex - event_data_writer7.setParameterT(1, 0.); // routing::event_data_writer::Value - - ; // smoothed_parameter6::Value is automated - smoothed_parameter6.setParameterT(1, 100.); // control::smoothed_parameter::SmoothingTime - smoothed_parameter6.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // smoothed_parameter23::Value is automated - ; // smoothed_parameter23::SmoothingTime is automated - smoothed_parameter23.setParameterT(2, 1.); // control::smoothed_parameter::Enabled - - ; // input_toggle6::Input is automated - ; // input_toggle6::Value1 is automated - input_toggle6.setParameterT(2, 0.); // control::input_toggle::Value2 - - event_data_writer8.setParameterT(0, 15.); // routing::event_data_writer::SlotIndex - event_data_writer8.setParameterT(1, 0.); // routing::event_data_writer::Value - - this->setParameterT(0, 1.); - this->setParameterT(1, 1.); - this->setParameterT(2, 1.); - this->setParameterT(3, 1.); - this->setParameterT(4, 1.); - this->setParameterT(5, 1.); - this->setParameterT(6, 1.); - this->setParameterT(7, 1.); - this->setParameterT(8, 1.); - this->setParameterT(9, 1.); - } - - static constexpr bool isPolyphonic() { return NV > 1; }; - - static constexpr bool isProcessingHiseEvent() { return true; }; - - static constexpr bool hasTail() { return false; }; - - static constexpr bool isSuspendedOnSilence() { return true; }; -}; -} - -#undef getT -#undef connectT -#undef setParameterT -#undef setParameterWT -#undef getParameterT -// ======================================| Public Definition |====================================== - -namespace project -{ -// polyphonic template declaration - -template -using chain26 = wrap::node>; -} - - diff --git a/Quetzalcoatl/AdditionalSourceCode/nodes/factory.cpp b/Quetzalcoatl/AdditionalSourceCode/nodes/factory.cpp index 81f1949..2140807 100644 --- a/Quetzalcoatl/AdditionalSourceCode/nodes/factory.cpp +++ b/Quetzalcoatl/AdditionalSourceCode/nodes/factory.cpp @@ -27,7 +27,6 @@ struct Factory: public scriptnode::dll::StaticLibraryHostFactory TempoSyncer::initTempoData(); // Node registrations --------------------------------------------------------------- - registerPolyNode, project::chain26>(); registerPolyNode, project::FilterNew>(); registerPolyNode, project::Mod1>(); registerPolyNode, wrap::illegal_poly>>(); diff --git a/Quetzalcoatl/AdditionalSourceCode/nodes/includes.h b/Quetzalcoatl/AdditionalSourceCode/nodes/includes.h index 6eb66f9..168f984 100644 --- a/Quetzalcoatl/AdditionalSourceCode/nodes/includes.h +++ b/Quetzalcoatl/AdditionalSourceCode/nodes/includes.h @@ -12,7 +12,6 @@ #include "Averb_networkdata.h" #include "CableText1_networkdata.h" #include "cbtes_networkdata.h" -#include "chain26.h" #include "Cho_networkdata.h" #include "eventin_networkdata.h" #include "EventOut_networkdata.h" diff --git a/Quetzalcoatl/AdditionalSourceCode/nodes/pan.h b/Quetzalcoatl/AdditionalSourceCode/nodes/pan.h index 029f4b8..d298e9f 100644 --- a/Quetzalcoatl/AdditionalSourceCode/nodes/pan.h +++ b/Quetzalcoatl/AdditionalSourceCode/nodes/pan.h @@ -17,21 +17,127 @@ namespace pan_impl using global_cable_t_index = runtime_target::indexers::fix_hash<3433268>; -DECLARE_PARAMETER_RANGE(global_cable_modRange, +template +using global_cable_t = routing::global_cable, 0>>; + +template +using chain1_t = container::chain>, + math::add>; +using global_cable1_t_index = runtime_target::indexers::fix_hash<3433269>; + +template +using global_cable1_t = routing::global_cable, 0>>; + +template +using chain2_t = container::chain>, + math::add>; +using global_cable2_t_index = runtime_target::indexers::fix_hash<3433270>; + +template +using global_cable2_t = routing::global_cable, 0>>; + +template +using chain3_t = container::chain>, + math::add>; +using global_cable3_t_index = runtime_target::indexers::fix_hash<3433271>; + +template +using global_cable3_t = routing::global_cable, 0>>; + +template +using chain4_t = container::chain>, + math::add>; +using global_cable4_t_index = runtime_target::indexers::fix_hash<3433272>; + +template +using global_cable4_t = routing::global_cable, 0>>; + +template +using chain5_t = container::chain>, + math::add>; +using global_cable5_t_index = runtime_target::indexers::fix_hash<3433273>; + +template +using global_cable5_t = routing::global_cable, 0>>; + +template +using chain6_t = container::chain>, + math::add>; +using global_cable6_t_index = runtime_target::indexers::fix_hash<3433274>; + +template +using global_cable6_t = routing::global_cable, 0>>; + +template +using chain7_t = container::chain>, + math::add>; +using global_cable7_t_index = runtime_target::indexers::fix_hash<3433275>; + +template +using global_cable7_t = routing::global_cable, 0>>; + +template +using chain8_t = container::chain>, + math::add>; +template +using branch_t = container::branch>, + chain2_t, + chain3_t, + chain4_t, + chain5_t, + chain6_t, + chain7_t, + chain8_t>; + +DECLARE_PARAMETER_RANGE(peak1_modRange, -1., 1.); template -using global_cable_mod = parameter::from0To1, - 0, - global_cable_modRange>; +using peak1_mod = parameter::from0To1, + 0, + peak1_modRange>; template -using global_cable_t = routing::global_cable>; +using peak1_t = wrap::mod, + wrap::no_data>; template -using pan_t_ = container::chain>, +using chain_t = container::chain>, + peak1_t>; + +template +using modchain_t_ = container::chain>>; + +template +using modchain_t = wrap::control_rate>; + +namespace pan_t_parameters +{ +} + +template +using pan_t_ = container::chain, 0>, + wrap::fix<2, modchain_t>, jdsp::jpanner, core::gain>; @@ -50,9 +156,10 @@ template struct instance: public pan_impl::pan_t_ SNEX_METADATA_ID(pan); SNEX_METADATA_NUM_CHANNELS(2); - SNEX_METADATA_ENCODED_PARAMETERS(2) + SNEX_METADATA_ENCODED_PARAMETERS(16) { - 0x0000, 0x0000 + 0x005B, 0x0000, 0x4900, 0x504E, 0x5455, 0x0000, 0x0000, 0x0000, + 0xE000, 0x0040, 0x0000, 0x0000, 0x8000, 0x003F, 0x8000, 0x003F }; }; @@ -60,18 +167,89 @@ template struct instance: public pan_impl::pan_t_ { // Node References ------------------------------------------------------------------------- - auto& global_cable = this->getT(0); // pan_impl::global_cable_t - auto& jpanner = this->getT(1); // jdsp::jpanner - auto& gain = this->getT(2); // core::gain + auto& modchain = this->getT(0); // pan_impl::modchain_t + auto& chain = this->getT(0).getT(0); // pan_impl::chain_t + auto& branch = this->getT(0).getT(0).getT(0); // pan_impl::branch_t + auto& chain1 = this->getT(0).getT(0).getT(0).getT(0); // pan_impl::chain1_t + auto& global_cable = this->getT(0).getT(0).getT(0).getT(0).getT(0); // pan_impl::global_cable_t + auto& add = this->getT(0).getT(0).getT(0).getT(0).getT(1); // math::add + auto& chain2 = this->getT(0).getT(0).getT(0).getT(1); // pan_impl::chain2_t + auto& global_cable1 = this->getT(0).getT(0).getT(0).getT(1).getT(0); // pan_impl::global_cable1_t + auto& add1 = this->getT(0).getT(0).getT(0).getT(1).getT(1); // math::add + auto& chain3 = this->getT(0).getT(0).getT(0).getT(2); // pan_impl::chain3_t + auto& global_cable2 = this->getT(0).getT(0).getT(0).getT(2).getT(0); // pan_impl::global_cable2_t + auto& add2 = this->getT(0).getT(0).getT(0).getT(2).getT(1); // math::add + auto& chain4 = this->getT(0).getT(0).getT(0).getT(3); // pan_impl::chain4_t + auto& global_cable3 = this->getT(0).getT(0).getT(0).getT(3).getT(0); // pan_impl::global_cable3_t + auto& add3 = this->getT(0).getT(0).getT(0).getT(3).getT(1); // math::add + auto& chain5 = this->getT(0).getT(0).getT(0).getT(4); // pan_impl::chain5_t + auto& global_cable4 = this->getT(0).getT(0).getT(0).getT(4).getT(0); // pan_impl::global_cable4_t + auto& add4 = this->getT(0).getT(0).getT(0).getT(4).getT(1); // math::add + auto& chain6 = this->getT(0).getT(0).getT(0).getT(5); // pan_impl::chain6_t + auto& global_cable5 = this->getT(0).getT(0).getT(0).getT(5).getT(0); // pan_impl::global_cable5_t + auto& add5 = this->getT(0).getT(0).getT(0).getT(5).getT(1); // math::add + auto& chain7 = this->getT(0).getT(0).getT(0).getT(6); // pan_impl::chain7_t + auto& global_cable6 = this->getT(0).getT(0).getT(0).getT(6).getT(0); // pan_impl::global_cable6_t + auto& add6 = this->getT(0).getT(0).getT(0).getT(6).getT(1); // math::add + auto& chain8 = this->getT(0).getT(0).getT(0).getT(7); // pan_impl::chain8_t + auto& global_cable7 = this->getT(0).getT(0).getT(0).getT(7).getT(0); // pan_impl::global_cable7_t + auto& add7 = this->getT(0).getT(0).getT(0).getT(7).getT(1); // math::add + auto& peak1 = this->getT(0).getT(0).getT(1); // pan_impl::peak1_t + auto& jpanner = this->getT(1); // jdsp::jpanner + auto& gain = this->getT(2); // core::gain + + // Parameter Connections ------------------------------------------------------------------- + + this->getParameterT(0).connectT(0, branch); // INPUT -> branch::Index // Modulation Connections ------------------------------------------------------------------ - global_cable.getWrappedObject().getParameter().connectT(0, jpanner); // global_cable -> jpanner::Pan + global_cable.getWrappedObject().getParameter().connectT(0, add); // global_cable -> add::Value + global_cable1.getWrappedObject().getParameter().connectT(0, add1); // global_cable1 -> add1::Value + global_cable2.getWrappedObject().getParameter().connectT(0, add2); // global_cable2 -> add2::Value + global_cable3.getWrappedObject().getParameter().connectT(0, add3); // global_cable3 -> add3::Value + global_cable4.getWrappedObject().getParameter().connectT(0, add4); // global_cable4 -> add4::Value + global_cable5.getWrappedObject().getParameter().connectT(0, add5); // global_cable5 -> add5::Value + global_cable6.getWrappedObject().getParameter().connectT(0, add6); // global_cable6 -> add6::Value + global_cable7.getWrappedObject().getParameter().connectT(0, add7); // global_cable7 -> add7::Value + peak1.getParameter().connectT(0, jpanner); // peak1 -> jpanner::Pan // Default Values -------------------------------------------------------------------------- + ; // branch::Index is automated + global_cable.setParameterT(0, 1.); // routing::global_cable::Value + ; // add::Value is automated + + global_cable1.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add1::Value is automated + + global_cable2.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add2::Value is automated + + global_cable3.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add3::Value is automated + + global_cable4.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add4::Value is automated + + global_cable5.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add5::Value is automated + + global_cable6.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add6::Value is automated + + global_cable7.setParameterT(0, 1.); // routing::global_cable::Value + + ; // add7::Value is automated + ; // jpanner::Pan is automated jpanner.setParameterT(1, 0.); // jdsp::jpanner::Rule @@ -79,6 +257,14 @@ template struct instance: public pan_impl::pan_t_ gain.setParameterT(1, 20.); // core::gain::Smoothing gain.setParameterT(2, 0.); // core::gain::ResetValue + this->setParameterT(0, 0.); + this->setExternalData({}, -1); + } + ~instance() override + { + // Cleanup external data references -------------------------------------------------------- + + this->setExternalData({}, -1); } static constexpr bool isPolyphonic() { return NV > 1; }; @@ -91,7 +277,21 @@ template struct instance: public pan_impl::pan_t_ { // Runtime target Connections -------------------------------------------------------------- - this->getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable_t + this->getT(0).getT(0).getT(0).getT(0).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable_t + this->getT(0).getT(0).getT(0).getT(1).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable1_t + this->getT(0).getT(0).getT(0).getT(2).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable2_t + this->getT(0).getT(0).getT(0).getT(3).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable3_t + this->getT(0).getT(0).getT(0).getT(4).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable4_t + this->getT(0).getT(0).getT(0).getT(5).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable5_t + this->getT(0).getT(0).getT(0).getT(6).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable6_t + this->getT(0).getT(0).getT(0).getT(7).getT(0).connectToRuntimeTarget(addConnection, c); // pan_impl::global_cable7_t + } + + void setExternalData(const ExternalData& b, int index) + { + // External Data Connections --------------------------------------------------------------- + + this->getT(0).getT(0).getT(1).setExternalData(b, index); // pan_impl::peak1_t } }; } diff --git a/Quetzalcoatl/DspNetworks/Networks/pan.xml b/Quetzalcoatl/DspNetworks/Networks/pan.xml index 51d4d8f..57b31cb 100644 --- a/Quetzalcoatl/DspNetworks/Networks/pan.xml +++ b/Quetzalcoatl/DspNetworks/Networks/pan.xml @@ -2,19 +2,214 @@ - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33,6 +228,12 @@ - + + + + + + + diff --git a/Quetzalcoatl/Expansions/.DS_Store b/Quetzalcoatl/Expansions/.DS_Store index 3ad0a0c6a4d2c92f23e1b7948a7f2503c707eb34..2258eb92ef2ba6f018ff39a754bf86b6412cc48f 100755 GIT binary patch delta 129 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 rDCFDu!;4@-%&XP%V}%>#!u0PpFGNvq; zXd>}UzZr?>mbkbF1MbYhu}lyal4XdSirbX&*ydwf1QW9?W*fWZp)H{;H`z_voYVjP z-|zRG`#(J`znbq{H@DT872$9Hew&VEMAG-oN0pnlZoQE~v*OmqtS(M@F}Adlx24!h z3QG9AvPwQb*7|b!Qz_NFExS4|rL;0PHcq^#p6BV!xL}En!g#5U0f~;)5{U#}Dp6E| zRL4=t4sD`@8bV&;b6o7AU!5g~*0;yN*%(gKk*t=>CNt>CcdWF2+?Q^*_|fnjgV1CN z&7^gw4YbJ|Krip~RgON}c_)Lu)gDd#s;a{60f>te3znvcQOQoO7Qc7cv%#;l3l{2I zn50|TM z!oe<8I@`~wIuJ}zMG#ntiohnU>V|dks`$o2qGE*v8KQMgFA_L^g^?XhL~3pU0Ysq} zb|s@+m*T1AZp4c#+=%xrZp4U{Zp3w|F2xh@Nihy#JJL{C5SIo`&!aXj39?>5+h9*K z3Ilo`jlo0(+6DUKsFDfmk$v*@NRM>T`B% zxarSZkS5q$e4S#&p)ci^X)bq^j3fYuhA&dT1!N+UbKlSmFi zuH(lbUadLHD%!D82Q8z-4_Y!wAg70VgJwNw&tZS@e;V#)lQ8z>Dvb{Z)^40MeTu`0 zQSue!<&a?5+Jk*&4s#g$nB0Qm^LS+O$02;%O4hJ5y|_PsGqIC>dIl2f6_K^z;Cg!J~TYPqyn4Q7d*vNuCHE$brD0{~-Cbi?z`@ZnAL*FoT zjd-&GO6p|n(