<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">On 20 Aug 2019, at 18:09, Nick Porcaro <<a href="mailto:nick@ccrma.stanford.edu" class="">nick@ccrma.stanford.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Thanks Jamie - have you been able to get it to run on iOS?<div class=""><br class=""></div></div></div></blockquote><div><br class=""></div><div><br class=""></div><div>iOS isn’t currently supported (only Windows and macOS). Other platforms are theoretically possible but there is no build system set up for them. In the case of iOS, it’s more a question of building the dependencies for iOS.</div><div><br class=""></div><div>The benefits of using libIntegra over lower-level options are state saving and module introspection. You can automate the building of UI, for example by querying it for module attributes etc</div><div><br class=""></div><div>Cheers,</div><div><br class=""></div><div>Jamie</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Aug 20, 2019, at 4:57 AM, Jamie Bullock <<a href="mailto:jamie@jamiebullock.com" class="">jamie@jamiebullock.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">This is possibly a bit more heavyweight solution than you’re looking for, but you might want to look into the Integra Framework: <a href="https://github.com/BirminghamConservatoire/integra-framework" class="">https://github.com/BirminghamConservatoire/integra-framework</a></div><div class=""><br class=""></div><div class="">It was specifically designed as module management layer to sit between libPd (which it wraps) and an application, e.g. JUCE. An Integra “module” is basically a collection of Pd patches with some metadata wrapped in a ZIP file.</div><div class=""><br class=""></div><div class="">Happy to answer any questions.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class=""><br class=""></div><div class="">Jamie</div><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 20 Aug 2019, at 09:18, Nick Porcaro <<a href="mailto:nick@ccrma.stanford.edu" class="">nick@ccrma.stanford.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">My setup is a JUCE app that uses libpd.  I load a patch that’s an effects chain,<div class="">with each effect in it’s own abstraction that can be switch~’d to zero so it does not</div><div class="">comsume processing when not in use.</div><div class=""><br class=""></div><div class="">The solution I have now is to rename the abstractions to reflect a new processing</div><div class="">order and then I reload the patch.  This works, but it’s a hack.  What’d really be</div><div class="">slick is if there was api in libpd for inspecting and editng a running patch.</div><div class=""><br class=""></div><div class="">The goal is to minimize glitches on reloading the patch.  We do a similar thing in </div><div class="">GeoShred <a href="http://www,moforte.com/" class="">http://www,moforte.com</a> in the effects chain.  We use Faust for the signal processing</div><div class="">in GeoShred.  There we essentially reorder a table of function pointers to accomplish the reordering.</div><div class=""><br class=""></div><div class="">- Nick</div><div class=""><br class=""><div class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Aug 20, 2019, at 3:47 AM, Nick Porcaro <<a href="mailto:nick@ccrma.Stanford.EDU" class="">nick@ccrma.Stanford.EDU</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hey Folks,<div class=""><br class=""></div><div class="">It’s been a while since I’ve done any hard core work with Pd but that time has come again,</div><div class="">and I’m glad to be back on the scene!</div><div class=""><br class=""></div><div class="">In the project I’m working on I need to be able to reconfigure the processing order</div><div class="">of  DSP objects in a given patch on the fly:<div class=""><br class=""></div><div class="">For example, from this: </div><div class=""><br class=""></div><div class="">[noise~]</div><div class="">[lop~]</div><div class="">[hip~]</div><div class="">[dac~’</div><div class=""><br class=""></div><div class=""><div class="">To this: </div><div class=""><br class=""></div><div class="">[noise~]</div><div class="">[hip~]</div><div class="">[lop~]</div><div class="">[dac~]</div><div class=""><br class=""></div><div class="">Of course this is a trivial example, but it’s not if you wanted to arbitrarily reorder</div><div class="">an effects chain with 30 objects in it.</div><div class=""><br class=""></div><div class="">I stumbled across this paper:</div><div class=""><br class=""></div><div class=""><a href="https://lac.linuxaudio.org/2009/cdm/Saturday/18_Zmoelnig/zmoelnig_pdreflection.pdf" class="">https://lac.linuxaudio.org/2009/cdm/Saturday/18_Zmoelnig/zmoelnig_pdreflection.pdf</a></div><div class=""><br class=""></div><div class="">and this GitHub repo <a href="https://github.com/iem-projects/pd-iemguts" class="">https://github.com/iem-projects/pd-iemguts</a></div><div class=""><br class=""></div><div class="">and it appears that iemguts might do what I need -</div><div class=""><br class=""></div><div class="">What do you all think?  </div><div class=""><br class=""></div><div class="">(I posted this to the patch~ section of the Pd forum as well, and there’s some discussion going on).</div><div class=""><br class=""></div><div class="">- Nick</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></div><div class=""><br class=""></div></div></div>_______________________________________________<br class="">Pd-dev mailing list<br class=""><a href="mailto:Pd-dev@lists.iem.at" class="">Pd-dev@lists.iem.at</a><br class=""><a href="https://lists.puredata.info/listinfo/pd-dev" class="">https://lists.puredata.info/listinfo/pd-dev</a><br class=""></div></blockquote></div><br class=""></div></div></div>_______________________________________________<br class="">Pd-dev mailing list<br class=""><a href="mailto:Pd-dev@lists.iem.at" class="">Pd-dev@lists.iem.at</a><br class=""><a href="https://lists.puredata.info/listinfo/pd-dev" class="">https://lists.puredata.info/listinfo/pd-dev</a><br class=""></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></body></html>