<div dir="ltr"><div dir="ltr">Thanks very much Don. Yes it fascinating - great node.<div><br></div><div>Specs: "<span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">If the </span><i style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">dopplerEnabled</i><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px"> field is TRUE, ListenerPointSource </span><i style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">children</i><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px"> sources which are moving spatially in the transformation hierarchy, relative to the location of the ListenerPointSource node, shall apply velocity-induced frequency shifts corresponding to Doppler effect."</span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">You said LPS has no inputs (children) yet this text talks about its children. </span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">Q1. is it trying to say the source streams / stream sources / SAD StreamAudioDestinations? </span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">Q2. is it saying LPS pose would be used by any panner node under any SAD it refers to? </span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">(PS web audio has deprecated doppler effect).</span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">Q3. if multiple LPS refer to the same SAD, which LPS pose would panner nodes under SAD use?</span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">Thanks, Doug</span></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 1, 2023 at 11:31 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg-5189417901224150871"><div lang="EN-US" style="overflow-wrap: break-word;"><div class="m_-5189417901224150871WordSection1"><p class="MsoNormal">Thanks for asking Doug.  References:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_-5189417901224150871MsoListParagraph" style="margin-left:0in">X3D4 Architecture, Sound Component, 16.4.13 ListenerPointSource<u></u><u></u></li><li class="m_-5189417901224150871MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/sound.html#ListenerPointSource" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/sound.html#ListenerPointSource</a><u></u><u></u></li><li class="m_-5189417901224150871MsoListParagraph" style="margin-left:0in">X3D Tooltips, ListenerPointSource<u></u><u></u></li><li class="m_-5189417901224150871MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ListenerPointSource" target="_blank">https://www.web3d.org/x3d/content/X3dTooltips.html#ListenerPointSource</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">“ListenerPointSource represents the position and orientation of a person listening to virtual sound in the audio scene, and provides single or multiple sound channels as output. Multiple ListenerPointSource nodes can be active for sound processing.”<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Suggested analogy: a virtual microphone in the virtual environment.  The essential idea is that sound can be recorded as if a listener were at that point.  Thus position and orientation can be placed at a given location (such as a seat in a virtual auditorium) or even be animated to rehearse an audio soundtrack through a virtual environment.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Further option: can be user driven at run time.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_-5189417901224150871MsoListParagraph" style="margin-left:0in"><i><span style="font-size:12pt;font-family:Verdana,sans-serif;color:black;background:white">trackCurrentView</span></i><span style="font-size:12pt;font-family:Verdana,sans-serif;color:black;background:white"> field is </span><span class="m_-5189417901224150871code"><span style="font-size:10.5pt;font-family:"Courier New";color:black;background:white">TRUE</span></span><span style="font-size:12pt;font-family:Verdana,sans-serif;color:black;background:white"> then <i>position</i> and <i>orientation</i> matches the user's current view.</span><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">The ListenerPointSource can be an input to other parts of an audio graph, and feeding outputs to external speakers, or whatever.  Note similarity to other sources such as MicrophoneSource and StreamAudioSource - they provide outputs for processing by other audio nodes, and don’t have inputs.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Our design intent was to take full advantage of a sound spatialization in a virtual environment so that any point (static or moving or navigating) might be a potential sample point.  Seems pretty powerful, especially as our aural designs become further sophisticated to match or augment our geometric designs.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Similarly, just as *Source nodes provide audio signals, the *Destination consume audio signals.  In other words (electrical engineering parlance) they are signal sources and signal sinks.  All variation occurs between those.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">We followed the example (and insightful design) of Web Audio API Recommendation and stayed relatively silent about monaural, binaural, etc.  If a signal source has one or two channels, for example, the audio graph mostly looks the same.  ChannelMerger ChannelSelector and ChannelSplitter lets an author work on individual channels if they want.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">No doubt you noticed in the Support Levels we did not place any bounds on the number of nodes supported at one time, expecting that implementations and hardware support will vary quite a bit and further improve over time.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Hopefully the spec prose is a bit clearer now – we will all learn a lot as we keep building more sophisticated audio graphs and sound environments.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">All the best, Don<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in"><p class="MsoNormal"><b>From:</b> x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" target="_blank">x3d-public-bounces@web3d.org</a>> <b>On Behalf Of </b>GPU Group<br><b>Sent:</b> Wednesday, March 1, 2023 11:47 AM<br><b>To:</b> X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br><b>Subject:</b> [x3d-public] Sound v4 > ListenerPointSource QUESTIONS<u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I'm struggling to understand how the LPS ListenerPointSource should work. It seems like a great idea with plenty of possibilities.<u></u><u></u></p><p class="MsoNormal">Guess 1:<u></u><u></u></p><p class="MsoNormal">LP ListenerPoint - would have just the pose of the listener.<u></u><u></u></p><p class="MsoNormal">- that pose would be used in any Panner nodes instead of viewpoint<u></u><u></u></p><p class="MsoNormal">- LP would be a singleton and apply to all contexts<u></u><u></u></p><p class="MsoNormal">- would work under AD AudioDestination<u></u><u></u></p><p class="MsoNormal">Guess 2:<u></u><u></u></p><p class="MsoNormal">Multiple LP - like LP, except each LP could refer to / apply its pose to a specific audio context using keys / IDs.<u></u><u></u></p><p class="MsoNormal">- each AD would have a key/ID (SFString or SFInt32), (ID would be simple number like 0 or 1 or 2, not UUID of mediaStream)<u></u><u></u></p><p class="MsoNormal">- each LP would have a keys/IDs field, (MFString, MFInt32), and could apply its pose to panner nodes under the ADs with a key in its key list, or if key list empty, to all contexts.<u></u><u></u></p><p class="MsoNormal">Guess 3:<u></u><u></u></p><p class="MsoNormal">LPS works with SAD StreamAudioSource, with each SAD converting its output to a bufferable stream like HTML MediaStream. The program would hold a list of Streams with key/ID: list (Stream,key)<u></u><u></u></p><p class="MsoNormal">Each LPS would have a keys/IDs field, and merge all the streams its interested in.<u></u><u></u></p><p class="MsoNormal">The LPS pose would not affect Panner nodes under SADs.<u></u><u></u></p><p class="MsoNormal">Rather it would take each stream as positionless and add its own pose with an internal panner node.<u></u><u></u></p><p class="MsoNormal">And have a built in AD to deliver its output to the scene <u></u><u></u></p><p class="MsoNormal">(when I implemented Sound and SpatialSound, I included an AD node if and only if it had no audio parent)<u></u><u></u></p><p class="MsoNormal">Guess 4:<u></u><u></u></p><p class="MsoNormal">Like 3, except LPS pose affects Panner nodes under its SAD list. <u></u><u></u></p><p class="MsoNormal">x But multiple LPS would have conflicting pose claims, the Panner node under SAD wouldn't know which one to use)<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I've lost the link to a paper that explained it. <u></u><u></u></p><p class="MsoNormal">Q. how is it supposed to work?<u></u><u></u></p><p class="MsoNormal">Thanks, Doug Sanden<u></u><u></u></p><div><div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></blockquote></div>