Gaussian Blur 2D patch for Lich

Oh, good question, I haven’t looked at the output in XY mode on ZeroScope. I’ve been visualizing it as square textures for left and right channels because the blur is two-dimensional within each channel, so doing that hints at the Y-Axis blurring that’s occurring. But the Lissajous mode might be interesting when skewing texture size or blur on a mono signal.

I tweaked a few things in the patch and improved the resampling I’m using so that it doesn’t introduce as much resonance to the signal. So I’ve finally recorded a new version of the demo video with the updated sound of the patch. It’s very different, it turns out, and much more of a low pass filter like one would expect. Oh and I use the XY mode on the ZeroScope for most of it, which is pretty interesting on a square wave.

1 Like

It took quite a while to finish this one, didn’t it? But the patch finally sounds right.

I have a small suggestion to try regarding feedback. You can use a complex number describing feedback when dealing with quadrature audio. The way I usually do it is by adding 2 parameters - FB magnitude and FB angle and storing current value in a ComplexFloat. Then you can use that number’s real/imaginary parts to set feedback for each channel.

With a scalar feedback you can see its effect that distorts waveshape diagonally, but using complex value you can rotate it by adjusting angle. It’s easier to see it on the scope than describe.

I’m not sure I understand what you are suggesting for feedback and I don’t think the audio in this patch is quadrature? Are you suggesting that it could be treated that way? If you can point me to a code example of what you are talking about, that might be easiest for me to grasp.

Although, yes, I did notice the diagonal waveshaping effect of feedback on a sine wave during testing at one point.

Well it’s an effect processor that takes 2 channels. So if you’re sending data in quadrature (or we should probably say complex audio signal), it would be processed as such. And you have 2 separate channels of feedback, so they can be applied in a fashion I’ve described.

The code is rather simple, here are relevant pieces as used in polygonal VCO:

1 Like

Either I’m still confused about how you see this being applied, or possibly you are confused by what I’m talking about when I talk about blurring along the X and Y axis. I’ve tested out an addition of feedback angle and realized that in the context of this patch, it just amounts to skewing the level of feedback applied to the left and right channels of audio, which is more interesting when processing a raw waveform like square or triangle because light feedback will waveshape them in subtle ways without producing a ringing tone. But for more complex material, like a drum loop, turning up feedback just produces a ringing sine wave, so adjusting the angle just pans this ringing to the left or right.

Here’s the change so you can see if I’m implementing this as you are suggesting:

The X and Y-axis blur passes are performed in series and both the left and right channels have XY blurs applied to them. So it’s not that I process the left channel of audio and wind up with a complex signal that this complex feedback could then be applied to. However, what might be interesting is to add feedback to the BlurProcessor implementation and then give the GaussianBlurSignalProcessor a setFeedback method like the one for your Polygonal Oscillator. This would allow setting feedback levels for the X and Y blur passes differently, with potential feedback signal inversion as a result. This makes more sense to me, since the X and Y blur passes are essentially delayed low-pass filters (although Y-axis is not quite this because it can lerp between non-adjacent samples when sampling the signal), to set the feedback amount for each delay-filter independently.

No confusion here, I just wanted to bring up the complex feedback topic as a possible addition to this patch. I understand that at this stage audio channels are treated as dual mono. Such modification to feedback obviously doesn’t change it considerably, but adds and extra dimension that can be modulated.

Or some kind of complex signal, like knoscillator’s output :wink: That said, I usually add a channel of feedback or two to any attempt of making complex VCO.

Ok, cool, glad we are on the same page! I did wind up implementing complex feedback internal to GaussianBlurSignalProcessor just to see how it would sound. It’s interesting and with light feedback provides a parameter that can be swept that subtly alters the timbre of the sound. With higher feedback it can result in two feedback tones: one bass tone from the X-axis and one higher tone from the Y-axis. These are a bit more interactive than the single tone produced in the public version of the patch, but I’m not sure how much I like it, so I’ll probably play around with it a bit more. It’s checked into my development branch if you want to try it out:

The version above where it’s just essentially skewing feedback amount feels like it fits a bit better with the Patch as it stands, since the notion of stereo skew is already present for texture size and blur size. One thing I’ve noticed is that feedback becomes more sensitive under lower blur size settings, so I wonder if it might make sense to use the amount that blur size is skewed as the feedback angle.

Oh good point, I think I will add this when revisiting Knoscillator for Genius.