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

123 lines
5.5 KiB
JSON

{
"source": "JSON",
"data": "BLOCK",
"version": "0.0.1",
"type": "javascript.hrtf",
"language": "javascript",
"extension": "webaudio",
"help": "HRTF",
"label": "HRTF",
"color": "#D3C124",
"group": "Sound",
"codes": [
{
"name": "declaration",
"code": "\n// block_$id$ = $label$\nvar block_$id$_width = window.innerWidth;\nvar block_$id$_height = window.innerHeight;\nvar block_$id$_xPos = Math.floor(block_$id$_width/2);\nvar block_$id$_yPos = Math.floor(block_$id$_height/2);\nvar block_$id$_zPos = 295;\nvar block_$id$ = context.createPanner();\n\nblock_$id$.panningModel = 'HRTF';\nblock_$id$.distanceModel = \"$prop[distance_model]$\";\nblock_$id$.refDistance = $prop[ref_distance]$;\nblock_$id$.maxDistance = $prop[max_distance]$;\nblock_$id$.rolloffFactor = $prop[rolloff_factor]$;\nblock_$id$.coneInnerAngle = $prop[cone_inner_angle]$;\nblock_$id$.coneOuterAngle = $prop[cone_outer_angle]$;\nblock_$id$.coneOuterGain = $prop[cone_outer_gain]$;\n\nvar block_$id$_panner_pos = [0, 0, 0];\nvar block_$id$_listener_pos = [0, 0, 0];\nvar block_$id$_panner_orientation = [0, 0, 0];\nvar block_$id$_listener_forward = [0, 0, 0];\nvar block_$id$_listener_up = [0, 0, 0];\n\n\nvar $port[panner_pos]$ = function(value){\n block_$id$_panner_pos = value;\n block_$id$.setPosition(value[0],\n value[1],\n value[2]);\n return true;\n};\nvar $port[listener_pos]$ = function(value){\n block_$id$_listener_pos = value;\n context.listener.setPosition(value[0],\n value[1],\n value[2]);\n return true;\n};\nvar $port[panner_orientation]$ = function(value){\n block_$id$_panner_orientation = value;\n block_$id$.setOrientation(value[0],\n value[1],\n value[2]);\n return true;\n};\nvar $port[listener_forward]$ = function(value){\n block_$id$_listener_forward = value;\n context.listener.setOrientation(value[0],\n value[1],\n value[2],\n block_$id$_listener_up[0],\n block_$id$_listener_up[1],\n block_$id$_listener_up[2]);\n return true;\n};\n\nvar $port[listener_up]$ = function(value){\n block_$id$_listener_up = value;\n context.listener.setOrientation(block_$id$_listener_forward[0],\n block_$id$_listener_forward[1],\n block_$id$_listener_forward[2],\n value[0],\n value[1],\n value[2]);\n return true;\n};\n\nvar $port[sound_input]$ = block_$id$;\nvar $port[output]$ = block_$id$;\n"
}
],
"properties": [
{
"name": "distance_model",
"label": "Distance Model",
"type": "Combo",
"values": [
"linear",
"inverse",
"exponential"
],
"value": "inverse"
},
{
"name": "cone_inner_angle",
"label": "coneInnerAngle",
"type": "Float",
"lower": 0,
"upper": 360,
"value": 360
},
{
"name": "cone_outer_angle",
"label": "Cone Outer Angle",
"type": "Float",
"lower": 0,
"upper": 360,
"value": 0
},
{
"name": "cone_outer_gain",
"label": "Cone Outer Gain",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 0
},
{
"name": "ref_distance",
"label": "Ref Distance",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 1
},
{
"name": "max_distance",
"label": "Max Distance",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 10000
},
{
"name": "rolloff_factor",
"label": "Rolloff Factor",
"type": "Float",
"lower": 0,
"upper": 32000,
"value": 1
}
],
"ports": [
{
"conn_type": "input",
"name": "sound_input",
"label": "Sound",
"type": "javascript.sound"
},
{
"conn_type": "input",
"name": "panner_pos",
"label": "Panner Position",
"type": "javascript.point"
},
{
"conn_type": "input",
"name": "listener_pos",
"label": "Listener Position",
"type": "javascript.point"
},
{
"conn_type": "input",
"name": "panner_orientation",
"label": "Panner Orientation",
"type": "javascript.point"
},
{
"conn_type": "input",
"name": "listener_forward",
"label": "Listener Forward",
"type": "javascript.point"
},
{
"conn_type": "input",
"name": "listener_up",
"label": "Listener Up",
"type": "javascript.point"
},
{
"conn_type": "output",
"name": "output",
"label": "Sound",
"type": "javascript.sound"
}
]
}