1const e={id:"haas-test",title:"Haas Effect",description:"ITD/ILD precedence effect demonstration.",category:"Phase & Spatial",defaultSettings:{delay:0,levelDifference:0,testSignal:"click",playing:!1},createNodes(e,t){const a=e.createDelay(.05),n=e.createDelay(.05),c=e.createGain(),r=e.createGain(),l=e.createChannelMerger(2) 2return a.connect(c),n.connect(r),c.connect(l,0,0),r.connect(l,0,1),l.connect(t),{leftDelay:a,rightDelay:n,leftGain:c,rightGain:r,merger:l,source:null}},start(e,t,a){const n=this.createClickBuffer(a),c=a.createBufferSource() 3c.buffer=n,c.loop=!0,c.connect(e.leftDelay),c.connect(e.rightDelay),c.start(),e.source=c,this.updateSettings(e,t,a)},createClickBuffer(e){const t=e.createBuffer(1,e.sampleRate,e.sampleRate),data=t.getChannelData(0) 4for(let e=0;e<100;e++)data[1e3*e]=1 5return t},stop(e){e.source&&(e.source.stop(),e.source=null)},updateSettings(e,t,a){e.rightDelay.delayTime.value=Math.abs(t.delay)/1e3,e.leftGain.gain.value=1,e.rightGain.gain.value=Math.pow(10,t.levelDifference/20)},keyboard:{handlers:{" ":e=>({playing:!e.playing})}},visualization:{type:"haas-display"},controls:{showPlayButton:!0,infoText:"Test precedence effect. Delay creates directional perception."}} 6export{e as default}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.