Compiled Faust node breaks upon being loaded into a multichannel network
-
- I have a multichannel project
- Master Channel matrix > right click > change channel count
I have a ScriptFX instance with all channels mapped
- Click on matrix, right click, All Channels
In there I have a DSP network. It has a large number of channels (I'm running 32), so I need to split them up to do processing in pairs.
I have a multi node that does this, with 16 chains in there so every chain gets 2 channels.
If I load in a stereo faust effect, let's say the tape stop demo
import("stdfaust.lib"); process = _,_ : dm.tapeStop_demo : _,_;
It works fine. Just play a note and trigger the stop parameter.
If I add one more node to the multi, now we don't have exactly two channels for each chain and faust starts complaining because the code is specifying two inputs and outputs.
Good. This confirms all is good when we have exactly 16 chains in there.
Since Faust needs to be compiled to work, we have to do that first before using this is a final project. Let's do that. I will:
- put the faust node into a separate DSP network called Faust Nodes
- right click any node and set to Allow Compilation
- Export > Compile DSP Networks so that the node(s) get compiled
- Restart HISE
- FInd my compiled Faust node (not the compiled "Faust Nodes" network) in the Project category when adding a new node
- Add the compiled Faust node to one of my chains in the multichannel network so it can do its thing
And now we arrive at the problem: the compiled node does not work. Compiled Faust nodes do not complain about channel mismatch, they just stop working. So to make sure all is good, I have my faust node right above the compiled node
The uncompiled Faust node works. The compiled doesn't.
It's not just me, right? Can anyone else confirm this? Thank you.
-
@aaronventure alright, it's definitely a bug. @Christoph-Hart
Something happens when loading a compiled node into a multichannel network and it breaks. Being able to trick the node into working confirms this.
- Set the network back to stereo
- load in the compiled node
- turn the network back into multichannel
- move the compiled node into a two-channel chain inside of the multi node
- Set the network back to stereo
-
@Christoph-Hart I know you're busy at the moment, but could I please get your take on this? If this can be fixed, I can keep designing the networks with uncompiled Faust nodes and replace them once you get the fix in.
But if it cannot be fixed, that's a big bummer and I'll have to rethink the entire architecture with multiple ScriptFX instead as multichannel networks would be out of the question. I'd like to know this before I sink a week into it.
Thanks a lot.
-
@aaronventure it can definitely be fixed, but if you can't wait for me to do this does it help if you wrap the faust FX into a network with the same parameters and then export this?
I can imagine that the code generator for the faust nodes is not as robust when it comes to the channel API as the scriptnode code generator.
-
@Christoph-Hart Oops, forgot to reply here:
- Compile Faust node
- Put compiled Faust node into a network
- Load network into a multi node
Same result as when I put in the compiled Faust node itself. The CPU usage is still showing, so the node is definitely doing the processing. It's just not outputting what it should.
-
@aaronventure That's weird, I've just checked your exact procedure and I can reproduce the issue, however just the first time when I create the multichannel network.
If I save the multichannel network, then unload the network (and ignore the crash that happens when you try to do this => HISE!), then the compiled faust effect works the next time I load it.
Might be some order of initialisation issue.
-
@Christoph-Hart definitely something like that, see my second post where you can effectively trick it into working -- the node detects the channel count of the network on load, and doesn't react if the network channel count changes.