@prefix :        <https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/Filters.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 'Filters.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'This X3D scene involves three sound sources. Each of them is visualized by a 3D object (in our case is a sphere) that depicts the sound effects. Specifically, we have added filters through of them we are able to manage the different sound effects in an impressive way. Filters can be composed of a number of attributes, frequency, detune, gain and the quality factor which also known as Q. Furthermore, the filters are classified in some specific types, depending on the sound effects that produce. In detail, there is the Low-pass filter which can create more muffled sound. Another one is the High-pass filter, which is used to generate tinny sound. Equally important is the Band-pass filter, which cuts off low and high frequencies and passes through only these within a certain range. On the contrary, the Notch filter has exactly the opposite operation of the Band-pass filter. Then is the Low-shelf filter, its role is to change the amount of bass in a sound, as a result the frequencies that are lower than the current frequency get a boost, while them that are over it remain unchanged. Next, the High-shelf filter is responsible for the quantity of treble in a sound. Moreover, Peaking filter is used in order to handle the amount of midrange in a sound. Lastly, there is the All-pass filter, whose role is to introduce phaser effects.' ;
  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 'https://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/SpatialSoundFilter.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/Filters.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 "Filters.x3d" .
:meta dcterms:description "This X3D scene involves three sound sources. Each of them is visualized by a 3D object (in our case is a sphere) that depicts the sound effects. Specifically, we have added filters through of them we are able to manage the different sound effects in an impressive way. Filters can be composed of a number of attributes, frequency, detune, gain and the quality factor which also known as Q. Furthermore, the filters are classified in some specific types, depending on the sound effects that produce. In detail, there is the Low-pass filter which can create more muffled sound. Another one is the High-pass filter, which is used to generate tinny sound. Equally important is the Band-pass filter, which cuts off low and high frequencies and passes through only these within a certain range. On the contrary, the Notch filter has exactly the opposite operation of the Band-pass filter. Then is the Low-shelf filter, its role is to change the amount of bass in a sound, as a result the frequencies that are lower than the current frequency get a boost, while them that are over it remain unchanged. Next, the High-shelf filter is responsible for the quantity of treble in a sound. Moreover, Peaking filter is used in order to handle the amount of midrange in a sound. Lastly, there is the All-pass filter, whose role is to introduce phaser effects." .
: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 "https://www.medialab.hmu.gr/minipages/x3domAudio" .
:meta dcterms:reference "https://medialab.hmu.gr/minipages/x3domAudio/SpatialSoundFilter.xhtml" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/Filters.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, :TransformAudio1, :TransformAudio2, :TransformAudio3, :AnimData, :AnimDataBoxH, :AnimDataBoxM, :AnimDataBoxL, :AnimDataBoxMM, :AnimDataBoxLM, :Transform_2_14, :ListenerPointSource_2_15, :StreamAudioDestination_2_16 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'Filters.x3d' .
:NavigationInfo_2_2 a owl:NamedIndividual, x3do:NavigationInfo ;
  x3do:hasParent :Scene ;
  x3do:id 'NAV' .
:Background_2_3 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:skyColor ( 0.200 0.200 0.200 ) .
:Viewpoint_2_4 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'View entire audio model' ;
  x3do:orientation ( 1 0 0 -0.5 ) ;
  x3do:position ( 0.0 500.0 600.0 ) ;
  x3do:retainUserOffsets true .
:TransformAudio1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_5_1 ;
  x3do:DEF 'TransformAudio1' ;
  x3do:translation ( -200 50 0 ) .
:Shape_2_5_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TransformAudio1 ;
  x3do:hasAppearance :audio_emit ;
  x3do:hasGeometry :Sphere_2_5_1_2 .
:audio_emit a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_5_1 ;
  x3do:hasMaterial :Material_2_5_1_1_1 ;
  x3do:DEF 'audio_emit' .
:Material_2_5_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit ;
  x3do:diffuseColor ( 0.1 0.1 0.1 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:Sphere_2_5_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_5_1 ;
  x3do:radius 30 .
:TransformAudio2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_6_1 ;
  x3do:DEF 'TransformAudio2' ;
  x3do:translation ( 0 50 0 ) .
:Shape_2_6_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TransformAudio2 ;
  x3do:hasAppearance :audio_emit2 ;
  x3do:hasGeometry :Sphere_2_6_1_2 .
:audio_emit2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1 ;
  x3do:hasMaterial :Material_2_6_1_1_1 ;
  x3do:DEF 'audio_emit2' .
:Material_2_6_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit2 ;
  x3do:diffuseColor ( 0.1 0.1 0.1 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:Sphere_2_6_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_6_1 ;
  x3do:radius 30 .
:TransformAudio3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_7_1 ;
  x3do:DEF 'TransformAudio3' ;
  x3do:translation ( 200 50 0 ) .
:Shape_2_7_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TransformAudio3 ;
  x3do:hasAppearance :audio_emit3 ;
  x3do:hasGeometry :Sphere_2_7_1_2 .
:audio_emit3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1 ;
  x3do:hasMaterial :Material_2_7_1_1_1 ;
  x3do:DEF 'audio_emit3' .
:Material_2_7_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :audio_emit3 ;
  x3do:diffuseColor ( 0.1 0.1 0.1 ) ;
  x3do:emissiveColor ( 0.8 0.8 0.8 ) ;
  x3do:specularColor ( 0.01 0.01 0.01 ) .
:Sphere_2_7_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_7_1 ;
  x3do:radius 30 .
:AnimData a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:DEF 'AnimData' ;
  x3do:id 'AnimDataPoint' ;
  x3do:translation ( 0 50 0 ) .
:AnimDataBoxH a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:DEF 'AnimDataBoxH' ;
  x3do:translation ( 0 100 0 ) .
:AnimDataBoxM a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:DEF 'AnimDataBoxM' ;
  x3do:translation ( 15 100 0 ) .
:AnimDataBoxL a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:DEF 'AnimDataBoxL' ;
  x3do:translation ( 30 100 0 ) .
:AnimDataBoxMM a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:DEF 'AnimDataBoxMM' ;
  x3do:id 'AnimDataBoxMMirror' ;
  x3do:translation ( -15 100 0 ) .
:AnimDataBoxLM a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:DEF 'AnimDataBoxLM' ;
  x3do:id 'AnimDataBoxLMirror' ;
  x3do:translation ( -30 100 0 ) .
:Transform_2_14 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_14_1 .
:Shape_2_14_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_14 ;
  x3do:hasAppearance :floor ;
  x3do:hasGeometry :Cylinder_2_14_1_2 .
:floor a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_14_1 ;
  x3do:hasMaterial :Material_2_14_1_1_1 ;
  x3do:DEF 'floor' .
:Material_2_14_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 ) .
:Cylinder_2_14_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_14_1 ;
  x3do:radius 500 .
:ListenerPointSource_2_15 a owl:NamedIndividual, x3do:ListenerPointSource ;
  x3do:hasParent :Scene ;
  x3do:id 'ListenerPointSource' ;
  x3do:trackCurrentView true .
:StreamAudioDestination_2_16 a owl:NamedIndividual, x3do:StreamAudioDestination ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :DynamicsCompressor_2_16_1 ;
  x3do:id 'AudioDestination' .
:DynamicsCompressor_2_16_1 a owl:NamedIndividual, x3do:DynamicsCompressor ;
  x3do:hasParent :StreamAudioDestination_2_16 ;
  x3do:hasChildren :Gain_2_16_1_1 ;
  x3do:id 'DynamicsCompressor' .
:Gain_2_16_1_1 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :DynamicsCompressor_2_16_1 ;
  x3do:hasChildren :Audio1, :Audio2, :Audio3 ;
  x3do:id 'Gain4' .
:Audio1 a owl:NamedIndividual, x3do:SpatialSound ;
  x3do:hasParent :Gain_2_16_1_1 ;
  x3do:hasChildren :Gain_2_16_1_1_1_1 ;
  x3do:DEF 'Audio1' .
:Gain_2_16_1_1_1_1 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :Audio1 ;
  x3do:hasChildren :Analyser_2_16_1_1_1_1_1 ;
  x3do:id 'Gain1' .
:Analyser_2_16_1_1_1_1_1 a owl:NamedIndividual, x3do:Analyser ;
  x3do:hasParent :Gain_2_16_1_1_1_1 ;
  x3do:hasChildren :BiquadFilter_2_16_1_1_1_1_1_1 ;
  x3do:id 'Analyser1' .
:BiquadFilter_2_16_1_1_1_1_1_1 a owl:NamedIndividual, x3do:BiquadFilter ;
  x3do:hasParent :Analyser_2_16_1_1_1_1_1 ;
  x3do:hasChildren :AudioClip_2_16_1_1_1_1_1_1_1 ;
  x3do:detune 50.0 ;
  x3do:frequency 600 ;
  x3do:id 'BiquadFilter1' ;
  x3do:qualityFactor 30.0 ;
  x3do:type 'ALLPASS' .
:AudioClip_2_16_1_1_1_1_1_1_1 a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :BiquadFilter_2_16_1_1_1_1_1_1 ;
  x3do:description 'Techno beat' ;
  x3do:enabled false ;
  x3do:id 'AudioClip1' ;
  x3do:loop true ;
  x3do:url '"sound/techno_beat.mp3" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/techno_beat.mp3" "sound/techno_beat.wav" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/techno_beat.wav"' .
:Audio2 a owl:NamedIndividual, x3do:SpatialSound ;
  x3do:hasParent :Gain_2_16_1_1 ;
  x3do:hasChildren :Gain_2_16_1_1_2_1 ;
  x3do:DEF 'Audio2' .
:Gain_2_16_1_1_2_1 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :Audio2 ;
  x3do:hasChildren :Analyser_2_16_1_1_2_1_1 ;
  x3do:id 'Gain2' .
:Analyser_2_16_1_1_2_1_1 a owl:NamedIndividual, x3do:Analyser ;
  x3do:hasParent :Gain_2_16_1_1_2_1 ;
  x3do:hasChildren :BiquadFilter_2_16_1_1_2_1_1_1 ;
  x3do:id 'Analyser2' .
:BiquadFilter_2_16_1_1_2_1_1_1 a owl:NamedIndividual, x3do:BiquadFilter ;
  x3do:hasParent :Analyser_2_16_1_1_2_1_1 ;
  x3do:hasChildren :AudioClip_2_16_1_1_2_1_1_1_1 ;
  x3do:detune 15.0 ;
  x3do:frequency 600 ;
  x3do:id 'BiquadFilter2' ;
  x3do:qualityFactor 15.0 ;
  x3do:type 'ALLPASS' .
:AudioClip_2_16_1_1_2_1_1_1_1 a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :BiquadFilter_2_16_1_1_2_1_1_1 ;
  x3do:description 'Simple beat' ;
  x3do:id 'AudioClip2' ;
  x3do:loop true ;
  x3do:url '"sound/beat.mp3" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/beat.mp3"' .
:Audio3 a owl:NamedIndividual, x3do:SpatialSound ;
  x3do:hasParent :Gain_2_16_1_1 ;
  x3do:hasChildren :Gain_2_16_1_1_3_1 ;
  x3do:DEF 'Audio3' .
:Gain_2_16_1_1_3_1 a owl:NamedIndividual, x3do:Gain ;
  x3do:hasParent :Audio3 ;
  x3do:hasChildren :Analyser_2_16_1_1_3_1_1 ;
  x3do:id 'Gain3' .
:Analyser_2_16_1_1_3_1_1 a owl:NamedIndividual, x3do:Analyser ;
  x3do:hasParent :Gain_2_16_1_1_3_1 ;
  x3do:hasChildren :BiquadFilter_2_16_1_1_3_1_1_1 ;
  x3do:id 'Analyser3' .
:BiquadFilter_2_16_1_1_3_1_1_1 a owl:NamedIndividual, x3do:BiquadFilter ;
  x3do:hasParent :Analyser_2_16_1_1_3_1_1 ;
  x3do:hasChildren :AudioClip_2_16_1_1_3_1_1_1_1 ;
  x3do:frequency 1000 ;
  x3do:id 'BiquadFilter3' ;
  x3do:qualityFactor 0 ;
  x3do:type 'ALLPASS' .
:AudioClip_2_16_1_1_3_1_1_1_1 a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :BiquadFilter_2_16_1_1_3_1_1_1 ;
  x3do:description 'Wobble loop' ;
  x3do:id 'AudioClip3' ;
  x3do:loop true ;
  x3do:url '"sound/wobble_loop.mp3" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AudioSpatialSound/sound/wobble_loop.mp3"' .
