MM – Ocean Night SoundScape

Execute, lean back and relax.

You’ll need to install the ChordSymbol addon:

https://github.com/triss/ChordSymbol

You’ll also need EZConv for (convolution) reverb:

https://github.com/davidgranstrom/EZConv

Finally, get the IR here:

https://drive.google.com/open?id=1VNqi5w8qvcGphdp1VJErzVPqjF9ho96A

//Ocean Soundscape 2020 Matias Monteagudo.

//Here you can set your interface options.

(
Server.local.options.memSize=16384; //We need to increase this in order to use our big IR file.
Server.local.options.device = "ASIO : ASIO PreSonus FireStudio";
Server.local.options.sampleRate=48000;
Server.local.options.hardwareBufferSize=128;
s.boot;
)

//First add some reverb. (Convolution verb, no less!!)
//Load your IR.
(
~path="G:/IRs/Foley IRs - Real Spaces/Rverb and Trueverb/millenium dome.wav";
~ezConv=EZConv(~path);
)

~ezConv.numChannels;//Test how many channels your IR has.
~ezConv.free; //Unload the IR. You might want to do this before loading a new one.

//Evaluate the Reverb engine.
(
z.free; //This will free itself before each time you evaulate to avoid overload due to stacking.
(
SynthDef(\Convr, { |out, wet=0.1, dry=1|
	var signal, process;
	signal = In.ar(out, 2);
	process=~ezConv.ar([signal[0],signal[1]],0.1,1); //(signals, leak, mult)
	ReplaceOut.ar(0, (process*wet)+(signal*dry));
}).add;
);

z = Synth(\Convr, [\outbus, 0, \wet, 0.15, \dry, 0.8], addAction:\addToTail); //You can change wet/dry here.

)

z.free;//You can turn the reverb off here.

//Evaluate this chunk, lean back and relax.

(

//Synth star (bells)

(
SynthDef(\star, {
	|amp=0.5, fq=3200, edur=2, gate=1, bal= 0|
	var sig1,sig2,balpos,mix;
	sig1=LFTri.ar(fq, 0, EnvGen.ar(Env([0,amp,0],[0.01,edur],-4,0),gate,doneAction:2));
	sig2=LFTri.ar(fq+10, 0, EnvGen.ar(Env([0,amp,0],[0.01,edur],-4,0),gate,doneAction:2));
	balpos=Balance2.ar(sig1,sig2,bal,1);
	Out.ar(0, balpos)
}).add;
);

Synth(\star, [\bal, 0]);

//Synth pads. (chords)

(
SynthDef(\pad, {
	|amp=0.5, freq=300, edur=2, gate=1, bal= 0|
	var sig1,sig2,balpos,mix;
	sig1=LFTri.ar(freq,0.8,EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	sig2=LFTri.ar(freq+2,3,EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	balpos=Balance2.ar(sig1,sig2,bal,1);
	Out.ar(0, balpos)
}).add;
);

Synth(\pad, [\panpos, 0]);

//Synth high freq waves (foam)

(
SynthDef(\waveshi, {
	|amp=0.5, fq=5000, edur=2, gate=1, bal= 0|
	var sig1,sig2,filt1,filt2,balpos,mix;
	sig1=WhiteNoise.ar(EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	sig2=WhiteNoise.ar(EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	filt1=LPF.ar(sig1, fq);
	filt2=LPF.ar(sig1, fq);
	balpos=Balance2.ar(filt1,filt2,bal,1);
	Out.ar(0, balpos)
}).add;
);

Synth(\waveshi, [\panpos, 0]);

//Synth low freq waves (waves body)

(
SynthDef(\waveslo, {
	|amp=4, fq=1200, edur=2, gate=1, bal= 0|
	var sig1,sig2,filt1,filt2,balpos,mix;
	sig1=PinkNoise.ar(EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	sig2=PinkNoise.ar(EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	filt1=LPF.ar(sig1, fq);
	filt2=LPF.ar(sig1, fq);
	balpos=Balance2.ar(filt1,filt2,bal,1);
	Out.ar(0, balpos)
}).add;
);

Synth(\waveslo, [\panpos, 0]);

//Synth wavesst (stone dragging)

(
SynthDef(\wavesst, {
	|amp=1, fq=3200, edur=2, gate=1, bal= 0|
	var sig1,sig2,filt1,filt2,balpos,mix;
	sig1=GrayNoise.ar(EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	sig2=GrayNoise.ar(EnvGen.ar(Env([0,amp,0],[edur,edur],0,0),gate,doneAction:2));
	filt1=LPF.ar(sig1, fq);
	filt2=LPF.ar(sig1, fq);
	balpos=Balance2.ar(filt1,filt2,bal,1);
	Out.ar(0, balpos)
}).add;
);

Synth(\wavesst, [\panpos, 0]);

//Pbinds
(
u=Pbind(\instrument, \star, \gate,1,
	\amp, Pwhite(0.01, 0.08),
	\fq, Pwhite(3200,6000),
	\bal, Pwhite(-0.8,0.8),
	\edur, Pwhite(0.002,4),
	\dur, Pwhite(0.005,2)
).play
);

(
v=Pbind(\instrument, \pad, \gate,1, \scale,Scale.chromatic, \octave,4,
	\amp, 0.16,
	\degree,Prand([\Emajor7_Ds,\Gmajor7_Fs,\Dm7_Cs,\A7sus4].chordProg,inf), //All tetrades in 3rd inversion besides A7sus4.
	\bal, Pwhite(-0.8,0.8),
	\edur, 2,
	\dur, 12
).play
);

(
w=Pbind(\instrument, \waveshi, \gate,1,
	\amp, Pwhite(0.002, 0.07),
	\fq, Pwhite(4000,8000),
	\bal, Pwhite(-0.8,0.8),
	\edur, Pwhite(1,4),
	\dur, Pwhite(1,5)
).play
);

(
x=Pbind(\instrument, \waveslo, \gate,1,
	\amp, Pwhite(0.02, 0.7),
	\fq, Pwhite(1000,3500),
	\bal, Pwhite(-0.8,0.8),
	\edur, Pwhite(1,4),
	\dur, Pwhite(1,6)
).play
);

(
y=Pbind(\instrument, \wavesst, \gate,1,
	\amp, Pwhite(0.01, 0.25),
	\fq, Pwhite(1000,3500),
	\bal, Pwhite(-0.8,0.8),
	\edur, Pwhite(1,4),
	\dur, Pwhite(1,5)
).play
);
)

u.stop;//Stops stars
v.stop;//Stops chods
w.stop;//Stops wave foam
x.stop;//Stops wave body
y.stop;//Stops wave stone dragging.
Author
554 PM
  • Platform:
  • Category: Sound
  • Revision: 1.2
  • License: GNU Lesser General Public License family
  • Views: 738
  • Modified: 2 years ago
Chat about this patch on Discord!
Appreciate 1

Leave a Reply