Bläddra i källkod

⠀⠀⠀⠀ⵙᴥⵙⓄⵙ✤ⵙᗩⵙᴥⵙᗱᗴⵙИNⵙᗱᗴⵙᕤᕦⵙᗱᗴⵙᔓᔕⵙꖴⵙⓄⵙИNⵙ◯ⵙ✤ⵙᗱᗴⵙᗯⵙᙁⵙᗱᗴⵙᗯⵙ◯ⵙИNⵙᗩⵙꖴⵙᔓᔕⵙᑎⵙᗩⵙᕤᕦⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙᕤᕦⵙᗩⵙᑎⵙᔓᔕⵙꖴⵙᗩⵙИNⵙ◯ⵙᗯⵙᗱᗴⵙᙁⵙᗯⵙᗱᗴⵙ✤ⵙ◯ⵙИNⵙⓄⵙꖴⵙᔓᔕⵙᗱᗴⵙᕤᕦⵙᗱᗴⵙИNⵙᗱᗴⵙᴥⵙᗩⵙ✤ⵙⓄⵙᴥⵙ⠀⠀⠀⠀

0000OOOO0000 3 år sedan
förälder
incheckning
f8ee336335
No account linked to committer's email

+ 159
- 0
◯ᗩIᗝ⋏ᗩ◯⚪◯ᗩ⋏ᗝIᗩ◯ⵙ◯ᗩIᗝ⋏ᗩ◯⚪◯ᗩ⋏ᗝIᗩ◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯⚪◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯ⵙ◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯⚪◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᴥᗱᗴߦᗩᗱᗴᴥ◯ᔓᔕⓄ✻ᑐᑕⓄᑐᑕ◯⚪◯ᑐᑕⓄᑐᑕ✻Ⓞᔓᔕ◯ᴥᗱᗴᗩߦᗱᗴᴥ◯ⵙ◯ᴥᗱᗴߦᗩᗱᗴᴥ◯ᔓᔕⓄ✻ᑐᑕⓄᑐᑕ◯⚪◯ᑐᑕⓄᑐᑕ✻Ⓞᔓᔕ◯ᴥᗱᗴᗩߦᗱᗴᴥ◯/◯ꕤ⏀ᔓᔕᒍᒐ◯⚪◯ᒍᒐᔓᔕ⏀ꕤ◯ⵙ◯ꕤ⏀ᔓᔕᒍᒐ◯⚪◯ᒍᒐᔓᔕ⏀ꕤ◯/⠀⠀⠀⠀ⵙᴥⵙⓄⵙ✤ⵙᗩⵙᴥⵙᗱᗴⵙИNⵙᗱᗴⵙᕤᕦⵙᗱᗴⵙᔓᔕⵙꖴⵙⓄⵙИNⵙ◯ⵙ✤ⵙᗱᗴⵙᗯⵙᙁⵙᗱᗴⵙᗯⵙ◯ⵙИNⵙᗩⵙꖴⵙᔓᔕⵙᑎⵙᗩⵙᕤᕦⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙᕤᕦⵙᗩⵙᑎⵙᔓᔕⵙꖴⵙᗩⵙИNⵙ◯ⵙᗯⵙᗱᗴⵙᙁⵙᗯⵙᗱᗴⵙ✤ⵙ◯ⵙИNⵙⓄⵙꖴⵙᔓᔕⵙᗱᗴⵙᕤᕦⵙᗱᗴⵙИNⵙᗱᗴⵙᴥⵙᗩⵙ✤ⵙⓄⵙᴥⵙ⠀⠀⠀⠀ Visa fil

@@ -0,0 +1,159 @@
1
+desc:O____ROTARENEG_ESION_TEWLEW_NAISUAG____O____GAUSIAN_WELWET_NOISE_GENERATOR____O
2
+//tags: analysis generator synthesis
3
+//author: SCHWA
4
+
5
+// Generator choices are listed in rough order of fanciness and cost.
6
+
7
+slider1:-16<-120,6,0.1>Noise dB (RMS)
8
+slider2:0.5<0,1,0.01>Wet Mix
9
+slider3:1<0,3,1{Central Limit Approximation,Box-Muller,Ziggurat (not implemented yet),Inverse Transform}>Gaussian Generator
10
+slider4:0<-1,1>Noise Mean (should be ~0)
11
+slider5:0<0,2>Noise Standard Deviation (should be ~1)
12
+
13
+in_pin:left input
14
+in_pin:right input
15
+out_pin:left output
16
+out_pin:right output
17
+
18
+@init
19
+
20
+AMP_DB = 20.0 / log(10);
21
+
22
+CENTRAL_LIMIT = 0;
23
+BOX_MULLER = 1;
24
+ZIGGURAT = 2;
25
+INV_TRANSFORM = 3;
26
+
27
+@slider
28
+
29
+noise_level = exp(slider1 / AMP_DB);
30
+
31
+(slider3 == CENTRAL_LIMIT) ? (
32
+  N_DEV = 12;
33
+)
34
+:
35
+(slider3 == INV_TRANSFORM) ? (
36
+   A1 = -39.69683028665376;
37
+   A2 =  220.9460984245205;
38
+   A3 = -275.9285104469687;
39
+   A4 =  138.3577518672690;
40
+   A5 = -30.66479806614716;
41
+   A6 =  2.506628277459239;
42
+
43
+   B1 = -54.47609879822406;
44
+   B2 =  161.5858368580409;
45
+   B3 = -155.6989798598866;
46
+   B4 =  66.80131188771972;
47
+   B5 = -13.28068155288572;
48
+
49
+   C1 = -0.007784894002430293;
50
+   C2 = -0.3223964580411365;
51
+   C3 = -2.400758277161838;
52
+   C4 = -2.549732539343734;
53
+   C5 =  4.374664141464968;
54
+   C6 =  2.938163982698783;
55
+
56
+   D1 =  0.007784695709041462;
57
+   D2 =  0.3224671290700398;
58
+   D3 =  2.445134137142996;
59
+   D4 =  3.754408661907416;
60
+
61
+   P_LO = 0.02425;
62
+   P_HI = 1.0 - P_LO;
63
+);
64
+
65
+i = sum = sum2 = 0;
66
+
67
+@sample
68
+
69
+z0 = z1 = 0;
70
+
71
+(slider3 == CENTRAL_LIMIT) ? (
72
+
73
+  // Quick & dirty.  
74
+  loop (N_DEV, 
75
+    z0 += rand(1);
76
+    z1 += rand(1);
77
+  );
78
+  z0 -= N_DEV / 2.0;
79
+  z1 -= N_DEV / 2.0;
80
+)
81
+:
82
+(slider3 == BOX_MULLER) ? (
83
+
84
+  // Conveniently a stereo twofer.
85
+  w = 0;
86
+  while (
87
+    z0 = 2.0 * rand(1) - 1.0;
88
+    z1 = 2.0 * rand(1) - 1.0;
89
+    w = z0 * z0 + z1 * z1;
90
+    w >= 1.0;
91
+  );
92
+  w = sqrt(-2.0 * log(w) / w);
93
+  z0 *= w;
94
+  z1 *= w;
95
+)
96
+:
97
+(slider3 == INV_TRANSFORM) ? (
98
+
99
+   r0 = rand(1);
100
+   r1 = rand(1);
101
+
102
+   (r0 < P_LO) ? (
103
+     q = sqrt(-2.0 * log(r0));
104
+     z0 = ((((C1 * q + C2) * q + C3) * q + C4) * q + C5) * q + C6;
105
+     z0 /= (((D1 * q + D2) * q + D3) * q + D4) * q + 1.0;
106
+   )
107
+   :
108
+   (r0 < P_HI) ? (
109
+     q = r0 - 0.5;
110
+     r = q * q;
111
+     z0 = (((((A1 * r + A2) * r + A3) * r + A4) * r + A5) * r + A6) * q;
112
+     z0 /= ((((B1 * r + B2) * r + B3) * r + B4) * r + B5) * r + 1.0;
113
+   )
114
+   :
115
+   (
116
+     q = sqrt(-2.0 * log(1.0 - r0));
117
+     z0 = -(((((C1 * q + C2) * q + C3) * q + C4) * q + C5) * q + C6);
118
+     z0 /= (((D1 * q + D2) * q + D3) * q + D4) * q + 1.0;
119
+   );
120
+
121
+   (r1 < P_LO) ? (
122
+     q = sqrt(-2.0 * log(r1));
123
+     z1 = ((((C1 * q + C2) * q + C3) * q + C4) * q + C5) * q + C6;
124
+     z1 /= (((D1 * q + D2) * q + D3) * q + D4) * q + 1.0;
125
+   )
126
+   :
127
+   (r1 < P_HI) ? (
128
+     q = r1 - 0.5;
129
+     r = q * q;
130
+     z1 = (((((A1 * r + A2) * r + A3) * r + A4) * r + A5) * r + A6) * q;
131
+     z1 /= ((((B1 * r + B2) * r + B3) * r + B4) * r + B5) * r + 1.0;
132
+   )
133
+   :
134
+   (
135
+     q = sqrt(-2.0 * log(1.0 - r0));
136
+     z1 = -(((((C1 * q + C2) * q + C3) * q + C4) * q + C5) * q + C6);
137
+     z1 /= (((D1 * q + D2) * q + D3) * q + D4) * q + 1.0;
138
+   );
139
+);
140
+
141
+spl0 = ((FLOOR(spl0 * (1.0 - slider2) + z0 * noise_level * slider2))+.5)/6;
142
+spl1 = ((FLOOR(spl1 * (1.0 - slider2) + z1 * noise_level * slider2))+.5)/6;
143
+//spl0 = spl0 * (1.0 - slider2) + z0 * noise_level * slider2;
144
+//spl1 = spl1 * (1.0 - slider2) + z1 * noise_level * slider2;
145
+
146
+sum += z0;
147
+sum2 += z0 * z0;
148
+
149
+i += 1;
150
+(i == srate) ? (
151
+  mean = sum / srate;
152
+  stdev = sqrt(sum2 / srate - mean * mean);
153
+  slider4 = mean;
154
+  slider5 = stdev;
155
+  sliderchange(2^4 + 2^5);
156
+  i = sum = sum2 = 0;
157
+);
158
+
159
+