-
Notifications
You must be signed in to change notification settings - Fork 0
/
tonewgraph.html
411 lines (371 loc) · 63 KB
/
tonewgraph.html
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Tone Generator</title>
<link rel=stylesheet href="tonestyle.css">
<link href='https://fonts.googleapis.com/css?family=Audiowide' rel=stylesheet>
<script>
var context = null;
var usingWebAudio = true;
if (typeof AudioContext !== 'undefined') {
context = new AudioContext();
} else if (typeof webkitAudioContext !== 'undefined') {
context = new webkitAudioContext();
} else {
usingWebAudio = false;
}
var playing = false;
var osc = null;
var freq = 75;
var STEP_CONSTANT = Math.pow(2.0, 1.0/12.0);
//second set of variables
var playing2 = false;
var osc2 = null;
var freq2 = 50;
var STEP_CONSTANT2 = Math.pow(2.0, 1.0/12.0);
//third set of variables
var playing3 = false;
var osc3 = null;
var freq3 = 25;
var STEP_CONSTANT3 = Math.pow(2.0, 1.0/12.0);
function toggle() {
var button = document.getElementById("toggle");
if (playing && osc) {
playing = false;
osc.stop(0);
button.value = "Play";
} else {
playing = true;
osc = context.createOscillator();
osc.connect(context.destination);
osc.frequency.value = freq;
osc.start(0);
button.value = "Stop";
}
if (playing2 && osc2) {
playing2 = false;
osc2.stop(0);
button.value = "Play";
} else {
playing2 = true;
osc2 = context.createOscillator();
osc2.connect(context.destination);
osc2.frequency.value = freq2;
osc2.start(0);
button.value = "Stop";
}
if (playing3 && osc3) {
playing3 = false;
osc3.stop(0);
button.value = "Play";
} else {
playing3 = true;
osc3 = context.createOscillator();
osc3.connect(context.destination);
osc3.frequency.value = freq3;
osc3.start(0);
button.value = "Stop";
}
}
function updateFreq(newFreq) {
freq = newFreq;
if (osc) {
osc.frequency.value = freq;
}
var text = document.getElementById("freqText").value = freq;
var range = document.getElementById("freqRange").value = freq;
}
window.onload = function() {
if (!usingWebAudio) {
document.getElementById("audioControls").innerHTML = "<p>Web audio required.</p>"
}
}
function updateFreq2(newFreq2) {
freq2 = newFreq2;
if (osc2) {
osc2.frequency.value = freq2;
}
var text = document.getElementById("freqText2").value = freq2;
var range = document.getElementById("freqRange2").value = freq2;
}
window.onload = function() {
if (!usingWebAudio) {
document.getElementById("audioControls2").innerHTML = "<p>Web audio required.</p>"
}
}
function updateFreq3(newFreq3) {
freq3 = newFreq3;
if (osc3) {
osc3.frequency.value = freq3;
}
var text = document.getElementById("freqText3").value = freq3;
var range = document.getElementById("freqRange3").value = freq3;
}
window.onload = function() {
if (!usingWebAudio) {
document.getElementById("audioControls3").innerHTML = "<p>Web audio required.</p>"
}
}
</script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var scale = (100*freq);
var step = 1;
var data = google.visualization.arrayToDataTable([
[' ', 'Tone 1', 'Tone 2', 'Tone 3', 'sum'],
['|', 0, 0, 0, 0],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
['|', 1.1*Math.sin(2*Math.PI*(step/scale)*freq), 1.1*Math.sin(2*Math.PI*(step/scale)*freq2), 1.1*Math.sin(2*Math.PI*(step/scale)*freq3), 1.1*Math.sin(2*Math.PI*(step/scale)*freq) + 1.1*Math.sin(2*Math.PI*(step/scale)*freq2) + 1.1*Math.sin(2*Math.PI*(step++/scale)*freq3)],
]);
var options = {
title: 'Tone Waves',
curveType: 'function',
legend: { position: 'bottom' }
};
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="negrouse" align="center"><input id="toggle" type="button" value="Play" onclick="toggle()"/ ></div>
<div id="controls">
<div id="audioControls">
<input class="frequency" id="freqText" type="text" value="75" onchange="updateFreq(this.value); drawChart(freq)"/>
<div class="adjustments">
<input class="butt" type="button" value="-1 octave" onclick="updateFreq(freq / 2)"/>
<input class="butt" type="button" value="-1 half-step" onclick="updateFreq(freq / STEP_CONSTANT)"/>
<input class="butt" type="button" value="+1 half-step" onclick="updateFreq(-freq * STEP_CONSTANT)"/>
<input class="butt" type="button" value="+1 octave" onclick="updateFreq(freq * 2)"/>
<br>
<input id="freqRange" type="range" min="0" max="1760" value="75" oninput="updateFreq(this.value); drawChart(freq)"/>
</div>
<br>
</div>
<div id="audioControls2">
<input class="frequency" id="freqText2" type="text" value="50" onchange="updateFreq2(this.value); drawChart(freq2)"/>
<div class="adjustments">
<input class="butt" type="button" value="-1 octave" onclick="updateFreq2(freq2 / 2)"/>
<input class="butt" type="button" value="-1 half-step" onclick="updateFreq2(freq2 / STEP_CONSTANT2)"/>
<input class="butt" type="button" value="+1 half-step" onclick="updateFreq2(freq2 * STEP_CONSTANT2)"/>
<input class="butt" type="button" value="+1 octave" onclick="updateFreq2(freq2 * 2)"/>
<br>
<input id="freqRange2" type="range" min="0" max="1760" value="50" oninput="updateFreq2(this.value); drawChart(freq2)"/>
</div>
<br>
</div>
<div id="audioControls3">
<input class="frequency" id="freqText3" type="text" value="25" onchange="updateFreq3(this.value); drawChart(freq3)"/>
<div class="adjustments">
<input class="butt" type="button" value="-1 octave" onclick="updateFreq3(freq3 / 2)"/>
<input class="butt" type="button" value="-1 half-step" onclick="updateFreq3(freq3 / STEP_CONSTANT3)"/>
<input class="butt" type="button" value="+1 half-step" onclick="updateFreq3(freq3 * STEP_CONSTANT3)"/>
<input class="butt" type="button" value="+1 octave" onclick="updateFreq3(freq3 * 2)"/>
<br>
<input id="freqRange3" type="range" min="0" max="1760" value="25" oninput="updateFreq3(this.value); drawChart(freq3)"/>
</div>
<br>
</div>
<div id="curve_chart" style="width: 900px; height: 500px"></div>