mosaicode/extensions/javascript/blocks/webaudio/Interface/Metronome.json

66 lines
2.0 KiB
JSON

{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "javascript.metronome",
"language": "javascript",
"extension": "webaudio",
"help": "Metronome",
"label": "Metronome",
"color": "#24C1D3",
"group": "Interface",
"codes": [
{
"name": "declaration",
"code": "\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"
},
{
"name": "execution",
"code": "\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"
},
{
"name": "onload",
"code": ""
}
],
"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": [
{
"conn_type": "output",
"name": "float",
"label": "Float",
"type": "javascript.float"
},
{
"conn_type": "input",
"name": "start",
"label": "Start",
"type": "javascript.float"
},
{
"conn_type": "input",
"name": "stop",
"label": "Stop",
"type": "javascript.float"
}
]
}