diff options
author | Richard <q@1bpm.net> | 2025-04-13 18:48:02 +0100 |
---|---|---|
committer | Richard <q@1bpm.net> | 2025-04-13 18:48:02 +0100 |
commit | 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 (patch) | |
tree | 291bd79ce340e67affa755a8a6b4f6a83cce93ea /site/udo/sampling.udo | |
download | apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.gz apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.bz2 apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.zip |
initial
Diffstat (limited to 'site/udo/sampling.udo')
-rwxr-xr-x | site/udo/sampling.udo | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/site/udo/sampling.udo b/site/udo/sampling.udo new file mode 100755 index 0000000..66a571b --- /dev/null +++ b/site/udo/sampling.udo @@ -0,0 +1,77 @@ +#ifndef UDO_SAMPLING
+#define UDO_SAMPLING ##
+/*
+ Samplers
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "wavetables.udo"
+opcode smp_round, a, aapPJjjj
+ ain, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ ifn ftgen 0, 0, sr*ilen, 2, 0
+ andx phasor 1/ilen
+ tabw ain, andx, ifn, 1
+ aout sndwarp kamp*0.6, aread, kpitch, ifn, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aout
+endop
+
+opcode smp_round_st, aa, aaapPJjjj
+ aL, aR, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ ifnL ftgen 0, 0, sr*ilen, 2, 0
+ ifnR ftgen 0, 0, sr*ilen, 2, 0
+ andx phasor 1/ilen
+ tabw aL, andx, ifnL, 1
+ tabw aR, andx, ifnR, 1
+ aoutL sndwarp kamp*0.6, aread, kpitch, ifnL, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ aoutR sndwarp kamp*0.6, aread, kpitch, ifnR, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aoutL, aoutR
+endop
+
+opcode smp_hold, a, aapPJjjj
+ ain, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ istart times
+ ifn ftgen 0, 0, sr*ilen, 2, 0
+ if (times:k() < istart+ilen) then
+ andx phasor 1/ilen
+ tabw ain, andx, ifn, 1
+ endif
+ aout sndwarp kamp, aread, kpitch, ifn, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aout
+endop
+
+opcode smp_hold_st, aa, aaapPJjjj
+ aL, aR, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ istart times
+ ifnL ftgen 0, 0, sr*ilen, 2, 0
+ ifnR ftgen 0, 0, sr*ilen, 2, 0
+ if (times:k() < istart+ilen) then
+ andx phasor 1/ilen
+ tabw aR, andx, ifnL, 1
+ tabw aL, andx, ifnR, 1
+ endif
+ aoutL sndwarp kamp, aread, kpitch, ifnL, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ aoutR sndwarp kamp, aread, kpitch, ifnR, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aoutL, aoutR
+endop
+
+#end
+
|