Sound Design Feedback Thread, Dec. 2023

This is a piece I did 5 years ago:

Stream Bursty Exorbitance by Kosmas Giannoutakis | Listen online for free on SoundCloud.

The sound was generated exclusively by digital feedback (Feedback Delay Networks) and it was implemented in PureData. Now I am using similar mechanisms to “liquidate” (non-linearize) SCTweets during live coding.

1 Like

This is a rough sketch for how to maybe put together some sounds I recorded over the recent weeks. Is there anything interesting going on here? Not enough? Too many heterogeneous things? Any sounds that are too cliché?
Thanks for listening!

cool, i like the selection of sounds :slight_smile: i would have a look at the formal aspects of this arrangement and would try to make different candences of sets of two or three of these sounds to build phrases and sections with a clear direction.

And then arrange these phrases or sections with ideas of contrast in mind like variation / repetition, regularity / irregularity, complexity / simplicity, exposition / interaction, development / regression, dynamik / static, loud / quiet, wooden / metallic, bright / dull, etc.

I think especially exposition is strong here. In every new sections are sounds which havent been there before. So maybe take one motiv from a former section and come up with variations of this and reuse these variations in the later parts. For example the sine melody motiv from the opening section abruptly ends at 0:22 and could probably find its way into the other sections, by coming up with different variations of this initial motiv.

I would also try to change the timbral characteristics of the sounds over time for more complexity.

1 Like

The slower sine sounds were the ones that I thought might be too cliché. All the sounds are from some pulsar synthesis patches, with basic additional processing. The frequencies are randomized, yes. Structure and development is what I am struggling with most, so what you suggested is really helpful, @dietcv and @nathan

what might help is to set a duration of the entire piece at first, lets say 5 minutes.
You then divide this into arbitrary sections of different length, really doenst matter at this point, lets say 7 sections, so you have 5 minutes your entire piece, and 7 sections of different lengths to fill in your material.
These are not set in stone could be changed during working on the piece but something to start from.
And then you would build phrases which exactly have the duration of one of the 7 sections. This subtractive approach could help to not just add one phrase after the other with no clear direction or goal in mind and its cool because if you have filled in all the sections you are done.

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:

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.?

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.

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.