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