aboutsummaryrefslogtreecommitdiff
path: root/site/udo/sampling.udo
diff options
context:
space:
mode:
Diffstat (limited to 'site/udo/sampling.udo')
-rwxr-xr-xsite/udo/sampling.udo77
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
+