Upsampled or different block size soul plug-ins in Tracktion engine

I have built some Soul plugins. One converts audio to FFT like data with a larger output, another downsamples from this FFT like data , and a number of other Soul plugins process the in between data at the larger size.
I am considering editing the tracktion_graph within the Tracktion engine, then I can take advantage of the rack like setup. Should I start by editing the ExternalPlugin::createPluginInstance block size or sample rate, based on an extra valueTree variable? Is this going to cause so many flow on problems that it would be simpler to do it all as a rack like set-up in one SOUL plugin? The tracktion_graph appears to already be heading in the direction of varying block size/sample rate.
PS SOUL and Tracktion engine rock. Such quick a quick development environment.
Thanks for your time and expertise.

It’s not really possible, at least at the moment to do this. The main problem I can see is that initialisation of Nodes happens with a single sample rate/block size so there’s no way to determine what sample/rate block sizes different Nodes should get.

Unless you need different parts of the Tracktion Graph processed in higher sample rates, I would have thought it would be easiest to just keep everything in a single SOUL graph.

Hi Dave,
Thanks. I want it be infinitely rearrangeable. I can have my Tracktion data valuetree dynamically change the SOUL patch. Thinking about it, it is easily doable.
Did you advise on the SOUL PDC structure? Jules commented on how much work you put into Tracktion Graph. The SOUL graph appears to share the same sophistication. I am hoping I am not missing something.
Thank you

Not exactly, me and Jules talk a lot though so we discussed how to do the PDC in Tracktion Graph.

Compensating for PDC isn’t actually the hard part though once you have a suitable graph structure. It’s all the bit around it such as being able to swap graphs and keep the latency buffers (to avoid dropouts), sync visual meters and playheads etc. that all took the time.

1 Like