Sound Design Feedback Thread, Dec. 2023

Playing off @dietcv, if you’re having trouble with form and development, make every sound goal-oriented. Ask yourself what direction it’s going in. You can start by designing the most important and exciting moments and then work backwards by writing a buildup. Practice doing that and you’ll develop more of a sense of phrasing and you won’t get stuck as often.

Lack of transitions is a common beginner problem in dance music production (it’s something instrumental musicians do naturally, but electronics don’t) and many styles of experimental music benefit from thinking about anticipation as well.

Really appreciate your suggestions, @nathan, @dietcv. I like the jump-cut aesthetic of some “computer music,” with a lot of short parts consisting of just a few sounds each, but it’s challenging for me to keep a piece going without dissolving into randomness. I tend to just accumulate sounds, starting with some 10–30 sec fragment and building around that, and I indeed always get stuck pretty quickly.

just my humble opinion, but i think most of the contemporary computer music stuff doesnt have the ideas or tools at hand to create form and makes a virtue out of this, you can do better!

I get your point. But I am also interested in how tools and aesthetics mutually influence each other—the ways in which software like SC lends itself to structuring music on different time scales will affect the music people make with it

1 Like

There is this one book by mark fell about the relationship of tools and aesthetics. But alot of what he is saying is only true if you are working in a specific narrow range of music IMO. There are also pieces, where im not really sure who the author is, when its purely about the algorithm at use, invented by a third person.

But we are on the same boat i guess, alot of times im experimenting and make these single layer sounds and wondering what to do with it, its free for roasting:

1 Like

Hi everyone,
I had never approached sc with a mentality more linked to the world of music production as I found in Nathan’s tutorials, so with a little patience I tried to redo his tutorials and some songs

In the latter, I must say that there are many interesting ideas and the kicks sound good.
I find it also interesting from a pedagogical point of view to have references that are not too complex.
I think it would be fascinating to try with other types of synthesis, wavetable, FM/PM etc…
I also find useful to use the VST plugin, both to view the spectrum clearly and to practice using a plugin for mastering if needed.

Here an article about this topic Drop It: The Kick in Electronic Music | Ableton

SC_240106_142831.aiff (441.1 KB)

I attach the unmodified file resulting from studying the tutorial.

// step 1 for Glue = Distorsion



// parallel distorsion snd + (snd.tanh)

(
SynthDef(\snare,{
	var snd, ratio, dur, amps;
	ratio = [1, 2.3, 3.5, 5.8];
	dur   = [2, 0.4, 0.2, 0.1];
	amps  = [0, -20, -12, -18].dbamp;

	snd = SinOsc.ar(180 * (1 + (2 * Env.perc(0.001, 0.03).ar)) *ratio );//ratio
	snd = snd * Env.perc(0,dur ).ar; // dur partials
	snd = snd * (amps * -22.dbamp);
	snd = snd.sum;
	snd = snd + (BPF.ar(Hasher.ar(Sweep.ar),2120,0.3) * Env.perc(0.05, 0.1).ar * -3.dbamp);
	snd = snd +((snd * 13.dbamp).tanh * 12.dbamp); // distorsione parallela con volume e amp dist
	snd = snd * Env.perc(0.001, 0.3,curve: -6).ar(Done.freeSelf);
	snd = snd * \amp.kr(-5.dbamp);
	snd = Pan2.ar(snd,\pos.kr(0));
	Out.ar(\out.kr(~visionBus),snd);
}).play;


SynthDef(\Kickacoustic,{
	var snd;
	snd = SinOsc.ar(65 * (1 + (4 * Env.perc(0, 0.13 ,curve: -8).ar))
		* XLine.ar(1, 0.5, 1) * [1, 1.3, 3.4, 3.6, 4.2, 8.3, 9.4]);
	snd = snd * [0, -10, -6, -8, -20, -20, -25].dbamp;
	snd = snd * Env.perc(0,
		[1, 0.3, 0.015, 0.01, 0.03, 0.04, 0.05],
		[1, 0.3, 0.1, 0.03, 0.05, 0.1, 0.6] * 3).ar;
	snd = snd.sum;
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01)) * Env.perc(0.0001,0.01).ar * -5.dbamp);
	snd = snd + (BPF.ar(Hasher.ar(Sweep.ar), 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	//snd = snd * (1 + (2 * Env.perc(0.001,0.2).ar));// dist env
	snd = (snd * -12.dbamp).tanh;
	snd = LeakDC.ar(snd);
	snd = snd + (GVerb.ar(snd, 6, 1) * -30.dbamp);
	snd = snd * Env.perc(0.001,1.3,level: -3).ar(Done.freeSelf);
	//snd = Pan2.ar(snd,\pos.kr(0));
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).add;
)



Synth(\Kickacoustic).play(s, ~visionBus);
Synth(\snare).play(s, ~visionBus);


(
var s, bpm, beat;
s = Server.default;

bpm = 80;
beat = 60 / bpm; // quarti

~a = Routine({


	// Loop principale
	loop {

			s.bind { Synth(\Kickacoustic) };
		    (beat).wait;

		    s.bind {Synth(\snare) };
			(beat).wait;

	};
});
)



~a.stop;
~a.reset.play;





// Gverb fatness

(
SynthDef(\Kickacoustic,{
	var snd;
	snd = SinOsc.ar(65 * (1 + (4 * Env.perc(0, 0.13 ,curve: -8).ar))
		* XLine.ar(1, 0.5, 1) * [1, 1.3, 3.4, 3.6, 4.2, 8.3, 9.4]);
	snd = snd * [0, -10, -6, -8, -20, -20, -25].dbamp;
	snd = snd * Env.perc(0,
		[1, 0.3, 0.015, 0.01, 0.03, 0.04, 0.05],
		[1, 0.3, 0.1, 0.03, 0.05, 0.1, 0.6] * 3).ar;
	snd = snd.sum;
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01)) * Env.perc(0.0001,0.01).ar * -5.dbamp);
	snd = snd + (BPF.ar(Hasher.ar(Sweep.ar), 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	//snd = snd * (1 + (2 * Env.perc(0.001,0.2).ar));// dist env
	snd = (snd * -12.dbamp).tanh;
	snd = LeakDC.ar(snd);
	snd = snd + (GVerb.ar(snd, 6, 1) * -30.dbamp);
	snd = snd * Env.perc(0.001,1.3,level: -3).ar(Done.freeSelf);
	//snd = Pan2.ar(snd,\pos.kr(0));
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


// additive synt for more acoustic like sound


(
SynthDef(\Kickacoustic,{
	var snd;
	snd = SinOsc.ar(65 * (1 + (4 * Env.perc(0, 0.13 ,curve: -8).ar))
		* XLine.ar(1, 0.5, 1) * [1, 1.3, 3.4, 3.6, 4.2, 8.3, 9.4]);
	snd = snd * [0, -10, -6, -8, -20, -20, -25].dbamp;
	snd = snd * Env.perc(0,
		[1, 0.3, 0.015, 0.01, 0.03, 0.04, 0.05],
		[1, 0.3, 0.1, 0.03, 0.05, 0.1, 0.6] * 3).ar;
	snd = snd.sum;
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01)) * Env.perc(0.0001,0.01).ar * -5.dbamp);
	snd = snd + (BPF.ar(Hasher.ar(Sweep.ar), 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	//snd = snd * (1 + (2 * Env.perc(0.001,0.2).ar));// dist env
	snd = (snd * -12.dbamp).tanh;
	snd = snd * Env.perc(0.001,1.3,level: -3).ar(Done.freeSelf);

	snd = Pan2.ar(snd,\pos.kr(0));
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)



(
SynthDef(\Kickacoustic,{
	var snd;
	snd = SinOsc.ar(55 * (1 + (4 * Env.perc(0, 0.13 ,curve: -8).ar))
		* XLine.ar(1, 0.5, 1) * [1, 1.3, 3.4, 3.6, 4.2, 8.3, 9.4]);
	snd = snd * [0, -10, -6, -8, -20, -20, -15].dbamp;
	snd = snd * Env.perc(0,
		[1, 0.3, 0.015, 0.01, 0.03, 0.04, 0.05],
		[1, 0.3, 0.1, 0.03, 0.05, 0.1, 0.6] * 3).ar;
	snd = snd.sum;
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01)) * Env.perc(0.0001,0.01).ar * -5.dbamp);
	snd = snd + (BPF.ar(Hasher.ar(Sweep.ar), 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	//snd = snd * (1 + (2 * Env.perc(0.001,0.2).ar));// dist env
	snd = (snd * -12.dbamp).tanh;
	snd = snd * Env.perc(0.001,1.3,level: -3).ar(Done.freeSelf);

	snd = Pan2.ar(snd,\pos.kr(0));
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


// Changing noises

(
SynthDef(\Kickasimenv,{
	var snd;
	snd = SinOsc.ar(55 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)) * XLine.ar(1,0.6,1));
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(Hasher.ar(Sweep.ar) , 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd * (1 + (2 * Env.perc(0.001,0.2).ar));// dist env
	snd = ((snd * -3.dbamp)).tanh;
	snd = snd * Env.perc(0.001,1.3,level: -8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

// Env Asimmetrical distortion
(
SynthDef(\Kickasimenv,{
	var snd;
	snd = SinOsc.ar(55 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)) * XLine.ar(1,0.6,1));
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd * (1 + (2 * Env.perc(0.001,0.2).ar));// dist env
	snd = ((snd * -3.dbamp)).tanh;
	snd = snd * Env.perc(0.001,1.3,level: -8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)



// Asimmetrical distortion
(
SynthDef(\Kickasim,{
	var snd;
	snd = SinOsc.ar(55 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)) * XLine.ar(1,0.6,1));
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = ((snd * -3.dbamp) + 0.6).tanh;
	snd = snd * Env.perc(0.001,1.3,level: -8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


// Loose freq focus
// the kick are long...

(
SynthDef(\Kicktanh,{
	var snd;
	snd = SinOsc.ar(55 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)) * XLine.ar(1,0.6,1));
	snd = snd + (SinOsc.ar(XLine.ar(4000,50,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * 3.dbamp).tanh;
	snd = snd * Env.perc(0.001,1.3,level: -8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)





/*

distort, softclip, clip2, fold2, wrap2,
abs, max, squared, cubed
*/



(
SynthDef(\Kickclip,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(4000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * -20.dbamp).clip(0.01, 0.1);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * 10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kickpow,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.pow(0.1);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = Limiter.ar(snd);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kickpow,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd =(snd * -0.dbamp).pow(1.2);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = Limiter.ar(snd);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kickscubed,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.cubed;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kicksquared,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.squared;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kickmax,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.max(Rand(0.01,1));
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kickmax,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.max;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kickabs,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.abs;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)



(
SynthDef(\Kickwrap2,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.wrap2(Rand(0.1,1));
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kickflod2,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.fold2;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kickflod2,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.fold2(Rand(0.1,1));
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kicksoftclip,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.softclip;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kicksoftclip,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * 0.dbamp).softclip;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kickdistort,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.distort;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kickdistort,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * -6.dbamp).distort;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kickdistort,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * 10.dbamp).distort;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)




(
SynthDef(\Kickclip2,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * -3.dbamp).clip2;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kickclip2,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * -0.dbamp).clip2;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)



(
SynthDef(\Kicktanh,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd.tanh;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\Kicktanh,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = (snd * 8.dbamp).tanh;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)




// Noise filtered Kick

(
// choose the fre of the noise based on the hi hat and snare
SynthDef(\KickBPF,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01) * Env.perc(0.0001,0.01).ar * -5.dbamp));
	snd = snd + (BPF.ar(WhiteNoise.ar, 10120, 0.5) * Env.perc(0.001,0.03).ar * -8.dbamp);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\KickBPF,{
	var snd;
	snd = BPF.ar(WhiteNoise.ar, 19120, 0.1) * Env.perc(0.001,0.03).ar;
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)



// 2 sines well fused


(
SynthDef(\KickClick,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(ExpRand(1e+3,1e+4).poll,100,0.01)) * Env.perc(1e-4, 0.01).ar * Rand(-40,10).poll.dbamp);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\KickClick,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(ExpRand(1e+3,1e+4).poll,100,0.01)) * Env.perc(1e-4, 0.01).ar * 0.dbamp);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\KickClick,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01)) * Env.perc(0.0001, 0.01).ar * Rand(-40,10).poll.dbamp);// less presence
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\KickClick,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01)) * Env.perc(0.0001, 0.01).ar * -10.dbamp);// less presence
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

(
SynthDef(\KickClick,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01)) * Env.perc(0.0001, 0.01).ar);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\KickClick,{
	var snd;
	//snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd =   (SinOsc.ar(XLine.ar(8000,100,0.01)) * Env.perc(0.0001, 0.01).ar);
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

{SinOsc.ar(XLine.ar(8000,100,0.01)) * Env.perc(0.0001, 0.01).ar * Env.perc(0.001,0.8).ar(Done.freeSelf)!2}.play(s,~visionBus);

a ={SinOsc.ar(XLine.ar(8000,100,0.01)) * Env.perc(0.001,0.8).ar(Done.freeSelf)!2}.play(s,~visionBus);
a.free


// add another fast sine ~
// u can clearly hear 2 separeted sines
(
SynthDef(\KickClick,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd + (SinOsc.ar(XLine.ar(8000,100,0.01))); // crude way
	snd = snd * Env.perc(0.001,0.8).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


// \KickFat
(
SynthDef(\KickFat,{
	var snd;
	snd = SinOsc.ar(50 * (1 + (8 * Env.perc(0.001,0.3,curve: -8).ar)));
	snd = snd * Env.perc(0.001,1.01 ).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


Env.perc(0.001,0.3,curve: -8).plot

// Laser efx longer mod Env.perc(0, 0.3).ar
(
SynthDef(\Kick,{
	var snd;
	snd = SinOsc.ar(60 * (1 + (3 * Env.perc(0.001,0.3).ar))
		* (1 + (8 * Env.perc(0, 0.3).ar)));// cosi è 1+8 = 9 240 hz
	snd = snd * Env.perc(0.001,0.3).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


// Maggior attacco work on transient
// mettendo una doppia modulazione diventa più punchy arriva intorno ai 3k, prima lo spettro era a 1k..
// 240*9 = 2160 It should be around, obviusly in  0.01 sec

(
SynthDef(\Kick,{
	var snd;
	snd = SinOsc.ar(60 * (1 + (3 * Env.perc(0.001,0.3).ar))
		* (1 + (8 * Env.perc(0, 0.01).ar)));// cosi è 1+8 = 9 240 hz
	snd = snd * Env.perc(0.001,0.3).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)


(
SynthDef(\Kick,{
	var snd;
	snd = SinOsc.ar(60 * (1 + (4 * Env.perc(0.001,0.3).ar)));// cosi è 1+3 = 4 240 hz
	//snd = SinOsc.ar(60 * (1 + (3 * Env.perc(0.001,0.3).ar)));// cosi è 1+3 = 4 240 hz
	//snd = SinOsc.ar(60 * (1 + (1 * Env.perc(0.001,0.3).ar)));// cosi è 1+1 = 2 120 hz
	snd = snd * Env.perc(0.001,0.3).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -10.dbamp;
	Out.ar(\out.kr(~visionBus), snd);
}).play;
)

// parte da 240 e si ferma a 60
{SinOsc.ar(60 * (1 + (4 * Env.perc(0.001,5).ar)))!2}.play(s,~visionBus)

// va al di sotto del 60 hz alla fine
a ={SinOsc.ar(60 *   (4* Env.perc(0.001,5).ar))!2}.play(s,~visionBus) ;
a.free;

(
SynthDef(\Kick,{
	var snd;
	snd = SinOsc.ar(60);
	snd = snd * Env.perc(0.001,0.3).ar(Done.freeSelf);
	snd = snd ! 2;
	snd = snd * -12.dbamp;
	Out.ar(\out.kr(0), snd);
}).play;
)




(
// for visualization porposes only!
SynthDef(\vision,{
	var snd;
	snd = In.ar(\in.kr(0),2);
	ReplaceOut.ar(\out.kr(1),VSTPlugin.ar(snd,2,id: \vision));
}).add;
)
~visionBus = Bus.audio(s, 2);

// search of available VST plugins in the default VST search paths
VSTPlugin.search;

~vision = VSTPluginController(Synth(\vision,[in:~visionBus, out: 0]),id: \vision);
~vision.open("VISION 4X",editor:true, verbose: true);
~vision.editor;


//https://www.tomhall.xyz/project/maxmsplivestream1/



If you want to share your kicks or snares or just start exploring these materials, let’s have fun!

Ps: I just found this SynthDEFaults :pray:

Thanks for the compliments :slight_smile:

Some thoughts:

  • Limiter is lookahead and by default adds 10ms latency to the input signal. If you use it on percussion synthdefs where attack timing is critical, you can run into timing problems, which are surmountable but keep it in mind.
  • For a heavy gabber kick, the downward sweep can be as long as you want, but I prefer to keep it nice and snappy for cleaner techno/house kicks. Otherwise the transient can sound a bit diffuse and lose its punch, and it’s more of a laser than a drum. Further down this code snippet I think you catch on to this, but I’m noting this for the sake of anyone reading.
  • Many of these kicks such as \Kickpow have heavy distortion, and then a decaying envelope after the distortion. I’ve mentioned before in this thread that it can come off as cheesy if there’s a fade out added in post that affects no other parameters — this is especially true for highly exposed, full-spectrum sounds. In the case of fizzy gabber kicks, it’s more genre-appropriate to put the distortion after the decaying envelope, so it’s more of a “drive” than an amp env and causes a pleasing evolution in timbre. For the actual, final amplitude envelope, I like to use a blocky near-rectangle, which I accomplish with Env.asr or Env.linen. For a good example of how “on-off” distorted kicks are: Ruby My Dear - Babe 1:01 In general: order of amplitude envelopes and distortion is extremely important.
2 Likes

I like this clip! I often find it difficult to do something with sounds that are very dense with some but not much variation, so now I am trying to leave some space for other sounds to go with them, or to make the structure completely static.

Re writings on the relationship between tools and aesthetics, the chapter on Max/MSP in this book is pretty good (and open access): Music and Digital Media – UCL Press

yeah, you are right! im currently trying to make these high density rhythms an aesthetic:

and one contrasting additional output from the same instrument (the aliasing is bugging me though, these are only nice IMO if they are 100% clean, have to rework this one), what do you think of these?

EDIT: have figured out the aliasing, the reason was a leaky buffered window function. Its subtle but you hear it via headphones.

1 Like

The second rhythm example works better for my ears, as it has more internal contrast. I like how that last clip varies in density, from grains merging to going to a point where it almost seems possible to discern individual grains. I am curious how you envision these in a larger compositional context. In other words, where do they go, in terms of development, interacting with other sounds, etc.?

Yeah, second example is much more intriguing than the first (you can also alternate between forward and reverse envelopes). Both would be improved by a more human touch in the frequencies and durations. I’ve made this critique elsewhere in this thread, but the pitch material is prominent, and I’d like to hear a more compelling scheme than i.i.d. randomization. Try punching in frequencies manually for a few seconds of material and see what melodic contour you’re drawn to.

I like the 3rd too, very EVOL - The Worm. I have the same thoughts as @QQQQ — this sounds like it’s anticipating something, and it’d be very satisfying to hear this thing slide into a sudden, heavy, singular transient.

These are great suggestions @QQQQ @nathan

I will use the rhythm pattern to index into a set of pitches and envelope shapes for the first two examples.
The second one uses already a sequence of an exponential and a reversed exponential shape but independent from the main rhythmic pattern.

I think this will create a more convincing phrase and it should be more easy to think of accompanying material. thanks alot.

Im very happy with the result of the third one. will work on some additional variations.

some glitchy pulsar vibes:

1 Like

Great nervous energy here! Maybe there is too much going on at the same time, though, with not enough structure. I might try emphasizing the scratchy pulsar elements and dial back the more percussive, wooden sounds. Or think of some kind of overarching “scaffolding” (temporal or otherwise) to attach these sounds to.

LOVED That snippet… I love this kind of “tight” snappy sound.

You have a good texture, but it needs a little yin to balance the yang. Some off-the-cuff ideas: break up the scratches with moments of dead silence, momentarily switch between this and pure sine tones in the very high or very low frequencies, or contrast this unusual sound with something very commonplace. You could switch between the several different patches you’ve showed us, and quite quickly get a 3-minute-long tune out of that I figure.

thanks for all the suggestions @QQQQ @nathan :slight_smile:

hi, I’ve been enjoying this thread a lot. @dietcv , I am actually a big fan of how the aliasing sounds in your snippets… but it would be cool if you could smoothly modulate from aliasing to not aliasing…

My SC “sound designing” usually involves recorded sound but I’ve been trying to jam in more purely algorithmic computer synthesis more… anyway here is a little bit of a patch inspired by a video about the synclavier, interested in what to your ears the most interesting parts are and of course other critiques

2 Likes

yeah, thats no problem, if you mean interpolation between modulation and less modulation. not between modulation with aliasing and modulation with less aliasing.

Really nice stuff, I particularly like the section 41-48 seconds in.