Stable frequency modulated bandpass filters

Are there recommendations what would be a simple bandpass filter that is stable under frequency modulation?

I think we should have one in the common library.

1 Like

The SVF in my library is, could output a bpf version of that if needed.

I think there are a couple of SVFs in this library:

That should work for that (haven’t tried).

I think when I last did something like this I used the one in @dietcv library.

A library that feels like it needs a new name these days, as it does a lot more than just granular stuff.

Also, it’s always worth looking in the Faust library, as they have a lot of useful plugins and it’s pretty easy to get those working in SuperCollider (either directly as a UGen, or indirectly using the new Faust plugin).

Yes, in a sense, one could do this with the new DynGen. In sc3-plugins, there is an SVF by blackrain, but as far as I know, it isn’t the stable version.

Perhaps, there really should be a minimalist stable version of a set, maybe three of these in the core library.

@dietcv would you have time and like to make a pull request for it?

The SVF in the library is based on Andrew Simpers parallel output architecture.

Would you like to have dedicated Plugins for different filter types like LPF, BPF, APF etc. or one SVF Plugin with variable types?

If those are the ones I think they are - I’m not sure they should even be in the library, and certainly should have a big warning sign on them.

I think the ‘standard’ is just a single SVF plugin with variable types. Which I could have sworn yours did - I’m clearly thinking of a different filter :laughing:

It would be cool if there was a way to tap one or more of the filter outputs simultaneously. Maybe a variant which was multi out, and the user could select which outputs they wanted to use.

The Struct I have is capable of doing that. But currently im just using the allpass output in a cascade for my phaser Plugin. So let me know what you guys want :slight_smile:

I knew that I’d used something recently for this purpose:
https://doc.sccode.org/Classes/ComplexRes.html

Well both would be cool :slight_smile:

I can add an SVF plugin to the library in the upcoming days, then we can test that before we pull anything.

1 Like

Has anyone used Bertoms EQ Curve Analyzer in SC?

Sorry @julian - should have been clearer:

This filter does exactly what you want as it was designed specifically for this purpose:
https://doc.sccode.org/Classes/ComplexRes.html

updated the library with SimperSVF, you can choose between LPF, HPF and BPF.

Let me know how it goes :slight_smile:
EDIT: forgot one important sc_clip, now fixed:

(
{
	var sig, fltFreqMod, fltFreq;

	fltFreqMod = SinOsc.ar(\fltFreqMF.kr(0.3));
	fltFreq = \fltFreq.kr(800) * (2 ** (fltFreqMod * \fltFreqMD.kr(2)));

	sig = Saw.ar(55);

	sig = SimperSVF.ar(
		input: sig,
		freq: fltFreq,
		resonance: MouseX.kr(0, 1),
		type: 2 // 0: lpf, 1: hpf, 2: bpf
	);

	sig!2 * 0.1;
}.play;
)

s.freqscope;
2 Likes

if you dont select the filter types, just calculate the shared coefficients and interpolate between the mix coefficients (m0, m1, m2) which are the weights of the types, you can also continuously morph between the filters shapes with a shape param between 0 and 1 (0=lpf, 0.5=bpf, 1=hpf). Have tried that already, its working great :slight_smile:

2 Likes

It seems FM is already covered by ComplexRes and there is no need for an SVF implementation in the core library. Correct me if im wrong @julian. I will therefore replace the current SVF implementation in my library by the morphing SVF, i think thats a more interesting addition :slight_smile:

Nice, thank you very much @cian and @dietcv

The best paper on the topic is https://tai-studio.org/projects/complexres/media/Parker_2013.pdf

2 Likes