[x3d-public] Sound v4 > channel nodes > node design comparison v4 vs Doug proposed

GPU Group gpugroup at gmail.com
Sun Mar 5 05:50:51 PST 2023


correction to b)

proposed

        <ChannelMerger channelCount='6'

          indexStream='0,1'


On Sun, Mar 5, 2023 at 6:44 AM GPU Group <gpugroup at gmail.com> wrote:

> Here's an even better proposed design using a 3-tuple, and showing more
> tested scenarios
>
> CHANNEL NODE DESIGN COMPARISON
>
> v4: channel nodes as written in v4 Spec Draft Sound Component
>
> - merger.children is a sequential list of output/destination channels
>
> proposed: add 3 fields to ChannelMerger
>
> -  MFInt32 indexStream, indexSource, indexDestination
>
> - and eliminate ChannelSelector node.
>
> - Merger.children is a list of audio streams.
>
> I have both v4 and proposed implemented in freewrl: if indexStream, Source
> or Destination is empty, thunks to v4
>
> I tested both methods on 5 scenarios and they both work as follows:
>
> a) swapping 2 channels
>
> v4
>
>         <ChannelMerger channelCount='6' >
>
>             <ChannelSelector channelSelection='1'>
>
>                <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>
>                  <AudioClip url='"sound/6_Channel_ID.wav"'/>
>
>                </ChannelSplitter>
>
>             </ChannelSelector>
>
>             <ChannelSelector channelSelection='0'>
>
>               <ChannelSplitter USE='Channel_Splitter'/>
>
>             </ChannelSelector>
>
>         </ChannelMerger>
>
> proposed
>
>         <ChannelMerger channelCount='6'
>
>           indexStream='0,0'
>
>           indexSource='0,1'
>
>           indexDestination='1,0'
>
>           >
>
>              <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>
>               <AudioClip url='"sound/6_Channel_ID.wav"'/>
>
>              </ChannelSplitter>
>
>         </ChannelMerger>
>
> b) merging 2 channels into 1
>
> v4
>
>         <ChannelMerger channelCount='6' >
>
>           <Gain>
>
>             <ChannelSelector channelSelection='1'>
>
>                <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>
>                  <AudioClip url='"sound/6_Channel_ID.wav"'/>
>
>                </ChannelSplitter>
>
>             </ChannelSelector>
>
>             <ChannelSelector channelSelection='0'>
>
>               <ChannelSplitter USE='Channel_Splitter'/>
>
>             </ChannelSelector>
>
>           </Gain>
>
>         </ChannelMerger>
>
> proposed
>
>         <ChannelMerger channelCount='6'
>
>           indexStream='0,0'
>
>           indexSource='0,1'
>
>           indexDestination='0,0'
>
>           >
>
>              <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>
>                <AudioClip url='"sound/6_Channel_ID.wav"'/>
>
>              </ChannelSplitter>
>
>         </ChannelMerger>
>
> c) merging 2 channels into 2nd merger channel (skipping first output
> channel)
>
> v4
>
>         <ChannelMerger channelCount='6' >
>
>           <Gain/>
>
>           <Gain>
>
>             <ChannelSelector channelSelection='1'>
>
>                <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>
>                 <AudioClip url='"sound/6_Channel_ID.wav"'/>
>
>                </ChannelSplitter>
>
>             </ChannelSelector>
>
>             <ChannelSelector channelSelection='0'>
>
>               <ChannelSplitter USE='Channel_Splitter'/>
>
>             </ChannelSelector>
>
>           </Gain>
>
>         </ChannelMerger>
>
> proposed:
>
>         <ChannelMerger channelCount='6'
>
>           indexStream='0,0'
>
>           indexSource='0,1'
>
>           indexDestination='1,1'
>
>           >
>
>              <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>
>               <AudioClip url='"sound/6_Channel_ID.wav"'/>
>
>              </ChannelSplitter>
>
>         </ChannelMerger>
>
>
>
> d) assign different audio streams to first and 2nd channnels (play beat in
> left, cnote in right)
>
> v4
>
>         <ChannelMerger channelCount='2' >
>
>               <Gain gain='.5'><AudioClip url='"sound/beat.mp3"'/></Gain>
>
>               <Gain gain='.5'><AudioClip url='"sound/cnote.wav"'/></Gain>
>
>         </ChannelMerger>
>
> proposed:
>
>         <ChannelMerger channelCount='2'
>
>           indexSteam='0,0'
>
>           indexSourc='-1,-1'
>
>           indexDestination='0,1'
>
>           >
>
>               <Gain gain='.5'><AudioClip url='"sound/beat.mp3"'/></Gain>
>
>               <Gain gain='.5'><AudioClip url='"sound/cnote.wav"'/></Gain>
>
>         </ChannelMerger>
>
> e) assign different audio streams to first and 2nd channnels via splitter
> take first channel (play beat in left, cnote in right)
>
> v4
>
>         <ChannelMerger channelCount='2' >
>
>             <ChannelSelector channelChoice='0'>
>
>               <ChannelSplitter channelCount='2'><AudioClip
> url='"sound/beat.mp3"'/></ChannelSplitter>
>
>             </ChannelSelector>
>
>             <ChannelSelector channelChoice='0'>
>
>               <ChannelSplitter channelCount='2'><AudioClip
> url='"sound/cnote.wav"'/></ChannelSplitter>
>
>             </ChannelSelector>
>
>         </ChannelMerger>
>
> proposed:
>
>         <ChannelMerger channelCount='2'
>
>           indexStream='0,1'
>
>           indexSourc='0,0'
>
>           indexDestination='0,1'
>
>           >
>
>               <ChannelSplitter channelCount='2'><AudioClip
> url='"sound/beat.mp3"'/></ChannelSplitter>
>
>               <ChannelSplitter channelCount='2'><AudioClip
> url='"sound/cnote.wav"'/></ChannelSplitter>
>
>         </ChannelMerger>
>
> /CHANNEL NODE DESIGN COMPARISON
>
> On Sat, Mar 4, 2023 at 10:20 AM GPU Group <gpugroup at gmail.com> wrote:
>
>> CHANNEL NODE DESIGN COMPARISON
>>
>> v4: channel nodes as written in v4 Spec Draft Sound Component
>>
>> Doug proposed: add 2 fields to ChannelMerger MFInt32 indxDst and indxSrc
>> and eliminate ChannelSelector node
>>
>> I have both v4 and Doug proposed implemented in freewrl: if indxDst or
>> indxSrc is empty, thunks to v4
>>
>> I tested both methods on 3 scenarios and they both work as follows:
>>
>> a) swapping 2 channels
>>
>> v4
>>
>>         <ChannelMerger channelCount='6' >
>>
>>             <ChannelSelector channelSelection='1'>
>>
>>                <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>>
>>                  <AudioClip url='"sound/6_Channel_ID.wav"'/>
>>
>>                </ChannelSplitter>
>>
>>             </ChannelSelector>
>>
>>             <ChannelSelector channelSelection='0'>
>>
>>               <ChannelSplitter USE='Channel_Splitter'/>
>>
>>             </ChannelSelector>
>>
>>         </ChannelMerger>
>>
>> Doug proposed
>>
>>         <ChannelMerger channelCount='6'
>>
>>           indxSrc='0,1'
>>
>>           indxDst='1,0'
>>
>>           >
>>
>>              <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>>
>>               <AudioClip url='"sound/6_Channel_ID.wav"'/>
>>
>>              </ChannelSplitter>
>>
>>             <ChannelSplitter USE='Channel_Splitter'/>
>>
>>         </ChannelMerger>
>>
>> b) merging 2 channels into 1
>>
>> v4
>>
>>         <ChannelMerger channelCount='6' >
>>
>>           <Gain>
>>
>>             <ChannelSelector channelSelection='1'>
>>
>>                <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>>
>>                  <AudioClip url='"sound/6_Channel_ID.wav"'/>
>>
>>                </ChannelSplitter>
>>
>>             </ChannelSelector>
>>
>>             <ChannelSelector channelSelection='0'>
>>
>>               <ChannelSplitter USE='Channel_Splitter'/>
>>
>>             </ChannelSelector>
>>
>>           </Gain>
>>
>>         </ChannelMerger>
>>
>> Doug proposed
>>
>>         <ChannelMerger channelCount='6'
>>
>>           indxSrc='0,1'
>>
>>           indxDst='0,0'
>>
>>           >
>>
>>              <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>>
>>                <AudioClip url='"sound/6_Channel_ID.wav"'/>
>>
>>              </ChannelSplitter>
>>
>>              <ChannelSplitter USE='Channel_Splitter'/>
>>
>>         </ChannelMerger>
>>
>> c) merging 2 channels into 2nd merger channel (skipping first output
>> channel)
>>
>> v4
>>
>>         <ChannelMerger channelCount='6' >
>>
>>           <Gain/>
>>
>>           <Gain>
>>
>>             <ChannelSelector channelSelection='1'>
>>
>>                <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>>
>>                 <AudioClip url='"sound/6_Channel_ID.wav"'/>
>>
>>                </ChannelSplitter>
>>
>>             </ChannelSelector>
>>
>>             <ChannelSelector channelSelection='0'>
>>
>>               <ChannelSplitter USE='Channel_Splitter'/>
>>
>>             </ChannelSelector>
>>
>>           </Gain>
>>
>>         </ChannelMerger>
>>
>> Doug proposed:
>>
>>         <ChannelMerger channelCount='6'
>>
>>           indxSrc='0,1'
>>
>>           indxDst='1,1'
>>
>>           >
>>
>>              <ChannelSplitter DEF='Channel_Splitter' channelCount='6'>
>>
>>               <AudioClip url='"sound/6_Channel_ID.wav"'/>
>>
>>              </ChannelSplitter>
>>
>>             <ChannelSplitter USE='Channel_Splitter'/>
>>
>>         </ChannelMerger>
>>
>>
>>
>> /CHANNEL NODE DESIGN COMPARISON
>>
>> -Doug
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230305/3f26ab9d/attachment-0001.html>


More information about the x3d-public mailing list