From 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 13 Apr 2025 18:48:02 +0100 Subject: initial --- site/udo/sampling.udo | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 site/udo/sampling.udo (limited to 'site/udo/sampling.udo') 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 + -- cgit v1.2.3