nice fucking patch
parent
0aed7d5205
commit
c63e565483
@ -0,0 +1,13 @@
|
||||
DRC
|
||||
|
||||
1 OSC Square Wave dropped one octave
|
||||
2 OSC same volume, same octave, square wave, fine detuning (right),
|
||||
|
||||
1 EG slowish attack, normal ds, raise release a little bit
|
||||
2 EG increase modulation a little bit
|
||||
2 EG raise attack to half, bring decay to maximum, sustain to half, raise release a little bit
|
||||
|
||||
chorus: low rate, norma depth, no feedback
|
||||
lpf: 800, subtle resonance
|
||||
|
||||
reverb: loads of decay and a nice amount
|
||||
@ -0,0 +1,92 @@
|
||||
(
|
||||
SynthDef(\boc_pad, {
|
||||
arg freq = 210, amp = 0.1, att = 2, dec = 3, sus = 0.1, rel = 0, detune = -8,
|
||||
lpfFreq = 800, rq = 0.3, revMix = 0.5, revSize = 20, revDamping = 0.5,
|
||||
tremRate = 10, tremDepth = 0.8; // Tremolo parameters
|
||||
|
||||
var osc1, osc2, env, sig, filt, chorus, reverb, tremolo;
|
||||
|
||||
osc1 = SinOsc.ar(freq, 0.5);
|
||||
osc2 = Saw.ar(freq * (1 + detune), 0.5);
|
||||
sig = Mix([osc1, osc2]) * 0.5;
|
||||
env = EnvGen.kr(Env.adsr(att, dec, sus, rel), doneAction: 2);
|
||||
filt = RLPF.ar(sig, lpfFreq, rq);
|
||||
chorus = CombL.ar(filt, 0.01, LFDNoise3.kr(2).range(0.005, 0.01), 0.3);
|
||||
|
||||
// Reverb
|
||||
reverb = GVerb.ar(chorus, revSize, revDamping, mul: revMix);
|
||||
|
||||
// Tremolo (amplitude modulation)
|
||||
tremolo = SinOsc.kr(tremRate).range(1 - tremDepth, 1);
|
||||
|
||||
Out.ar(0, reverb * tremolo * env * amp);
|
||||
}).add;
|
||||
)
|
||||
|
||||
(
|
||||
Pbind(
|
||||
\instrument, \boc_pad,
|
||||
\freq, Pseq([
|
||||
[60, 64, 67].midicps, // C major
|
||||
[62, 65, 69].midicps, // D minor
|
||||
[57, 60, 64].midicps, // A minor
|
||||
[55, 59, 62].midicps // G major
|
||||
], inf), // Infinite loop
|
||||
\dur, 1, // Each chord lasts 2 beats
|
||||
\amp, 0.1
|
||||
).play;
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(
|
||||
Pbind(
|
||||
\instrument, \boc_pad,
|
||||
\freq, Pseq([
|
||||
[40, 50, 59].midicps,
|
||||
[62, 65, 67].midicps,
|
||||
[50, 58, 64].midicps
|
||||
], inf), // Infinite loop
|
||||
\dur, 2, // Each chord lasts 2 beats
|
||||
\amp, 0.008
|
||||
).play;
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(
|
||||
SynthDef(\boc_pad, {
|
||||
arg freq = 210, amp = 0.1, att = 0.3, dec = 0.3, sus = 0.1, rel = 0, detune = 0.1,
|
||||
lpfFreq = 2000, rq = 2, revMix = 0.5, revSize = 20, revDamping = 0.5,
|
||||
tremRate = 3, tremDepth = 0.1; // Tremolo parameters
|
||||
|
||||
var osc1, osc2, env, sig, filt, chorus, tremolo, panLeft, panRight;
|
||||
|
||||
// Generate two oscillators
|
||||
osc1 = Pulse.ar(freq, 0.5);
|
||||
osc2 = Pulse.ar(freq * (1 + detune), 0.5);
|
||||
sig = Mix([osc1, osc2]) * 0.5;
|
||||
env = EnvGen.kr(Env.adsr(att, dec, sus, rel), doneAction: 2);
|
||||
|
||||
// Lowpass filter
|
||||
filt = LPF.ar(sig, lpfFreq, rq);
|
||||
|
||||
// Apply a chorus to create stereo width
|
||||
chorus = CombL.ar(filt, 0.01, LFDNoise3.kr(1).range(0.008, 0.1), 0.3);
|
||||
|
||||
// Apply tremolo for amplitude modulation
|
||||
tremolo = SinOsc.kr(tremRate).range(1 - tremDepth, 1);
|
||||
|
||||
// Split the signal into two channels and pan them
|
||||
panLeft = chorus * tremolo * env * amp * 0.5; // Left channel
|
||||
panRight = chorus * tremolo * env * amp * 0.5; // Right channel
|
||||
|
||||
// Slightly pan the signals to create a stereo image
|
||||
Out.ar(0, [panLeft, panRight]); // Send to both left and right channels
|
||||
}).add;
|
||||
)
|
||||
@ -0,0 +1,98 @@
|
||||
(
|
||||
SynthDef(\mellotronFlute, {
|
||||
arg freq = 440, amp = 0.8, gate = 1, pan = 0, vibratoRate = 1, vibratoDepth = 0.15,
|
||||
noiseLevel = 0.2, ringModFreq = 3, lpfFreq = 2000, res = 0.8, lpfLfoRate = 1, lpfLfoDepth = 100,
|
||||
detune = 0.005; // Detune amount (in ratio)
|
||||
|
||||
var sig, osc1, osc2, vibrato, noise, env, lpfMod, freq1, freq2;
|
||||
|
||||
// Natural vibrato (LFO)
|
||||
vibrato = SinOsc.kr(vibratoRate, 0, vibratoDepth).range(0.98, 1.02);
|
||||
|
||||
// Detuned frequencies (slight offsets)
|
||||
freq1 = freq * (0.99); // Slightly sharp
|
||||
freq2 = freq * (1.01); // Slightly flat
|
||||
|
||||
// 1st Oscillator: Triangle waves with vibrato
|
||||
osc1 = Mix([
|
||||
LFTri.ar(freq1 * vibrato),
|
||||
LFTri.ar(freq2 * vibrato)
|
||||
]) * 0.5; // Mix detuned voices
|
||||
|
||||
// Pink noise mixed into the first oscillator for breathiness
|
||||
noise = WhiteNoise.ar(noiseLevel);
|
||||
osc1 = Mix([osc1, noise * 0.5]); // Blend noise into osc1
|
||||
|
||||
// 2nd Oscillator: Detuned ring modulation for a natural tone
|
||||
osc2 = Mix([
|
||||
Saw.ar(freq1 * ringModFreq),
|
||||
SinOscFB.ar(freq2 * ringModFreq)
|
||||
]) * 0.5 * osc1; // Ring-modulated with detuned pair
|
||||
|
||||
// Mix oscillators together
|
||||
sig = Mix([ osc1, osc2 * 0.5]);
|
||||
|
||||
// LFO for filter frequency modulation
|
||||
lpfMod = SinOsc.kr(lpfLfoRate).range(lpfFreq - lpfLfoDepth, lpfFreq + lpfLfoDepth);
|
||||
|
||||
// Low-pass filter with LFO modulation and slight resonance
|
||||
sig = RLPF.ar(sig, lpfMod, res);
|
||||
|
||||
// Envelope (slow attack for a natural swell)
|
||||
env = EnvGen.kr(Env.adsr(0.2, 3, 1, 2), gate, doneAction: 2);
|
||||
|
||||
|
||||
// Apply envelope and amp
|
||||
sig = sig * env * amp;
|
||||
|
||||
sig = sig.tanh(8);
|
||||
sig = BLowShelf.ar(sig, 200, 0.5, 9);
|
||||
// sig = sig.blend(GVerb.ar(sig, 200, 4), 0.15);
|
||||
|
||||
|
||||
|
||||
|
||||
// sig = sig.blend(BPF.ar(sig, 800, 0.5), 0.9);
|
||||
// Output with panning
|
||||
Out.ar(0, Pan2.ar(sig, pan));
|
||||
}).add;
|
||||
)
|
||||
|
||||
// Play the flute synth
|
||||
x = Synth(\mellotronFlute, [\freq, 53.midicps, \detune, 0.1]); // Slight detune for a richer sound
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(
|
||||
Pbind(
|
||||
\instrument, \mellotronFlute, // Use your SynthDef
|
||||
\freq, Pseq([[48, 20, 53], [10, 58, 60], [55, 72, 74], [10, 63, 70]].midicps, inf), // Sequence of MIDI notes converted to Hz
|
||||
// \freq, Pseq([[50, 65], [55, 72], [72, 74], [48, 20]].midicps, inf), // Sequence of MIDI notes converted to Hz
|
||||
\detune, Pseq([0.2], inf), // Varying detune values
|
||||
\dur, Pseq([2], inf), // Duration per note
|
||||
\amp, 0.08
|
||||
;
|
||||
).play;
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(
|
||||
Pbind(
|
||||
\instrument, \mellotronFlute, // Use your SynthDef
|
||||
// \freq, Pseq([[53]].midicps, inf), // Sequence of MIDI notes converted to Hz
|
||||
\freq, Pseq([[50, 65], [55, 72], [72, 74], [48, 20]].midicps, inf), // Sequence of MIDI notes converted to Hz
|
||||
\detune, 1.01, // Varying detune values
|
||||
\dur, Pseq([0.8], inf), // Duration per note
|
||||
\amp, 0.1;
|
||||
).play;
|
||||
)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue