1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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
|