diff --git a/instruments.scd b/instruments.scd index 46a7a22..f2a79a4 100644 --- a/instruments.scd +++ b/instruments.scd @@ -1,130 +1,9 @@ ( -var sin_dict = BmDspAlgs.getDict("synths/distorted_sin.scd"); -sin_dict.makeSourceNdef(\sin_bass); +~dict = BmDspAlgs.getDict("spectral/fft_freeze.scd"); +~dict2 = BmDspAlgs.getDict("spectral/fft_freeze_follow.scd"); +~dict.makeBufferProcessingNdef(\freeze1); +~dict.makeBufferProcessingNdef(\freeze2); +~dict2.makeBufferProcessingNdef(\freeze3); -// TODO: use vars later -~granular_sampler_dict = BmDspAlgs.getDict("samplers/granular_sampler.scd"); -~granular_sampler_dict[\postAmp] = true; -~granular_sampler_dict.makeSourceSynthDef.add(); - -~layered_grain = (); -~layered_grain[\name] = \layered_grain; -~layered_grain[\slots] = ( - percussion: 1, - percussion_2: 2, - noises: 2, - pad: 3, - ambience: 4, - ambience_2: 6, - ambience2: 5 -); - -Ndef(~layered_grain[\name]).clear; -Ndef(~layered_grain[\name]).ar(2); -Ndef(~layered_grain[\name]).prime(~granular_sampler_dict[\name]); - -~melodic_grain = (); -~melodic_grain[\name] = \melodic_grain; -~melodic_grain[\slots] = ( - percussion: 1, - noises: 2, - pad: 3, - ambience: 4, - ambience2: 5 -); - -Ndef(~melodic_grain[\name]).clear; -Ndef(~melodic_grain[\name]).ar(2); -Ndef(~melodic_grain[\name]).prime(~granular_sampler_dict[\name]); - -// global fx chain -Ndef(~layered_grain[\name]).put(148, \filter -> { - | in | - Compander.ar( - in, - in, - \treshHold.kr(0.33), - \slopeBelow.kr(1.5), - \slopeAbove.kr(0.33), - \clampTime.kr(0.15), - \relaxTime.kr(0.6) - ); -}); - -Ndef(~layered_grain[\name]).put(149, \filter -> { - | in | - XFade2.ar(in, Convolution2.ar(in, ~sun_imp), \impulseDryWet.kr(-0.75)); -}); - -Ndef(~layered_grain[\name]).put(150, \filter -> { - | in | - MiVerb.ar(in, \rTime.kr(0.2), \rDryWet.kr(0.1)); -}); - -Ndef(~melodic_grain[\name]).put(149, \filter -> { - | in | - var d = in; - 4.do({ - | i | - var it = i + 1; - d = d + AllpassL.ar(d, 0.5, 0.1 * it, it.reciprocal, it.reciprocal); - }); - in + d; -}); - -Ndef(~melodic_grain[\name]).set(\wet149, 0.33); - -Ndef(~melodic_grain[\name]).put(150, \filter -> { - | in | - MiVerb.ar(in, \rTime.kr(0.2), \rDryWet.kr(0.1)); -}); - - -Spec.add(\treshHold, [0.0, 1.0, \lin]); -Spec.add(\slopeBelow, [1.0, 2.0, \lin]); -Spec.add(\slopeAbove, [0.0, 1.0, \lin]); -Spec.add(\clampTime, [0.01, 2.0, \lin]); -Spec.add(\relaxTime, [0.01, 2.0, \lin]); -Spec.add(\impulseDryWet, [-1.0, 1.0, \lin]); -Spec.add(\attack, [0.01, 2.0, \lin]); - -Ndef(~layered_grain[\name]).play; -Ndef(~melodic_grain[\name]).play; - -//Control nodes -Ndef(\main_pad_amp).clear; -Ndef(\main_pad_amp).kr(1); -Ndef(\main_pad_amp).put(0, { - var e = Env([0.0, \from.kr(-20.dbamp), \to.kr(-6.dbamp)], [0.0, \time.kr(10)], \curve.kr(1)); - EnvGen.kr(e, \gate.tr(0)); -}); -Ndef(\main_pad_amp).play; - -Ndef(\percussion_amp).clear; -Ndef(\percussion_amp).kr(1); -Ndef(\percussion_amp).put(0, { - var e = Env([0.0, \from.kr(-20.dbamp), \to.kr(-6.dbamp)], [0.0, \time.kr(10)]); - EnvGen.kr(e, \gate.tr(0)); -}); -Ndef(\percussion_amp).play; - -Ndef(\pad1_pan_mod).clear; -Ndef(\pad1_pan_mod).kr(1); -Ndef(\pad1_pan_mod).put(0, { - SinOsc.kr(\freq.kr(1), \phase.kr(0.0)).range(\from.kr(-0.25), \to.kr(0.0)); -}); -Ndef(\pad1_pan_mod).play; - -Ndef(\pad1_pan_mod).copy(\pad2_pan_mod); -Ndef(\pad2_pan_mod).set([\from, 0.0, \to, 0.25, \phase, 1.5]); -Ndef(\pad2_pan_mod).play; - -Ndef(\pad_dir_mod, { - Pulse.kr(1).range(0.8, 1.0); -}); - -Ndef(\pad_dir_mod).play; - -Ndef(\main_pad_amp).copy(\envMod4); -Ndef(\envMod4).play; +"instrumets loaded".postln; ) diff --git a/samples/typewriter-stereo-loop.wav b/samples/typewriter-stereo-loop.wav new file mode 100644 index 0000000..6126423 Binary files /dev/null and b/samples/typewriter-stereo-loop.wav differ diff --git a/scratchpad.scd b/scratchpad.scd index 2e138d1..1a27e49 100644 --- a/scratchpad.scd +++ b/scratchpad.scd @@ -1,35 +1,108 @@ -s.options.memSize = 2.pow(20); -s.boot; - +~samples = ~makeBuffers.("/home/dude/code/24_09_2026_gig", ()); +~sample = ~samples[\samples][0]; ~inBus = Bus.audio(s, 1); -~out = { Out.ar(~inBus, SoundIn.ar(0)) }.play; +( +Ndef(\testSignal, { + var sig, sig2; + sig = BufRd.ar(2, ~sample, Phasor.ar(0, BufRateScale.kr(~sample), 0, BufFrames.kr(~sample))); + Out.ar(~inBus, sig.sum); + sig * \gain.kr(0.01); +}).play; +) + +Ndef(\testSignal).ar(2); + +Ndef.clear + +Ndef(\freeze1).set(\in, ~inBus.index); +Ndef(\freeze2).set(\in, ~inBus.index); +Ndef(\freeze3).set(\in, ~inBus.index); + +Ndef(\freeze3).set(\in, ~inBus); + +Ndef(\freeze1).set(\amp, 1.7); +Ndef(\freeze2).set(\amp, 2.6); +Ndef(\freeze3).set(\amp, 10.05); + +Ndef(\freeze1).set(\freezeGate, 1); +Ndef(\freeze2).set(\freezeGate, 1); +Ndef(\freeze3).set(\freezeGate, 1); -~freezeDict = BmDspAlgs.getDict("spectral/fft_freeze.scd"); -~freezeDict.makeBufferProcessingNdef(\freezeOnly); -Ndef(\freezeOnly).set(\in, ~inBus.index); -Ndef(\freezeOnly).reshaping = \elastic; -Ndef(\freezeOnly).play; +Ndef(\freeze3).set(\rel, 0.1); +Ndef(\freeze3).set(\atk, 0.1); +Ndef(\freeze3).set(\ampGate, 0.0001); +Ndef(\freeze1).set(\pan, 0); +Ndef(\freeze3).set(\amp, 0.1); -Ndef(\freezeOnly).stop; -Ndef(\freezeOnly).set(\freezeGate, 0); -Ndef(\freezeOnly).set(\freezeGate, 1); +Ndef(\freeze1).set(\amp, 0.7); -Ndef(\freezeOnly).put(90, \filter -> {|in| - [in[0], in[1] + SinOsc.kr(0.1).range(0.9, 1.0)] * 0.5; +Ndef(\freeze1).set(\wipe, 0.3); +Ndef(\freeze1).set(\reshuffle, 0.1); +Ndef(\freeze1).set(\binShift, 0.4); +Ndef(\freeze1).set(\stretch, 0.1); + +( +Ndef(\freeze3).put(10, \filter -> { + |in| + var sig = 0; + var shLocal = LocalIn.ar(2); + var shPitched = PitchShift.ar( + shLocal + (in * \shSend.kr(0.5)), + \shWindow.kr(0.2), + \shRatio.kr(4), + 0.01, 0.01 + ); + var shVerb = FreeVerb.ar( + shPitched, + \shVerbMix.kr(0.3), + \shRoom.kr(0.85), + \shDamp.kr(0.9) + ); + + LocalOut.ar(shVerb * \shFb.kr(0.3)); + + sig = (shVerb * \shimmer.kr(0.3)); + sig; }); +) -Ndef(\freezeOnly).set(\phaseJitter, 10); +( +Ndef(\freeze1).put(10, \filter -> { + |in| + var sig = 0; + var shPitched = PitchShift.ar( + in, + 0.2, + SinOsc.kr(0.1).range(2, 4), + 0.01, + 0.01 + ) * 2.0; + + var shPitched2 = PitchShift.ar( + in, + 0.2, + SinOsc.kr(0.05).range(4, 6), + 0.01, 0.01 + ) * 2.0; + + sig = Mix([in, shPitched, shPitched2]) * 0.9; + sig; +}); +) -Ndef(\freezeOnly).ar(2); +( +Ndef(\freeze1).stop; +Ndef(\freeze2).stop; +Ndef(\freeze3).stop; +) -~out.free +( +Ndef(\freeze1).play; +Ndef(\freeze2).play; +Ndef(\freeze3).play; +) -Ndef(\freezeOnly).set(\pan, 0); -~freezeDict.makeBufferProcessingNdef(\freezeOnly2); -Ndef(\freezeOnly2).ar(2); -Ndef(\freezeOnly2).set(\in, ~inBus.index); -Ndef(\freezeOnly2).play; -Ndef(\freezeOnly2).set(\freezeGate, 1); -Ndef(\freezeOnly2).set(\amp, 0.2) \ No newline at end of file +Ndef(\testSignal).stop; +Ndef(\testSignal).set(\gain, 1.0); \ No newline at end of file