From ba941d745d5f5a0b5bfefd681aa6f7832eb7b956 Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Mon, 12 Sep 2022 00:15:40 -0500 Subject: [PATCH 1/7] Comment out StkBowed gate logging messages. --- source/StkUGens/StkAll.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/StkUGens/StkAll.cpp b/source/StkUGens/StkAll.cpp index 6a731cd79a..ef9db42a87 100644 --- a/source/StkUGens/StkAll.cpp +++ b/source/StkUGens/StkAll.cpp @@ -629,11 +629,11 @@ void StkBowed_next(StkBowed *unit, int inNumSamples) */ if(gate != unit->gate){ if(gate){ - Print("Starting\n"); + //Print("Starting\n"); unit->bowed->noteOn(freq, 1000.f); // unit->bowed->startBowing(1.f, IN0(7)); // IN0(7) is attackrate }else{ - Print("Stopping\n"); + //Print("Stopping\n"); unit->bowed->noteOff(1000.f); // unit->bowed->stopBowing(IN0(8)); // IN0(8) is decayrate } From 42770cbfdda94801a95257a68ca0b2edd1f608dd Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Mon, 12 Sep 2022 00:19:29 -0500 Subject: [PATCH 2/7] Add directory method to StkShakers --- source/StkUGens/sc/STKclassdefs.sc | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/source/StkUGens/sc/STKclassdefs.sc b/source/StkUGens/sc/STKclassdefs.sc index 1d0ef71b3d..29a35629fc 100644 --- a/source/StkUGens/sc/STKclassdefs.sc +++ b/source/StkUGens/sc/STKclassdefs.sc @@ -49,12 +49,46 @@ StkSaxofony : UGen { } StkShakers : UGen { + classvar shakerTypes; + + *initClass { + shakerTypes = Dictionary[ + "Maraca" -> 0, + "Cabasa" -> 1, + "Sekere" -> 2, + "Guiro" -> 3, + "Water Drops" -> 4, + "Bamboo Chimes" -> 5, + "Tambourine" -> 6, + "Sleigh Bells" -> 7, + "Sticks" -> 8, + "Crunch" -> 9, + "Wrench" -> 10, + "Sand Paper" -> 11, + "Coke Can" -> 12, + "Next Mug" -> 13, + "Penny + Mug" -> 14, + "Nickle + Mug" -> 15, // Mispelling of "Nickel" in original STK docs + "Dime + Mug" -> 16, + "Quarter + Mug" -> 17, + "Franc + Mug" -> 18, + "Peso + Mug" -> 19, + "Big Rocks" -> 20, + "Little Rocks" -> 21, + "Tuned Bamboo Chimes" -> 21 + ].freeze; + } + *ar { arg instr=0, energy=64, decay=64, objects=64, resfreq=64, mul = 1.0, add = 0.0; ^this.multiNew('audio',instr, energy, decay, objects, resfreq).madd(mul, add) } *kr { arg instr=0, energy=64, decay=64, objects=64, resfreq=64, mul = 1.0, add = 0.0; ^this.multiNew('control', instr, energy, decay, objects, resfreq ).madd(mul, add) } + + *directory { + ^shakerTypes + } } From 535dcf7ffdffe10a6eadd9f57fd853dc6b6197cc Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Mon, 12 Sep 2022 00:20:04 -0500 Subject: [PATCH 3/7] StkInst Docs: rawwaves filepath fix --- .../sc/HelpSource/Classes/StkGlobals.schelp | 15 +++++++++++++-- .../sc/HelpSource/Classes/StkInst.schelp | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/source/StkInst/sc/HelpSource/Classes/StkGlobals.schelp b/source/StkInst/sc/HelpSource/Classes/StkGlobals.schelp index af61e45486..2518827029 100644 --- a/source/StkInst/sc/HelpSource/Classes/StkGlobals.schelp +++ b/source/StkInst/sc/HelpSource/Classes/StkGlobals.schelp @@ -28,9 +28,20 @@ Examples:: code:: -//a instrument that uses waveforms/////////////////// +//an instrument that uses waveforms/////////////////// //first set rawfilepath to let Stk know where to look -{StkGlobals.ar(1,1,Platform.userExtensionDir ++"/SC3Plugins/StkInst/rawwaves")}.play; +({ + var path = [ + Platform.userExtensionDir ++ "/SC3Plugins/StkInst/rawwaves", + Platform.userExtensionDir ++ "/SC3Plugins/StkInst/rawwaves", + Platform.systemExtensionDir ++ "/SC3plugins/StkInst/rawwaves", + Platform.systemExtensionDir ++ "/SC3plugins/StkInst/rawwaves" + ].select({ |possiblePath| File.exists(possiblePath) }).first; + + if(path.isNil, {Error("audio files not found").throw;}); + + StkGlobals.ar(1,1,path) +}.play;) //Define mandolin synthdef ( diff --git a/source/StkInst/sc/HelpSource/Classes/StkInst.schelp b/source/StkInst/sc/HelpSource/Classes/StkInst.schelp index 15c6fab439..0f6707046f 100644 --- a/source/StkInst/sc/HelpSource/Classes/StkInst.schelp +++ b/source/StkInst/sc/HelpSource/Classes/StkInst.schelp @@ -48,7 +48,6 @@ SynthDef(\helpStkbowed,{arg out=0,freq=220,gate=1,amp=1,bowpressure = 64, bowpos //Use it. ( - Pbind( \instrument, \helpStkbowed, \dur , 0.25, @@ -58,9 +57,20 @@ Pbind( ).play; ) -//now a instrument that uses waveforms/////////////////// +//an instrument that uses waveforms/////////////////// //first set rawfilepath to let Stk know where to look -{StkGlobals.ar(1,1,Platform.userExtensionDir ++"/SC3Plugins/StkInst/rawwaves")}.play; +({ + var path = [ + Platform.userExtensionDir ++ "/SC3Plugins/StkInst/rawwaves", + Platform.userExtensionDir ++ "/SC3Plugins/StkInst/rawwaves", + Platform.systemExtensionDir ++ "/SC3plugins/StkInst/rawwaves", + Platform.systemExtensionDir ++ "/SC3plugins/StkInst/rawwaves" + ].select({ |possiblePath| File.exists(possiblePath) }).first; + + if(path.isNil, {Error("audio files not found").throw;}); + + StkGlobals.ar(1,1,path) +}.play;) //Define mandolin synthdef ( @@ -74,7 +84,6 @@ SynthDef(\helpMandolin,{arg out=0,freq=220,gate=1,amp=1; //Use it. ( - Pbind( \instrument, \helpMandolin, \dur , 0.25, From 6d803cb870ec0f8ef27fb9575d9fe0d05930ee5d Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Mon, 12 Sep 2022 00:34:27 -0500 Subject: [PATCH 4/7] Some StkUGens documentation --- .../sc/HelpSource/Classes/StkFlute.schelp | 37 ++++++++++++ .../sc/HelpSource/Classes/StkPluck.schelp | 56 +++++++++++++++++++ .../sc/HelpSource/Classes/StkShakers.schelp | 48 ++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp create mode 100644 source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp create mode 100644 source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp diff --git a/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp b/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp new file mode 100644 index 0000000000..19531e31eb --- /dev/null +++ b/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp @@ -0,0 +1,37 @@ +TITLE:: StkFlute +categories:: UGens>PhysicalModels>StkUGens +related:: Classes/Stk, Classes/StkInst + +CLASSMETHODS:: + +METHOD:: ar +ARGUMENT:: freq +ARGUMENT:: jetDelay +ARGUMENT:: noisegain +ARGUMENT:: jetRatio +ARGUMENT:: mul +ARGUMENT:: add + + +EXAMPLES:: +code:: +( // Add SynthDef +SynthDef(\helpStkFlute, { + arg freq=440, jetDelay=49, noisegain=0.15, jetRatio=0.32, amp=0.2, gate=1, out=1; + + var env = EnvGen.kr(Env.asr(0, 1, 0.1), gate, doneAction: 2); + var sig = StkFlute.ar(freq, jetDelay: jetDelay, noisegain: noisegain, jetRatio: jetRatio); + sig = sig * env * amp; + + Out.ar(0, sig.dup); +}).add; +) + +( // Play SynthDef +Pbind( + \instrument, \helpStkFlute, + \degree, Pseq((0..7)), + \octave, 6 +).play; +) +:: diff --git a/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp b/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp new file mode 100644 index 0000000000..aaa9345ca1 --- /dev/null +++ b/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp @@ -0,0 +1,56 @@ +TITLE:: StkPluck +categories:: UGens>PhysicalModels>StkUGens +related:: Classes/Stk, Classes/StkInst + +CLASSMETHODS:: + +METHOD:: ar +ARGUMENT:: freq +ARGUMENT:: decay +ARGUMENT:: mul +ARGUMENT:: add + + +EXAMPLES:: +code:: +( // Add SynthDef. +SynthDef(\helpStkPluck, { + arg freq=440, decay=0.99, amp=0.2, gate=1, out=0; + + var env = EnvGen.kr(Env.asr(0,1,0.1), gate, doneAction:2); + var sig = StkPluck.ar(freq, decay); + sig = sig * env * amp; + + Out.ar(0, sig.dup); +}).add; +) + +( // Play SynthDef +Pbind( + \instrument, \helpStkPluck, + \degree, Pseq([0,2,4,8], 1), + \dur, 1 +).play; +) + +( // Guitar tuning. +var midinotes=[40, 45, 50, 55, 59, 64]; +Pbind( + \instrument, \helpStkPluck, + \midinote, Pseq(midinotes), + \dur, 1 +).play; +) + +( // Guitar chords. +var midinotes=[40, 45, 50, 55, 59, 64]; +var fretsE=[ 0, 2, 2, 1, 0, 0]; +var fretsA=[Rest(0), 0, 2, 2, 2, 0]; +Pbind( + \instrument, \helpStkPluck, + \midinote, midinotes + Pseq([Pn(fretsE, 8), Pn(fretsA, 8)], 2), + \strum, Pseq([1, -1], inf) * Pwhite(0.0125, 0.035), + \dur, Pseq([2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2], inf) +).play; +) +:: \ No newline at end of file diff --git a/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp b/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp new file mode 100644 index 0000000000..bc8affbc42 --- /dev/null +++ b/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp @@ -0,0 +1,48 @@ +TITLE:: StkShakers +categories:: UGens>PhysicalModels>StkUGens +related:: Classes/Stk, Classes/StkInst + +CLASSMETHODS:: + +METHOD:: ar + +ARGUMENT:: instr +An integer between 0 and 21, inclusive. Instruments can be found with link::#-directory:: +ARGUMENT:: energy +ARGUMENT:: decay +ARGUMENT:: objects +ARGUMENT:: resfreq +ARGUMENT:: mul +ARGUMENT:: add + +METHOD:: directory +Returns a dictionary of shaker instrument numbers. +RETURNS:: A link::Classes/Dictionary:: +code:: +StkShakers.directory; +:: + +EXAMPLES:: + +code:: +( +SynthDef(\helpStkShakers, { + arg instr=0, energy=64, decay=64, objects=64, resfreq=64, amp=0.2, gate=1; + + var env = EnvGen.kr(Env.asr(0, 1, 0.1), gate: gate, doneAction: 2); + var sig = StkShakers.ar(instr, energy, decay, objects, resfreq); + sig = sig * env * amp; + + Out.ar(0, sig.dup); +}).add; +) + +( +Pbind( + \instrument, \helpStkShakers, + \instr, 11, + \dur, Pseq([2, Rest(2), 2, Rest(2), 2]), + \amp, 0.5 +).play; +) +:: From 7aee5e5f8aa5edd3112eb6bed4426040877a18b1 Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Sat, 24 Sep 2022 11:23:19 -0500 Subject: [PATCH 5/7] Stk summary lines added. StkClarinet and StkSaxofony docs added --- .../sc/HelpSource/Classes/StkClarinet.schelp | 41 ++++++++++++++++ .../sc/HelpSource/Classes/StkFlute.schelp | 1 + .../sc/HelpSource/Classes/StkPluck.schelp | 1 + .../sc/HelpSource/Classes/StkSaxofony.schelp | 47 +++++++++++++++++++ .../sc/HelpSource/Classes/StkShakers.schelp | 1 + 5 files changed, 91 insertions(+) create mode 100644 source/StkUGens/sc/HelpSource/Classes/StkClarinet.schelp create mode 100644 source/StkUGens/sc/HelpSource/Classes/StkSaxofony.schelp diff --git a/source/StkUGens/sc/HelpSource/Classes/StkClarinet.schelp b/source/StkUGens/sc/HelpSource/Classes/StkClarinet.schelp new file mode 100644 index 0000000000..566988e4f1 --- /dev/null +++ b/source/StkUGens/sc/HelpSource/Classes/StkClarinet.schelp @@ -0,0 +1,41 @@ +TITLE:: StkClarinet +summary:: Synthesis Toolkit Clarinet +categories:: UGens>PhysicalModels>StkUGens +related:: Classes/Stk, Classes/StkInst + +CLASSMETHODS:: + +METHOD:: ar +ARGUMENT:: freq +ARGUMENT:: reedstiffness +ARGUMENT:: noisegain +ARGUMENT:: vibfreq +ARGUMENT:: vibgain +ARGUMENT:: breathpressure +ARGUMENT:: trig +ARGUMENT:: mul +ARGUMENT:: add + +EXAMPLES:: + +code:: +( // Add SynthDef +SynthDef.ar(\helpStkClarinet, { + arg freq=440, reedstiffness=64, noisegain=4, vibfreq=64, vibgain=11, breathpressure=64, gate=1, amp=1, out=0; + + var env = EnvGen.kr(Env.new(times: [0, 0.1]), gate: gate, doneAction: 2); + var sig = StkClarinet.ar(freq, reedstiffness, noisegain, vibfreq, vibgain, breathpressure, trig: gate); + + sig = sig * env * amp; + + Out.ar(out, sig.dup); +}).add; +) + +( // Play SynthDef +Pbind( + \instrument, \helpStkClarinet, + \degree, Pseq([0,2,4,7], 2) +).play; +) +:: diff --git a/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp b/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp index 19531e31eb..03edd6bd84 100644 --- a/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp +++ b/source/StkUGens/sc/HelpSource/Classes/StkFlute.schelp @@ -1,4 +1,5 @@ TITLE:: StkFlute +summary:: Synthesis Toolkit Flute categories:: UGens>PhysicalModels>StkUGens related:: Classes/Stk, Classes/StkInst diff --git a/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp b/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp index aaa9345ca1..9efafba1ed 100644 --- a/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp +++ b/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp @@ -1,4 +1,5 @@ TITLE:: StkPluck +summary:: Synthesis Toolkit Pluck categories:: UGens>PhysicalModels>StkUGens related:: Classes/Stk, Classes/StkInst diff --git a/source/StkUGens/sc/HelpSource/Classes/StkSaxofony.schelp b/source/StkUGens/sc/HelpSource/Classes/StkSaxofony.schelp new file mode 100644 index 0000000000..52f6aba31f --- /dev/null +++ b/source/StkUGens/sc/HelpSource/Classes/StkSaxofony.schelp @@ -0,0 +1,47 @@ +TITLE:: StkSaxofony +summary:: Synthesis Toolkit Saxophony +categories:: UGens>PhysicalModels>StkUGens +related:: Classes/Stk, Classes/StkInst + +CLASSMETHODS:: + +METHOD:: ar + +ARGUMENT:: freq +ARGUMENT:: reedstiffness +ARGUMENT:: reedaperture +ARGUMENT:: noisegain +ARGUMENT:: blowposition +ARGUMENT:: vibratofrequency +ARGUMENT:: vibratogain +ARGUMENT:: breathpressure +ARGUMENT:: trig +ARGUMENT:: mul +ARGUMENT:: add + + +EXAMPLES:: + +code:: +( // Add SynthDef +SynthDef(\helpStkSaxofony, { + arg freq=220, reedstiffness=64, reeddeparture=64, noisegain=20, + blowposition=26, vibratofrequency=20, vibratogain=20, breathpressure=128, gate=1, amp=1, out=0; + + var env = EnvGen.kr(Env.new(times: [0, 0.1]), gate: gate, doneAction: 2); + var sig = StkSaxofony.ar(freq, reedstiffness, reeddeparture, noisegain, + blowposition, vibratofrequency, vibratogain, breathpressure, trig: gate); + + sig = sig * env * amp; + + Out.ar(out, sig.dup); +}).add; +) + +( // Play SynthDef +Pbind( + \instrument, \helpStkSaxofony, + \degree, Pseq([0,2,4,7], 2) +).play; +) +:: \ No newline at end of file diff --git a/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp b/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp index bc8affbc42..07b429d6f6 100644 --- a/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp +++ b/source/StkUGens/sc/HelpSource/Classes/StkShakers.schelp @@ -1,4 +1,5 @@ TITLE:: StkShakers +summary:: Synthesis Toolkit Shakers categories:: UGens>PhysicalModels>StkUGens related:: Classes/Stk, Classes/StkInst From 213ba168d17413a245b342b89f70b8cf039c4d66 Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Fri, 30 Sep 2022 16:00:05 -0500 Subject: [PATCH 6/7] StkShakers directory fixed --- source/StkUGens/sc/STKclassdefs.sc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/StkUGens/sc/STKclassdefs.sc b/source/StkUGens/sc/STKclassdefs.sc index 29a35629fc..69fd025d06 100644 --- a/source/StkUGens/sc/STKclassdefs.sc +++ b/source/StkUGens/sc/STKclassdefs.sc @@ -75,7 +75,7 @@ StkShakers : UGen { "Peso + Mug" -> 19, "Big Rocks" -> 20, "Little Rocks" -> 21, - "Tuned Bamboo Chimes" -> 21 + "Tuned Bamboo Chimes" -> 22 ].freeze; } From ef416c3e22e8534898c7b0152276b9fb90827a76 Mon Sep 17 00:00:00 2001 From: Tom Dugovic Date: Sun, 22 Jan 2023 15:16:29 -0700 Subject: [PATCH 7/7] StkPluck Help refinement --- source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp b/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp index 9efafba1ed..c0e95bf8ef 100644 --- a/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp +++ b/source/StkUGens/sc/HelpSource/Classes/StkPluck.schelp @@ -22,14 +22,14 @@ SynthDef(\helpStkPluck, { var sig = StkPluck.ar(freq, decay); sig = sig * env * amp; - Out.ar(0, sig.dup); + Out.ar(out, sig.dup); }).add; ) ( // Play SynthDef Pbind( \instrument, \helpStkPluck, - \degree, Pseq([0,2,4,8], 1), + \degree, Pseq([0,2,4,7], 1), \dur, 1 ).play; ) @@ -49,9 +49,10 @@ var fretsE=[ 0, 2, 2, 1, 0, 0]; var fretsA=[Rest(0), 0, 2, 2, 2, 0]; Pbind( \instrument, \helpStkPluck, - \midinote, midinotes + Pseq([Pn(fretsE, 8), Pn(fretsA, 8)], 2), - \strum, Pseq([1, -1], inf) * Pwhite(0.0125, 0.035), - \dur, Pseq([2, 2, 1, 1, 1/2, 1/2, 1/2, 1/2], inf) + \midinote, midinotes + Pseq([Pn(fretsE, 6), Pn(fretsA, 6)], 2), + \strum, Pseq([1, -1], inf) * Pgauss(0.0125, 0.005), + \dur, Pseq([1/2, 1/4, 1/2, 1/4, 1/4, 1/4], inf), + \legato, 0.95 ).play; ) :: \ No newline at end of file