Subtract dry signal "out of" a wet signal? (Process ideas)

I’m experimenting with VCV Rack, combining and modulating audio files with each other in funny ways, and I’m trying to find a good general definition or method of “subtracting” a clean signal from an affected version of itself.

I’ve used an envelope follower from a dry signal to duck/side-chain a wet signal, and this is the closest thing I can find to what I’m imagining, but I’m looking for something a little more surgical.

Phase inversion however is a little too precise. Mixing a signal with its exact inversion is silence; mixing slightly different wet audio inverted just produces quiet signals, not interesting ones I think.

“Dry” vs “wet” signal isn’t exactly what I mean here. In my question here, folks mentioned Soothe and Isotope Declicker’s weird switch feature of outputting JUST the removed sound. In this case, the clicks are exactly what I’m after: the “difference” between the declicked (“wet”) track and the original (“dry”).

Similarly, the link posted here downsamples an mp3 and subtracts it from the original file, exporting just the differences/compression artifacts. The artifacts would be what I’m after.

Anyway I’m looking for a more generalized or other approaches of subtraction, ideally in a patchable environment. Thanks for any techniques or ideas!

ISO: ghosts, silhouettes, fuzzy gaps, isolated backgrounds, etc

1 Like

As I understand it, this kind of subtraction comes in a few forms:

  • phase inversion which you covered

  • surgical dynamic eqs/multiband compressors

  • crazy machine learnt stuff like iZotope rx and its libre siblings

In my experience, unless you have a ton of control over the process and can do something like “blend the wet with an inverted dry”, it’s not that possible. There’s just too much information in sound, and humans are too good at picking up super-subtle changes / quiet sounds.

Anyway that’s my think-aloys on the subject, maybe it’s helpful!

1 Like

I’m not sure the result in general can be defined, for instance what result would you expect on a reverb (100% wet)?
For a specific effect it’s always better to address the problem at the source. As an example, both modes of bitcrushing (quantization and aliasing) can be designed so only the artifacts remain, this is the same as subtracting the input signal after the effect. But in practice, a third-party bitcrusher may introduce some unknown latency, filtering, or gain, possibly variable if the parameters change, so without getting inside the code or controlling the implementation yourself it may be difficult to get good and stable results.

if the effect is truly “black box”, a recursive least-squares (RLS) adaptive filter could work, the idea is to design a filter such that, if the dry signal is passed through the filter and subtracted from the wet signal, the mean-square amplitude of the difference is minimized. This only works if the “filter” is linear, it will take care of things like unknown latency, gains, or equalization. But it can be useless in case of nonlinear processing. Which is to say, and maybe you want this, the nonlinear processing is what is left over in the result.

In practice things are not so good, if the linear processing is variable, or if you don’t know the filter order, the RLS will have a tough time tracking this variation, so you will get extra artifacts in the result, unless you spend a lot of time tuning parameters for each separate effect.

There are probably better solutions for nonlinear processing if you use deep learning, but I’m not as aware of these strategies, and it could be a very large project. RLS is fairly quick to implement.

So in the interest of time, practicality etc. It would be best if you focus on a specific effect (mp3 encoding, bitcrushing etc.), Try to get a hold of the code and modify it to do the subtraction manually where you have control and everything is known.

This isn’t exactly the same, but you’d probably get some interesting results playing with Mid-Side processing; for instance if you fed the wet and dry signals into left and right, the “side” result would be a kind of subtraction of one from the other.

2 Likes

I haven’t used it for ages but would Metasynth be able to do something like this? IE, visually subtract an unprocessed (dry original) image from a processed (100% wet) image?

1 Like