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