{ "source": "JSON", "data": "BLOCK", "version": "0.0.1", "type": "hrtf", "language": "javascript", "extension": "webaudio", "help": "HRTF", "label": "HRTF", "color": "50:150:250:150", "group": "Sound", "codes": { "declaration": "\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": [ { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound", "name": "sound_input", "conn_type": "Input", "label": "Sound" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.point", "name": "panner_pos", "conn_type": "Input", "label": "Panner Position" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.point", "name": "listener_pos", "conn_type": "Input", "label": "Listener Position" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.point", "name": "panner_orientation", "conn_type": "Input", "label": "Panner Orientation" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.point", "name": "listener_forward", "conn_type": "Input", "label": "Listener Forward" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.point", "name": "listener_up", "conn_type": "Input", "label": "Listener Up" }, { "type": "mosaicode_lib_javascript_webaudio.extensions.ports.sound", "label": "Sound", "conn_type": "Output", "name": "output" } ] }