From 1bc91659ec1c41d43a7e864f171de80e7df70b3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sandstr=C3=B6m?= Date: Mon, 29 Apr 2024 11:10:10 +0200 Subject: [PATCH 1/6] vectorsynth --- synths/default-synths.scd | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/synths/default-synths.scd b/synths/default-synths.scd index 2d68ed1..4e96429 100644 --- a/synths/default-synths.scd +++ b/synths/default-synths.scd @@ -118,6 +118,20 @@ SynthDef(\sin, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, fre }).store; +// A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) <------------------ +SynthDef(\wts, { + var env = Env.perc(\atk.kr(0.0), \rel.kr(1.0), \amp.kr(1.0), \crv.kr(-8)).kr(doneAction: 2); + var gliss = EnvGen.kr(Env( + [1, 1, 1 + \bnd.kr(0).clip(-1.0, 1.0)], + [\bno.kr(0), \bnt.kr(0.2)], + [0, 0, \bnc.kr(0)] //optional curvature + )); + var freqclipped = (\freq.kr(440) * gliss).clip(20, 20000); + var sig = VOsc.ar(\buf.kr(0), freqclipped, \phs.kr(0), env); + sig = CleanPan.ar(sig, ~clean.numChannels, \pan.kr(0)); + Out.ar(\out.kr(0), sig); +}).store; + // A saw wave oscillator. SynthDef(\saw, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, freq = 440, iph = 0, wid = 0.25, amp = 1.0, pan = 0, atk = 0.0, rel = 1.0, crv = -8.0| var env, gliss, sig, freqclipped; @@ -166,7 +180,6 @@ SynthDef(\in, { |out, sustain = 1, spd = 1, bgn = 0, end = 1, pan, glisserate, o }).store ); - // Read input from nth routing bus. // See also: effect "to". ( @@ -178,6 +191,7 @@ SynthDef(\clean_from, { |out, sustain = 1, in, pan| ) }).store; + ~clean.soundLibrary.addSynth(\from, ( instrument: \clean_from, @@ -363,4 +377,4 @@ SynthDef(\blp, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, fre sig = CleanPan.ar(sig, ~clean.numChannels, pan); Out.ar(out, sig); }).store; -) \ No newline at end of file +) From 1c323ee7d3c97a033ba8c709ece0613f501e3ef2 Mon Sep 17 00:00:00 2001 From: vsandstrom <79695983+vsandstrom@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:42:35 +0200 Subject: [PATCH 2/6] Update default-synths.scd --- synths/default-synths.scd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synths/default-synths.scd b/synths/default-synths.scd index 4e96429..0bc75c1 100644 --- a/synths/default-synths.scd +++ b/synths/default-synths.scd @@ -118,7 +118,7 @@ SynthDef(\sin, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, fre }).store; -// A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) <------------------ +// A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) SynthDef(\wts, { var env = Env.perc(\atk.kr(0.0), \rel.kr(1.0), \amp.kr(1.0), \crv.kr(-8)).kr(doneAction: 2); var gliss = EnvGen.kr(Env( From 0c573906dc9ad6a254b37b3dd999f75904dbc3b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sandstr=C3=B6m?= Date: Mon, 29 Apr 2024 13:28:28 +0200 Subject: [PATCH 3/6] with table control of envelope --- synths/default-synths.scd | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/synths/default-synths.scd b/synths/default-synths.scd index 4e96429..195f40c 100644 --- a/synths/default-synths.scd +++ b/synths/default-synths.scd @@ -118,7 +118,7 @@ SynthDef(\sin, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, fre }).store; -// A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) <------------------ +// A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) SynthDef(\wts, { var env = Env.perc(\atk.kr(0.0), \rel.kr(1.0), \amp.kr(1.0), \crv.kr(-8)).kr(doneAction: 2); var gliss = EnvGen.kr(Env( @@ -126,12 +126,18 @@ SynthDef(\wts, { [\bno.kr(0), \bnt.kr(0.2)], [0, 0, \bnc.kr(0)] //optional curvature )); + var venv = EnvGen.kr(Env( + [\beg.kr(0.0), \end.kr(0.99)], + [\vdur.kr(0.2)], + [\vcur.kr(-2)] + ), doneAction: 0); var freqclipped = (\freq.kr(440) * gliss).clip(20, 20000); - var sig = VOsc.ar(\buf.kr(0), freqclipped, \phs.kr(0), env); + var sig = VOsc.ar(\buf.kr(0) + ((\bufn.kr(1) - 1) * venv), freqclipped, \phs.kr(0), env); sig = CleanPan.ar(sig, ~clean.numChannels, \pan.kr(0)); Out.ar(\out.kr(0), sig); }).store; + // A saw wave oscillator. SynthDef(\saw, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, freq = 440, iph = 0, wid = 0.25, amp = 1.0, pan = 0, atk = 0.0, rel = 1.0, crv = -8.0| var env, gliss, sig, freqclipped; From 39f228c1b074831e8a0f95ed9c7546d44d0abb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sandstr=C3=B6m?= Date: Mon, 29 Apr 2024 14:00:26 +0200 Subject: [PATCH 4/6] with envelope control of table --- synths/default-synths.scd | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/synths/default-synths.scd b/synths/default-synths.scd index 195f40c..c65f691 100644 --- a/synths/default-synths.scd +++ b/synths/default-synths.scd @@ -132,7 +132,12 @@ SynthDef(\wts, { [\vcur.kr(-2)] ), doneAction: 0); var freqclipped = (\freq.kr(440) * gliss).clip(20, 20000); - var sig = VOsc.ar(\buf.kr(0) + ((\bufn.kr(1) - 1) * venv), freqclipped, \phs.kr(0), env); + var sig = VOsc.ar( + \buf.kr(0) + ((\bufn.kr(1) - 1) * venv), + freqclipped, + \phs.kr(0), + env + ).fold(\flo.kr(-1), \fhi.kr(1)); sig = CleanPan.ar(sig, ~clean.numChannels, \pan.kr(0)); Out.ar(\out.kr(0), sig); }).store; From 64f046e4f153c54e035874fc77f2a27ef8c14935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sandstr=C3=B6m?= Date: Tue, 30 Apr 2024 13:53:27 +0200 Subject: [PATCH 5/6] fixed args in wts --- synths/default-synths.scd | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/synths/default-synths.scd b/synths/default-synths.scd index c65f691..e92f043 100644 --- a/synths/default-synths.scd +++ b/synths/default-synths.scd @@ -120,26 +120,32 @@ SynthDef(\sin, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, fre // A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) SynthDef(\wts, { - var env = Env.perc(\atk.kr(0.0), \rel.kr(1.0), \amp.kr(1.0), \crv.kr(-8)).kr(doneAction: 2); - var gliss = EnvGen.kr(Env( + var env = Env.perc( + \atk.kr(0.0), + \rel.kr(1.0), + \amp.kr(1.0), + \crv.kr(-8) + ).kr(doneAction: 2); + var gliss = EnvGen.kr( + Env( [1, 1, 1 + \bnd.kr(0).clip(-1.0, 1.0)], [\bno.kr(0), \bnt.kr(0.2)], [0, 0, \bnc.kr(0)] //optional curvature - )); - var venv = EnvGen.kr(Env( - [\beg.kr(0.0), \end.kr(0.99)], - [\vdur.kr(0.2)], - [\vcur.kr(-2)] - ), doneAction: 0); + ) + ); + var venv = EnvGen.kr(Env( + [\vbeg.kr(0.0), \vend.kr(0.99)], + [\vdur.kr(0.2)], + [\vcur.kr(-2)] + ), doneAction: 0); var freqclipped = (\freq.kr(440) * gliss).clip(20, 20000); - var sig = VOsc.ar( + var sig = VOsc.ar( \buf.kr(0) + ((\bufn.kr(1) - 1) * venv), freqclipped, - \phs.kr(0), - env + \phs.kr(0) ).fold(\flo.kr(-1), \fhi.kr(1)); sig = CleanPan.ar(sig, ~clean.numChannels, \pan.kr(0)); - Out.ar(\out.kr(0), sig); + Out.ar(\out.kr(0), sig * env); }).store; From d222adfcd5ba0604656468c9aed9d0cffb78361d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sandstr=C3=B6m?= Date: Tue, 30 Apr 2024 22:37:18 +0200 Subject: [PATCH 6/6] tre tecken --- synths/default-synths.scd | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/synths/default-synths.scd b/synths/default-synths.scd index e92f043..e3e50e1 100644 --- a/synths/default-synths.scd +++ b/synths/default-synths.scd @@ -119,7 +119,7 @@ SynthDef(\sin, {|out = 0, sustain = 1, bnd = 0, bno = 0, bnt = 0.2, bnc = 0, fre // A wavetable vector synth based on VOsc. (cred: https://vsandstrom.github.io) -SynthDef(\wts, { +SynthDef(\vct, { var env = Env.perc( \atk.kr(0.0), \rel.kr(1.0), @@ -134,15 +134,16 @@ SynthDef(\wts, { ) ); var venv = EnvGen.kr(Env( - [\vbeg.kr(0.0), \vend.kr(0.99)], - [\vdur.kr(0.2)], - [\vcur.kr(-2)] + [\vbg.kr(0.0), \vnd.kr(0.99)], + [\vdr.kr(0.2)], + [\vcr.kr(-2)] ), doneAction: 0); var freqclipped = (\freq.kr(440) * gliss).clip(20, 20000); var sig = VOsc.ar( \buf.kr(0) + ((\bufn.kr(1) - 1) * venv), freqclipped, - \phs.kr(0) + \phs.kr(0), + \fmp.kr(1.0) ).fold(\flo.kr(-1), \fhi.kr(1)); sig = CleanPan.ar(sig, ~clean.numChannels, \pan.kr(0)); Out.ar(\out.kr(0), sig * env);