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
78
|
#ifndef UDO_SYNTHINSTRUMENTS
#define UDO_SYNTHINSTRUMENTS ##
/*
Standard regular wave function tables
This file is part of the SONICS UDO collection by Richard Knight 2023
License: GPL-2.0-or-later
http://1bpm.net
*/
#include "wavetables.udo"
opcode synth_fmbass1, aa, k
kfreq xin
k1 linseg 2.1, p3*0.2, 2, p3*0.8, 2
k2 line 10, p3, 0
iamp random 500, 800
kamp linseg iamp*0.001, p3*0.1, 0.5, p3*0.9, 0
aL foscil 0.8, kfreq, 1, k1, k2, gifnSine
aR foscil 0.8, kfreq, 1.9, k1, k2, gifnSine
aL1 pareq aL, 440, 0.4, 0.7
aR1 pareq aR, 440, 0.4, 0.7
xout aL1, aR1
endop
opcode synth_303, a, kjJ
kfreq, ifilter, kdistortion xin
ifilter = (ifilter == -1) ? 90 : ifilter
kdistortion = (kdistortion == -1) ? 1 : kdistortion
ifrq1 = 440 * exp(log(2) * (ifilter - 69) / 12) ; filter start freq.
kffrq port 0, 60/150, ifrq1
a1 phasor kfreq
a1 = 1 - 2 * a1
a1x butterbp a1, kffrq, kfreq
a1x = a1x * (2 + kffrq / kfreq)
a1 = a1x + a1 * 0.25 ; 0.5
a1 butterlp a1, kffrq
a1 = taninv(a1 * kdistortion)
keqf limit kffrq * 4, 10, sr * 0.48 ; EQ frequency
a1 pareq a1 * 0.4, keqf, 4.0, 1.0, 2
xout a1
endop
opcode synth_strings1, a, kJJjj
kfreq, kvibwidth, kvibrate, inoisdur, ivibdel xin
kvibwidth = (kvibwidth == -1) ? 0.01 : kvibwidth
kvibrate = (kvibrate == -1) ? 5.5 : kvibrate
inoisdur = (inoisdur == -1) ? 0.1 : inoisdur
ivibdel = (ivibdel == -1) ? 0.25 : ivibdel
kfm2 = kfreq * 3
kfm3 = kfreq * 4
kindex1 = 7.5 / log:k(kfreq)
kindex2 = 15 / sqrt:k(kfreq)
kindex3 = 1.25 / sqrt:k(kfreq)
irise = 0.1
idec = 0.4
kvib init 0
kvbctl linen 1, 0.5, p3 - ivibdel, .1
krnd randi 0.0075, 2
kvib oscili kvbctl * kvibwidth + krnd, kvibrate * kvbctl
ktrans linseg 1, inoisdur, 0, 1, 0
anoise randi ktrans / 4, 0.2 * kfreq
attack oscili anoise, 2000
amod1 oscili kfreq * (kindex1 + ktrans), kfreq
amod2 oscili kfm2 * (kindex2 + ktrans), kfm2
amod3 oscili kfm3 * (kindex3 + ktrans), kfm3
asig oscili 1, (kfreq + amod1 + amod2 + amod3) * (1 + kvib)
asig linen (asig + attack), irise, p3, idec
xout asig
endop
#end
|