Fake resonance , aka windowed sync

Given the suggestions of Scott and James, a solution would be easy. Clearly, as you just started with SC, this is not obvious and nearby: a pseudo ugen class fitting your needs. The definition would be really short, here’s a quick variant:

RingSync : UGen {
	*ar { |in, freq|
		var phase = Sweep.ar(in, freq);
		var synced = SinOsc.ar(0, (phase % 1) * 2pi);
		^synced * in
	}
}

Save as .sc file in the Extensions folder, restart SC and then the bespoken example turns into a one-liner:

{ RingSync.ar(LFTri.ar(250), 300) * 0.1 }.play

{ RingSync.ar(LFTri.ar(250), [300, 1000]) * 0.1 }.play

Further variants: choice of synced waveform per integer argument or by passed buffer(s), differing modulation algebra, leaking option etc.

BTW you can also search the mailing lists for “hard sync”:

For sc-users it gives 19 hits, including historically interesting ones:

https://www.listarc.bham.ac.uk/lists/sc-users-2004/msg07779.html

1 Like