[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