mosaicode/extensions/javascript/blocks/webaudio/Sound/Distortion.json

44 lines
1.5 KiB
JSON

{
"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"
}
]
}