@prefix :        <https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/SplitChannels.ttl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix x3d:     <https://www.web3d.org/specifications/x3d-4.0.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.0#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Full' ;
  x3do:version '4.0' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-4.0.xsd' .
:head a owl:NamedIndividual, x3do:head ;
  x3do:hasParent :X3D ;
  x3do:hasMeta :meta_1_1, :meta_1_2, :meta_1_3, :meta_1_4, :meta_1_5, :meta_1_6, :meta_1_7, :meta_1_8, :meta_1_9, :meta_1_10, :meta_1_11, :meta_1_12, :meta_1_13 .
:meta_1_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'SplitChannels.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'This X3D scene includes a simple sound source which can be moved right and left. Depending on the position of the sound source, the user can hear the produced sound from the corresponding output speaker. Accordingly, there is a source that can be passed through a SpatialSound for the spatialization of the input audio. The approach is based on the relative position of the source and the listener, in comparison to the panner.' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'This work presents an innovative solution of the spatial sound in X3DOM framework, that based on a combinational methodology. Specifically, we suggested the enrichment of X3DOM with spatial sound features, using both the X3D sound nodes and the structure of Web Audio API.' ;
  x3do:name 'info' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Efi Lakka, Athanasios Malamos, Dick Puk, Don Brutzman' ;
  x3do:name 'creator' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '28 October 2020' ;
  x3do:name 'created' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '22 August 2025' ;
  x3do:name 'modified' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'CHANGELOG.txt' ;
  x3do:name 'reference' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'credit for audio files' ;
  x3do:name 'TODO' .
:meta_1_9 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'http://www.medialab.hmu.gr/minipages/x3domAudio' ;
  x3do:name 'reference' .
:meta_1_10 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://medialab.hmu.gr/minipages/x3domAudio/splitChannels.xhtml' ;
  x3do:name 'reference' .
:meta_1_11 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/SplitChannels.x3d' ;
  x3do:name 'identifier' .
:meta_1_12 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit' ;
  x3do:name 'generator' .
:meta_1_13 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../license.html' ;
  x3do:name 'license' .
:meta dcterms:title "SplitChannels.x3d" .
:meta dcterms:description "This X3D scene includes a simple sound source which can be moved right and left. Depending on the position of the sound source, the user can hear the produced sound from the corresponding output speaker. Accordingly, there is a source that can be passed through a SpatialSound for the spatialization of the input audio. The approach is based on the relative position of the source and the listener, in comparison to the panner." .
:meta dcterms:info "This work presents an innovative solution of the spatial sound in X3DOM framework, that based on a combinational methodology. Specifically, we suggested the enrichment of X3DOM with spatial sound features, using both the X3D sound nodes and the structure of Web Audio API." .
:meta dcterms:creator "Efi Lakka, Athanasios Malamos, Dick Puk, Don Brutzman" .
:meta dcterms:created "28 October 2020" .
:meta dcterms:modified "22 August 2025" .
:meta dcterms:reference "CHANGELOG.txt" .
:meta dcterms:reference "http://www.medialab.hmu.gr/minipages/x3domAudio" .
:meta dcterms:reference "https://medialab.hmu.gr/minipages/x3domAudio/splitChannels.xhtml" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/SplitChannels.x3d" .
:meta dcterms:generator "X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit" .
:meta dcterms:license "../license.html" .
:Scene a owl:NamedIndividual, x3do:Scene ;
  x3do:hasParent :X3D ;
  x3do:hasChildren :WorldInfo_2_1, :NavigationInfo_2_2, :Background_2_3, :Viewpoint_2_4, :PowerR, :PowerL, :Transform_2_7, :ListenerPointSource_2_8, :StreamAudioDestination_2_9, :ChannelSplitter, :Audio3 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'SplitChannels.x3d' .
:NavigationInfo_2_2 a owl:NamedIndividual, x3do:NavigationInfo ;
  x3do:hasParent :Scene ;
  x3do:id 'NAV' ;
  x3do:type 'NONE' .
:Background_2_3 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:skyColor ( 0.200 0.200 0.210 ) .
:Viewpoint_2_4 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:orientation ( 1 0 0 -0.5 ) ;
  x3do:position ( 0.0 500.0 600.0 ) ;
  x3do:retainUserOffsets true .
:PowerR a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Transform_2_5_1, :Transform_2_5_2, :volumeRight ;
  x3do:DEF 'PowerR' ;
  x3do:translation ( 100 400 400 ) .
:Transform_2_5_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :PowerR ;
  x3do:hasChildren :Shape_2_5_1_1 ;
  x3do:id 'pR' ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:translation ( 0 40 0 ) .
:Shape_2_5_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_5_1 ;
  x3do:hasAppearance :audio_emit ;
  x3do:hasGeometry :Box_2_5_1_1_2 .
:audio_emit a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_5_1_1 ;
  x3do:hasMaterial :Material_2_5_1_1_1_1 ;
  x3do:DEF 'audio_emit' .
:Material_2_5_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit ;
  x3do:diffuseColor ( 0 1 0 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:Box_2_5_1_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_5_1_1 ;
  x3do:size ( 10 80 0.01 ) .
:Transform_2_5_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :PowerR ;
  x3do:hasChildren :Shape_2_5_2_1 ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:translation ( -2.7 37 0 ) .
:Shape_2_5_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_5_2 ;
  x3do:hasAppearance :audio_emit2 ;
  x3do:hasGeometry :Box_2_5_2_1_2 .
:audio_emit2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_5_2_1 ;
  x3do:hasMaterial :Material_2_5_2_1_1_1 ;
  x3do:hasTexture :ImageTexture_2_5_2_1_1_2 ;
  x3do:DEF 'audio_emit2' .
:Material_2_5_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit2 ;
  x3do:diffuseColor ( 0 1 0 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:ImageTexture_2_5_2_1_1_2 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :audio_emit2 ;
  x3do:url '"images/line.png" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/images/line.png"' .
:Box_2_5_2_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_5_2_1 ;
  x3do:size ( 25 83 0.01 ) .
:volumeRight a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :PowerR ;
  x3do:hasChildren :Shape_2_5_3_1 ;
  x3do:DEF 'volumeRight' ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:scale ( 10 10 10 ) ;
  x3do:translation ( 0 -10 0 ) .
:Shape_2_5_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :volumeRight ;
  x3do:hasAppearance :Appearance_2_5_3_1_1 ;
  x3do:hasGeometry :Text_2_5_3_1_2 .
:Appearance_2_5_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_5_3_1 ;
  x3do:hasMaterial :Material_2_5_3_1_1_1 .
:Material_2_5_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_5_3_1_1 ;
  x3do:ambientIntensity 0.0933 ;
  x3do:diffuseColor ( 0.345 0.345 0.882 ) ;
  x3do:shininess 0.51 ;
  x3do:specularColor ( 0.46 0.46 0.46 ) .
:Text_2_5_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_5_3_1 ;
  x3do:hasFontStyle :VolumeFontStyle ;
  x3do:string 'Right Channel Volume' .
:VolumeFontStyle a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_5_3_1_2 ;
  x3do:DEF 'VolumeFontStyle' ;
  x3do:family '"Times" "SERIF"' ;
  x3do:cssStyle 'BOLD' .
:PowerL a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Transform_2_6_1, :Transform_2_6_2, :volumeLeft ;
  x3do:DEF 'PowerL' ;
  x3do:translation ( -100 400 400 ) .
:Transform_2_6_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :PowerL ;
  x3do:hasChildren :Shape_2_6_1_1 ;
  x3do:id 'pL' ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:translation ( 0 40 0 ) .
:Shape_2_6_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_6_1 ;
  x3do:hasAppearance :audio_emit3 ;
  x3do:hasGeometry :Box_2_6_1_1_2 .
:audio_emit3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1_1 ;
  x3do:hasMaterial :Material_2_6_1_1_1_1 ;
  x3do:DEF 'audio_emit3' .
:Material_2_6_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit3 ;
  x3do:diffuseColor ( 0 1 0 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:Box_2_6_1_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_6_1_1 ;
  x3do:size ( 10 80 0.01 ) .
:Transform_2_6_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :PowerL ;
  x3do:hasChildren :Shape_2_6_2_1 ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:translation ( 13.2 37 0 ) .
:Shape_2_6_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_6_2 ;
  x3do:hasAppearance :audio_emit4 ;
  x3do:hasGeometry :Box_2_6_2_1_2 .
:audio_emit4 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_2_1 ;
  x3do:hasMaterial :Material_2_6_2_1_1_1 ;
  x3do:hasTexture :ImageTexture_2_6_2_1_1_2 ;
  x3do:DEF 'audio_emit4' .
:Material_2_6_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit4 ;
  x3do:diffuseColor ( 0 1 0 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:ImageTexture_2_6_2_1_1_2 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :audio_emit4 ;
  x3do:url '"images/line.png" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/images/line.png"' .
:Box_2_6_2_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_6_2_1 ;
  x3do:size ( 25 83 0.01 ) .
:volumeLeft a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :PowerL ;
  x3do:hasChildren :Shape_2_6_3_1 ;
  x3do:DEF 'volumeLeft' ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:scale ( 10 10 10 ) ;
  x3do:translation ( 0 -10 0 ) .
:Shape_2_6_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :volumeLeft ;
  x3do:hasAppearance :Appearance_2_6_3_1_1 ;
  x3do:hasGeometry :Text_2_6_3_1_2 .
:Appearance_2_6_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_3_1 ;
  x3do:hasMaterial :Material_2_6_3_1_1_1 .
:Material_2_6_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_6_3_1_1 ;
  x3do:ambientIntensity 0.0933 ;
  x3do:diffuseColor ( 0.345 0.345 0.882 ) ;
  x3do:shininess 0.51 ;
  x3do:specularColor ( 0.46 0.46 0.46 ) .
:Text_2_6_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_6_3_1 ;
  x3do:hasFontStyle :VolumeFontStyle-USE-1 ;
  x3do:string 'Left Channel Volume' .
:VolumeFontStyle-USE-1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_6_3_1_2 ;
  owl:sameAs :VolumeFontStyle . # DEF matching this USE
:Transform_2_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_7_1 .
:Shape_2_7_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7 ;
  x3do:hasAppearance :floor ;
  x3do:hasGeometry :Box_2_7_1_2 .
:floor a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1 ;
  x3do:hasMaterial :Material_2_7_1_1_1 ;
  x3do:DEF 'floor' .
:Material_2_7_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :floor ;
  x3do:diffuseColor ( 0.1 0.1 0.1 ) ;
  x3do:shininess 0.8 ;
  x3do:specularColor ( 0.5 0.6 0.7 ) .
:Box_2_7_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_7_1 ;
  x3do:size ( 1500 10 500 ) .
:ListenerPointSource_2_8 a owl:NamedIndividual, x3do:ListenerPointSource ;
  x3do:hasParent :Scene ;
  x3do:id 'ListenerPointSource' ;
  x3do:trackCurrentView true .
:StreamAudioDestination_2_9 a owl:NamedIndividual, x3do:StreamAudioDestination ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Gain_2_9_1 ;
  x3do:id 'AudioDestination' .
:Gain_2_9_1 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :StreamAudioDestination_2_9 ;
  x3do:hasChildren :ChannelMerger_2_9_1_1 ;
  x3do:id 'Gain3' .
:ChannelMerger_2_9_1_1 a owl:NamedIndividual, x3do:ChannelMerger ;
  x3do:hasParent :Gain_2_9_1 ;
  x3do:hasChildren :ChannelSelector_2_9_1_1_1, :ChannelSelector_2_9_1_1_2 ;
  x3do:id 'ChannelMerger' .
:ChannelSelector_2_9_1_1_1 a owl:NamedIndividual, x3do:ChannelSelector ;
  x3do:hasParent :ChannelMerger_2_9_1_1 ;
  x3do:hasChildren :ChannelSplitter-USE-1 ;
  x3do:id 'ChannelSelector0' .
:ChannelSplitter-USE-1 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :ChannelSelector_2_9_1_1_1 ;
  owl:sameAs :ChannelSplitter . # DEF matching this USE
:ChannelSelector_2_9_1_1_2 a owl:NamedIndividual, x3do:ChannelSelector ;
  x3do:hasParent :ChannelMerger_2_9_1_1 ;
  x3do:hasChildren :ChannelSplitter-USE-2 ;
  x3do:channelSelection 1 ;
  x3do:id 'ChannelSelector1' .
:ChannelSplitter-USE-2 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :ChannelSelector_2_9_1_1_2 ;
  owl:sameAs :ChannelSplitter . # DEF matching this USE
:ChannelSplitter a owl:NamedIndividual, x3do:ChannelSplitter ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :AudioClip_2_10_1 ;
  x3do:DEF 'ChannelSplitter' ;
  x3do:channelCountMode 'EXPLICIT' .
:AudioClip_2_10_1 a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :ChannelSplitter ;
  x3do:description 'Violin' ;
  x3do:enabled false ;
  x3do:url '"sound/violin.ogg" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/violin.ogg" "sound/violin.mp3" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/violin.mp3" "sound/violin.wav" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/violin.wav"' .
:Audio3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_11_1 ;
  x3do:DEF 'Audio3' ;
  x3do:rotation ( 1 0 0 -0.5 ) ;
  x3do:translation ( 0 100 0 ) .
:Shape_2_11_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Audio3 ;
  x3do:hasAppearance :audio_emit5 ;
  x3do:hasGeometry :Box_2_11_1_2 .
:audio_emit5 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_11_1 ;
  x3do:hasMaterial :Material_2_11_1_1_1 ;
  x3do:hasTexture :ImageTexture_2_11_1_1_2 ;
  x3do:DEF 'audio_emit5' .
:Material_2_11_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit5 ;
  x3do:diffuseColor ( 0.3 1 0.3 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:ImageTexture_2_11_1_1_2 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :audio_emit5 ;
  x3do:url '"images/loudspeaker.png" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/images/loudspeaker.png"' .
:Box_2_11_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_11_1 ;
  x3do:size ( 100 100 0.001 ) .
