Recreate Bitcrusher Module in Scriptnode
-
@Christoph-Hart Amazing! Will give this a spin :) Thank you
-
@Christoph-Hart @langermarc19 We're hitting a snag here with the bitcrusher in scriptnode. In the compiled VST plugin, it will output only the left channel when the bitcrusher is active, regardless of the mode, DC or Bipolar, and regardless of the bitrate. It seems to happen in most DAWs, but not in standalone.
We're going to take a look at the node code for the bitcrusher, but any immediate thoughts?
-
@Casey-Kolb I won't be of much help, but I built a simple bitcrusher here and it works fine (I recall I'm using the bipolar mode)
-
Kinda related: Is there any way to access the in-between sample rates of the bitcrusher effect with an integer or float? To get at the rates between 22-44khZ for example, and not just jump that big notch.
-
@blezzbeats Do you mean the sample and hold module? The bitcrusher allows float bit rates.
-
@Christoph-Hart I mean the Degrade processor, the samplerate parameter takes big leaps first. Is there another module that has that option? Where I can decide to set the samplerate to 24504 Hz instead of 24000 Hz for example
-
@Casey-Kolb Have you tried processing for the L - R channels individually?
float getSampleL(float input) { } float getSampleR(float input) { } // Process the signal here template <typename ProcessDataType> void process(ProcessDataType& data) { auto frame = data.toFrameData(); while(frame.next()) { frame[0] = getSampleL(frame[0]); frame[1] = getSampleR(frame[1]); } }
Also I reckon that in the above example,
float getSample(float input)
is used.With an extra "s",
float getSamples(float input)
is working here for both channels. -
@Christoph-Hart Nevermind I misunderstood, sample and hold will do it for me! Didn't realize we were talking ScriptFX so I just learned that. Sorry for cluttering the thread .
-
@Christoph-Hart where in the codebase is
polyphonic_base
located? Want to look at howprepare
is implemented to see if I can write breakpoints/debug output to find where this is getting reduced to mono. Thanks! -
@Christoph-Hart nevermind I found
FXNodes_impl
and I think that has what I need -
@Christoph-Hart After a lot of debugging, we realized it's not the bitcrusher node but actually the split node that's creating issues in certain DAWs and only allowing the left channel to pass through. We're using the exact configuration of this dry/wet example, just with the bitcrusher instead of the reverb: https://docs.hise.audio/scriptnode/101/drywet.html
When you add a second chain the split container, it won't properly split the channels and the chain on the right will only output the left channel in certain DAWs, including Cubase and Bitwig. This only seems to happen with the node below.
We've tried removing everything and added every node back until the right channel broke. The instant we added a split container with another chain, one of the chains would stop outputting a right signal. This doesn't happen in standalone, and this only seems to happen with the following configuration. Any ideas for things we could try?
-
@Casey-Kolb I've created a bitcrusher here, with almost the exact same structure. I didn't face any problems (ableton, reaper) but I didn't try the plugin with Cubase or Bitwig (plugin still in development stage). I'll be able to try tomorrow and I'll report back.
-
@Casey-Kolb Just tested my plugin with Cubase 12 and Bitwig and didn't face any problem with the bitcrusher. The only thing I made differently from your graph is I added a saturation node, and put the bitcrush node before the sample&hold node :
-
@Matt_SF Thanks for sharing Matt! Something funky is going on with our project. I can't see why the split node would break only this effect for our plugin. We'll do some more digging.
-
This post is deleted! -
We've confirmed this is not just specific to our project but happens with any project on both Mac and PC in certain DAWs (Cubase, Bitwig, Live) using the most recent develop branch. We've tested on many different computers with all the permutations. I'm really not sure what's going on here, but it doesn't have anything to do with the bitcrusher. It happens when using the split node in any project. In certain DAWs, the VST will only Output the left channel, regardless of the effects in the chains.