{ "source": "JSON", "data": "BLOCK", "version": "0.0.1", "type": "distortion", "language": "javascript", "extension": "webaudio", "help": "Distortion", "label": "Distortion", "color": "50:150:250:150", "group": "Sound", "codes": { "declaration": "\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", "function": "\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": [ { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound", "label": "Input", "conn_type": "Input", "name": "input" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound", "label": "Output", "conn_type": "Output", "name": "output" } ] }