mosaicode-javascript-webaudio/blocks/input devices/metronome.json

58 lines
1.7 KiB
JSON

{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "metronome",
"language": "javascript",
"extension": "webaudio",
"help": "Metronome",
"label": "Metronome",
"color": "150:150:250:150",
"group": "Input Device",
"codes": {
"declaration": "\n// block_$id$ = Float Value\nvar block_$id$_timeout;\nvar block_$id$_value = $prop[value]$;\nvar block_$id$_time = $prop[time]$;\nvar $port[float]$ = [];\n\nvar $port[start]$ = function(value){\n timeout_$id$_value();\n return true;\n };\n\nvar $port[stop]$ = function(value){\n if (value > 0) {\n clearTimeout(block_$id$_timeout);\n }\n return true;\n };\n\n",
"execution": "\nfunction timeout_$id$_value(){\n for (var i = 0; i < $port[float]$.length ; i++){\n $port[float]$[i](block_$id$_value);\n }\n block_$id$_timeout = setTimeout(timeout_$id$_value, block_$id$_time);\n};\n",
"onload": ""
},
"properties": [
{
"name": "value",
"label": "Value",
"type": "Float",
"lower": 0,
"upper": 20000,
"step": 1,
"value": 1
},
{
"name": "time",
"label": "Time (ms)",
"type": "Float",
"lower": 0,
"upper": 20000,
"step": 1,
"value": 1000
}
],
"ports": [
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Float",
"conn_type": "Output",
"name": "float"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"label": "Start",
"conn_type": "Input",
"name": "start"
},
{
"type": "mosaicode_lib_javascript_webaudio.extensions.ports.float",
"conn_type": "Input",
"label": "Stop",
"name": "stop"
}
]
}