Ndef(\lcmnoise).play
Ndef(\lcmnoise).fadeTime = 10;

(
Ndef(\lcmnoise, {
	var snd, revchain;
	snd = [
		tanh(lcm(SinOsc.ar(
			LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
		).range(-100,100).round(1),SinOsc.ar(
			LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
		).range(-100,100).round(1))*0.0001),
		tanh(lcm(Saw.ar(
			LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
		).range(-100,100).round(1),LFCub.ar(
			LFNoise0.kr(LFNoise0.kr(1/10).exprange(0.1,1)).exprange(1,15000)
		).range(-100,100).round(1))*0.0001)
	] ;
	snd = BHiPass.ar(snd, 180);
	snd = snd.softclip * 0.8;
	snd = Splay.ar(snd, spread:1);
	revchain = snd * Lag.ar(
		in: LFPulse.ar(
			freq: LFNoise0.ar(1).exprange(0.01,2),
			width: 0.001),
		lagTime: 0.1)
	* LFNoise1.ar(1).range(10,10000);
	
	revchain = Greyhole.ar(
		in: revchain,
		delayTime: LFNoise1.ar(1).range(0.0001,0.2),
		damp: 0.5,
		size: LFNoise1.ar(0.1).exprange(0.0001,5),
		feedback: 0.95);
	
	revchain = LeakDC.ar(revchain);
	revchain = Limiter.ar(revchain) * LFNoise1.ar([1,1]).range(0,0.9);
	snd = snd * LFNoise0.ar([0.9,0.8]).range(0,2);
	snd = snd + revchain;
	snd = LPF.ar(snd.softclip, LFNoise1.ar(0.1).exprange(100,20000)) * 1;
})
)

Ndef(\lcmnoise).release
