I think the way to do this in libpd is to open them all as separate patches within one instance of Pd (so that symbols are shared) and use "tabsend" and "tabreceive" to route signals to/from them, using shared names like "channel1" as both inputs and outputs so you can rearrange them in any order.
(Beware of allowing patches to _write_ andy of their output channels before reading all the input channels, if you're re-using the same channels as inputs and outputs :)
Miller
On Tue, Aug 20, 2019 at 04:18:58AM -0400, Nick Porcaro wrote:
My setup is a JUCE app that uses libpd. I load a patch that???s an effects chain, with each effect in it???s own abstraction that can be switch~???d to zero so it does not comsume processing when not in use.
The solution I have now is to rename the abstractions to reflect a new processing order and then I reload the patch. This works, but it???s a hack. What???d really be slick is if there was api in libpd for inspecting and editng a running patch.
The goal is to minimize glitches on reloading the patch. We do a similar thing in GeoShred http://www,moforte.com http://www,moforte.com/ in the effects chain. We use Faust for the signal processing in GeoShred. There we essentially reorder a table of function pointers to accomplish the reordering.
- Nick
On Aug 20, 2019, at 3:47 AM, Nick Porcaro nick@ccrma.Stanford.EDU wrote:
Hey Folks,
It???s been a while since I???ve done any hard core work with Pd but that time has come again, and I???m glad to be back on the scene!
In the project I???m working on I need to be able to reconfigure the processing order of DSP objects in a given patch on the fly:
For example, from this:
[noise~] [lop~] [hip~] [dac~???
To this:
[noise~] [hip~] [lop~] [dac~]
Of course this is a trivial example, but it???s not if you wanted to arbitrarily reorder an effects chain with 30 objects in it.
I stumbled across this paper:
https://lac.linuxaudio.org/2009/cdm/Saturday/18_Zmoelnig/zmoelnig_pdreflecti... https://lac.linuxaudio.org/2009/cdm/Saturday/18_Zmoelnig/zmoelnig_pdreflection.pdf
and this GitHub repo https://github.com/iem-projects/pd-iemguts https://github.com/iem-projects/pd-iemguts
and it appears that iemguts might do what I need -
What do you all think?
(I posted this to the patch~ section of the Pd forum as well, and there???s some discussion going on).
- Nick
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev