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

52 lines
1.7 KiB
JSON

{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "javascript.playback",
"language": "javascript",
"extension": "webaudio",
"help": "Playback",
"label": "Playback",
"color": "#D3C124",
"group": "Sound",
"codes": [
{
"name": "declaration",
"code": "\nvar block_$id$ = context.createBufferSource();\nvar $port[output]$ = block_$id$;\n"
},
{
"name": "html",
"code": "\n$prop[label]$ <input type=\"file\" id=\"pb_$id$\" onchange=\"handleFile_$id$(this.files)\">\n"
},
{
"name": "execution",
"code": "\nfunction handleFile_$id$() {\n var input_pb_$id$ = document.getElementById(\"pb_$id$\");\n input_pb_$id$.addEventListener(\"change\", handleFile_$id$, false);\n\n var reader = new FileReader();\n reader.onload = function(ev) {\n context.decodeAudioData(ev.target.result, function(buffer) {\n block_$id$.buffer = buffer;\n block_$id$.loop = (\"$prop[loop]$\" == \"True\");\n });\n };\n reader.readAsArrayBuffer(input_pb_$id$.files[0]);\n $port[output]$.start();\n}\n"
},
{
"name": "onload",
"code": ""
}
],
"properties": [
{
"name": "loop",
"label": "Loop",
"type": "Check",
"value": "True"
},
{
"name": "label",
"label": "Label",
"type": "String",
"value": "Playback"
}
],
"ports": [
{
"conn_type": "output",
"name": "output",
"label": "Output",
"type": "javascript.sound"
}
]
}