{ "source": "JSON", "data": "BLOCK", "version": "0.0.1", "type": "javascript.distortion", "language": "javascript", "extension": "webaudio", "help": "Distortion", "label": "Distortion", "color": "#D3C124", "group": "Sound", "codes": [ { "name": "declaration", "code": "\nvar block_$id$ = context.createWaveShaper();\nblock_$id$.curve = makeDistortionCurve($prop[curve]$);\nblock_$id$.oversample = '4x';\nvar $port[input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\n" }, { "name": "function", "code": "\nfunction makeDistortionCurve(amount) {\n var k = typeof amount === 'number' ? amount : 50,\n n_samples = 44100,\n curve = new Float32Array(n_samples),\n deg = Math.PI / 180,\n i = 0,\n x;\n for ( ; i < n_samples; ++i ) {\n x = i * 2 / n_samples - 1;\n curve[i] = ( 3 + k ) * x * 20 * deg / ( Math.PI + k * Math.abs(x) );\n }\n return curve;\n};\n" } ], "properties": [ { "name": "curve", "label": "Curve", "type": "Float", "value": 800 } ], "ports": [ { "conn_type": "input", "name": "input", "label": "Input", "type": "javascript.sound" }, { "conn_type": "output", "name": "output", "label": "Output", "type": "javascript.sound" } ] }