At 5’ of this video : Cybernetics I - Basic Feedback - YouTube
Here is how I would translate the patch in SuperCollider

(
Ndef(\test, {
	var freq, sig;
	freq = LocalIn.ar(1);
	sig = DFM1.ar(SinOsc.ar(freq: freq.scope * \sin_freq.kr(1.0, 0.1)), \filter_freq.kr(1000, 0.1), \filter_res.kr(0.1, 0.1));
	LocalOut.ar(sig.scope);
	sig;	
}).play;
)

(
Spec.add(\freq, [20, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\sin_freq, [20, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\filter_freq, [20, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\filter_res,[0, 1.5, 'lin', 0.001, 0.1].asSpec);
)

Ndef(\test).gui

Sounds great :slight_smile:

9 Likes

Crikey @ThanosF that video+audio of yours in the top post is totally captivating! Thanks for sharing. I need to catch up on the material in this thread. It’s gold.

1 Like

I’m keeping an eye on these diagram ‘translations’ to maybe try and recreate in pure data when I get the chance

After the SuperCollider meetup yesterday, we decided to start a thread on this topic on scsynth.org
Do you want me to cross-post the SC code here and on scsynth.org ?

  1. Feedback loop with a filter only.
    https://youtu.be/MnYkqlSIr_I?t=177
(
Ndef(\test, {
	var in, sig;
	in = LocalIn.ar(1) * -60.dbamp;
	sig = DFM1.ar(in, \filter_freq.kr(1000, 0.1), \filter_res.kr(0.1, 0.1));
	LocalOut.ar(sig);
	sig.tanh;
}).play;

Spec.add(\filter_freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\filter_res,[0, 1.5, 'lin', 0.001, 0.1].asSpec);
)

Ndef(\test).gui;
  1. Feedback loop with sine oscillator
    https://youtu.be/MnYkqlSIr_I?t=268
(
Ndef(\test, {
	var freq, sig;
	freq = LocalIn.ar(1);
	sig = DFM1.ar(SinOsc.ar(freq: freq * \sin_freq.kr(1.0, 0.1)), \filter_freq.kr(1000, 0.1), \filter_res.kr(0.1, 0.1));
	LocalOut.ar(sig);
	sig.tanh;
}).play;

Spec.add(\freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\sin_freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\filter_freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\filter_res,[0, 1.5, 'lin', 0.001, 0.1].asSpec);

Ndef(\test).gui
)
  1. Feedback loop with two sine oscillators and FM synthesis
    https://youtu.be/MnYkqlSIr_I?t=501
(
Ndef(\test, {
	var in, sig, sine1, sine2;
	in = LocalIn.ar(1);
	sine2 = SinOsc.ar(\sin2_freq.kr(440.0));
	sine1 = SinOsc.ar(freq: \sin_freq.kr(440.0) * (1 + (\fm_amount.kr(0) * sine2)) * in);
	sig = DFM1.ar(
		sine1,
		\filter_freq.kr(1000),
		\filter_res.kr(0.1)
	);
	LocalOut.ar(sig);
	LeakDC.ar(sig.tanh);
}).play;

Spec.add(\freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\sin_freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\sin_freq2, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\fm_amount, [0, 10, 'lin', 0, 0].asSpec);
Spec.add(\filter_freq, [0.1, 14000, 'exp', 0, 440, "Hz"].asSpec);
Spec.add(\filter_res,[0, 1.5, 'lin', 0.001, 0.1].asSpec);

Ndef(\test).gui;
)

Have a good day

Geoffroy

12 Likes

Hi Geoffroy, i don’t think is best to cross-post the SC code. You have shared the link so if anyone’s interested specifically about SC then they can check it there. Great stuff though, keep it up!

1 Like

i always find it helpful for patches like this to add some (short) delay elements to the feedback loops (DelayC, AllpassC). this will let you tune the characteristics of the inherent block-sized delay from the LocalIn/LocalOut pair and maybe (by small modulations?) get you closer to the organic qualities of analog feedback networks.

(there are even tricks for doing feedback within a single block - specifically using/abusing DBufWr/DBufRd and Demand.ar. but this will be inefficient and won’t let you use non-demand UGens directly.)

@ThanosF we have lots of supercollider discussions over here and a platform (norns) which supports SC work, so i don’t think it’s inappropriate.

7 Likes

Yeah idk, this seems super relevant to the topic, and makes this conversation a lot more helpful and open. Considering nearly all the cybernetic tutorials on YouTube are Serge based, and that this is a computer music forum, I personally really appreciate the Supercollider code. It also makes me much more willing to participate in this conversation, rather than just watching from afar. I also think the open source aspect of SC is helpful for disseminating these concepts to more people. Sorry for hopping on you! Not trying to be rude or anything, just my 2 cents.

5 Likes

I always forget to check the sc forum and think that the examples given are quite a good chance for those of us who try to get into supercollider more. Therefore I’d welcome crossposting. Does it really matter which system/devices you use? Serge, Euro, PD, Supercollider, Ppooll or any other MaxMsp thing…, there are quite a few options and I’d be happy to see these all here.

Fair enough! Any SC patches are welcome here. My only concern was that the forum curators would not want cross-posting. But they can contact us if they think it’s not appropriate. So feel free to share any patches for any system. I’ll be sharing some patches for a Serge modular system soon.

2 Likes

I’ve been more and more interested in this sort of patching ever since the Feedback February compilation some of the folks took part in here last year. Lots of great patches in that thread that line up with the ideas here.

What are all the ways in a modular system to set up a non-linearity within a feedback loop? I get the comparator example given in La Synthese Humaine’s intro video, since there is an arbitrary threshold that will produce either on or off results. But what other functions are non-linear? Wave folders?

EDIT: Reading up on it more, it seems like nonlinear functions are just any where, if you were to plot them on a graph, the result would not be a straight line. Is that the case, or am I oversimplifying it?

1 Like

The Triple waveshaper and Wavefolder yes. They introduce chaos in the system. I have a few videos on my YouTube channel with some patches. I’ll share a patch tonight.

There’s an interesting Max thing called ‘Feeback Network’ - that can be found in the live devices. Might interest folk here:

It has an interesting mechanism where it analyses feedback levels and adjusts the gain back to a set equilibrium over time. Does that make it conform to cybernetic principles?

“Feedback Network features an Auto-Feedback mode that will gradually turn up the volume of all the Feedback Units until the volume level reaches a threshold, at which point it will turn them down a bit, and keep riding the volume controls to maintain constant feedback. At any point you can adjust the volume parameters manually to provoke the system into activity.”

3 Likes

That’s very interesting! The most interesting results are when feedback starts becoming chaotic, then dialing it down a little you can get some unique sounds or rhythmic elements combines with certain frequencies. Can you upload a recording of this device?

1 Like

Sure, here it is:

The first 12 or so seconds are the dry sound going into it, then I plug it into the feedback network. You can see it riding the feedback level on the gui panel.

3 Likes

AMAZING. Are you playing with the Randomize button? With a bit of tweaking, mixing some annoying frequencies and throw in a spatial effect you could do amazing things with it.

Ok, i’ll try to share this simple feedback patch that you can experiment for hours. I’m using 2 Serge modules but you can easily do this with a multi-filter and Maths. I’m using the VCFQ and DUSG.
Connections:
VCFQ LP out => mixer
VCFQ BP out => 1v-Oct DUSG (left side)
VCFQ NOTCH out => IN DUSG (left)
DUSG Pulse Out (left) => VCF on VCFQ
DUSG Out (left) => IN VCFQ
DUSG BP OUT (right) => VCQ on VCFQ
Turning knobs slowly has major influence on what’s happening. The right side of DUSG is making the frequency jump higher and it’s important to create something more interesting. You could try to patch the right side of DUSG with the output of the filter for more complex connections.

3 Likes

I’m gonna patch up a version of this on my Voltage Research Lab, thank you!

1 Like

No, it does that itself! You can change quite a few parameters, including the rate of change and response. As is, that demo represents most of its range of sounds, but I expect it would get more interesting if you built a patch around and inside it, rather than thinking of it as an effect.

1 Like

This is huge for the Kayn fans—so much music is helping me get just the tiniest glimpse of his process:

2 Likes

Yes indeed! Ilse is doing a great job making Kayn’s work available for everyone which is incredible. We have so much to learn from his works and we’ve just started!

2 Likes