From f49064448b4ae9c76f199baa0a09808036ebb9a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Prin=C4=8Di=C4=8D?= Date: Fri, 10 Apr 2020 13:23:41 +0200 Subject: [PATCH] research, and more learning --- LOG.md | 8 +++- ark_d.scd | 126 +++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 93 insertions(+), 41 deletions(-) diff --git a/LOG.md b/LOG.md index ba878c6..af48d71 100644 --- a/LOG.md +++ b/LOG.md @@ -104,4 +104,10 @@ Ndef(\ba, ) ) ) -``` \ No newline at end of file +``` +\ +\ +\ +\ + +## 10.apr, 2020 \ No newline at end of file diff --git a/ark_d.scd b/ark_d.scd index 496cbf7..3d0d90b 100644 --- a/ark_d.scd +++ b/ark_d.scd @@ -10,13 +10,14 @@ Server.default.waitForBoot { var smpPath = PathName(thisProcess.nowExecutingPath.dirname +/+ "smp"); // load samples // + "\n--- load samples: ...".postln; ~smpBuffers.do(_.free); //- free all buffers so we don't accumulate? ~smpBuffers = List(); - smpPath.filesDo({ |smpfile| + smpPath.filesDo({ |smpfile,i| // tell me what you are loading: - postln("~~~ loading >" + smpfile.fileName + "<"); + postln(" " + i + smpfile.fileName ); // add a sample into a buffer, store object to List ~smpBuffers.add(Buffer.readChannel(s, smpfile.fullPath, channels:[0])); @@ -24,11 +25,12 @@ Server.default.waitForBoot { // load libs // + "\n--- load libs: ...".postln; // for each files in that lib folder libPath.filesDo({|afile| // tell me what you're executing: - postln(" ." + afile.fileName); + postln(" ." + afile.fileName); // execute it: this.executeFile(afile.fullPath); @@ -55,41 +57,84 @@ y.set(\gate, 0) z = Synth(\bufPlayer, [\bufnum, ~smpBuffers.at(0)]) + /////////////////////////////////////////////////////////////////////////////////////////// +~smpBuffers[1].plot + ( -SynthDef(\sinPulz, { - arg gate = 1, freq, out=0, amp = 1, attackTime=0.01, releaseTime=1, oscDetune=0.05, cutoff=1; - var snd, env; - - oscDetune = oscDetune * 0.1 + 1; - - env = Linen.kr(gate, attackTime:attackTime, releaseTime:releaseTime, doneAction:2); - - snd = SinOsc.ar([freq, freq*oscDetune]) ; - snd = snd + SinOsc.ar([freq*2, freq*oscDetune*2]) ; - snd = snd + Pulse.ar([freq/2,(freq/2)*oscDetune]) * LFNoise1.kr(0.5).exprange(2,40); - - snd = snd.softclip; - snd = RLPF.ar(snd, freq: - //LFNoise1.kr(0.01).exprange(4000,300), - freq * cutoff, - rq:0.4); - - snd = snd * env * amp * 0.4; - - Out.ar(out, snd); -}).add; +Ndef(\bosc, { + var buffer = ~smpBuffers[2], freq = 30, oscDetune = 1.01, amp = 0.2; + BufRd.ar(1, bufnum:buffer, phase: LFSaw.ar([freq,freq*oscDetune]) * BufFrames.ir(buffer)) * amp + //+ SinOsc.ar(60.2) * 0.5; +} ); ) -// add a delay/reverb bus here? +Ndef(\bosc).play +Ndef(\bosc).fadeTime=2; +Ndef(\bosc).clear -// first press play :) -Ndef(\ba).play +/////////////////////////////////////////////////////////////////////////////////////////////// +// creating buffers and filling them with weird waveforms + +a = Harmonics.new(16); // just returns an instance of Harmonics with size +b = Buffer.alloc(s, 512, 1); +( +z = SynthDef("help-Osc",{ arg out=0,bufnum=0; + Out.ar(out, + LeakDC.ar( + Osc.ar(bufnum, [50,50.22], 0, 0.5) + ) + ) +}); +) + +a.ramp(1.0, 2.0); +a.ramp(0.5, -0.025) + +( +b.sine2( + freqs: a.ramp(1,1).postln, + amps: a.ramp(0, 0.01).postln, + amps: [0.8,0,0.1,0,0,0.1,0,0,0.01,0,0.01,0,0.02,0,0,0].postln, + normalize:false, asWavetable:true, clearFirst:true); +) +b.plot + + +a.formant(6, 4); +( +b.sine2( + freqs: a.ramp(0,0.1).postln, + amps: a.ramp(1,0), + normalize:true, asWavetable:true, clearFirst:true).plot; +) +b.sine2(a.ramp(1.0,0.1).postln, a.geom(1.2), true, true, true); +c = b.plot; + +y = z.play(s,[\out, 0, \bufnum, b]); +y.free; + +{SinOsc.ar()}.play + + + +/////////////////////////////////////////////////////////////////////////////////////////// + +~reverBus = Bus.audio(s,2); + +Ndef(\ba).play(~reverBus, addAction: \addToHead) + +~reverbDelay = Synth(\verbDelayFX, [\inBus, ~reverBus, \outBus, 0], addAction: \addAfter); +~reverbDelay.set(\revWet, 0); +~reverbDelay.set(\dlyWet, 1); +~reverbDelay.free + +Ndef(\ba).fadeTime=0.01; // for Patterns we don't want crossfade, but quantization // set default quant -Ndef(\ba).proxyspace.quant = 5; +Ndef(\ba).proxyspace.quant = 2; ( Ndef(\ba, @@ -98,29 +143,30 @@ Ndef(\ba, Pbind( \octave, [4,5,7], \amp, [0.1,0.2,0.005], - \degree, Pseq([0,3,4,2,6], inf), - \dur, Prand([1,0.5,2], inf), + \degree, Pseq([0,3,4,2,6,Prand([3,4,2,6])], inf), + \dur, Prand([1,0.5,2], 50), ), Pbind( \octave, [3,6], \degree, Pseq([[0,-3],4,6,3,2], inf), - \dur, 3.5, - \amp, 0.2, + \dur, Pseq([3.5,5], 10), + \amp, 0.05, \legato, 0.6, \attackTime, 2, \releaseTime, 2, )]), // common parameters \instrument, \sinPulz, - \oscDetune, Prand([1,3,7]*0.01, inf), + \oscDetune, Prand([1,3,5,7]*0.01, inf), \scale, Scale.minor.tuning_(\just), - \cutoff, Prand([1,2,3,4,5,6], inf) - - ) - + \cutoff, Prand([0.5,1,1.5], inf), + \out, ~reverBus + )) +) + +Ndef(\ba).stop(1); +Ndef(\ba).clear; -) -) ////////////////////////////////////////////////////////////////////////////////////////////