X3DSoundNode : X3DChildNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DSoundSourceNode : X3DTimeDependentNode { 
  SFString [in,out] description      ""
  SFBool   [in,out] loop             FALSE
  SFNode   [in,out] metadata         NULL [X3DMetadataObject]
  SFTime   [in,out] pauseTime        0    (-Inf,Inf)
  SFFloat  [in,out] pitch            1.0  (0,Inf)
  SFTime   [in,out] resumeTime       0    (-Inf,Inf)
  SFTime   [in,out] startTime        0    (-Inf,Inf)
  SFTime   [in,out] stopTime         0    (-Inf,Inf)
  SFTime   [out]    duration_changed
  SFTime   [out]    elapsedTime
  SFBool   [out]    isActive
  SFBool   [out]    isPaused
}

AudioClip : X3DSoundSourceNode, X3DUrlObject {
  SFString [in,out] description      ""
  SFBool   [in,out] loop             FALSE
  SFNode   [in,out] metadata         NULL  [X3DMetadataObject]
  SFTime   [in,out] pauseTime        0     (-Inf,Inf)
  SFFloat  [in,out] pitch            1.0   (0,Inf)
  SFTime   [in,out] resumeTime       0     (-Inf,Inf)
  SFTime   [in,out] startTime        0     (-Inf,Inf)
  SFTime   [in,out] stopTime         0     (-Inf,Inf)
  MFString [in,out] url              []    [urn]
  SFTime   [out]    duration_changed
  SFTime   [out]    elapsedTime
  SFBool   [out]    isActive
  SFBool   [out]    isPaused
}

Sound : X3DSoundNode {
  SFVec3f [in,out] direction  0 0 1 (-Inf,Inf)
  SFFloat [in,out] intensity  1     [0,1]
  SFVec3f [in,out] location   0 0 0 (-Inf,Inf)
  SFFloat [in,out] maxBack    10    [0,Inf)
  SFFloat [in,out] maxFront   10    [0,Inf)
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
  SFFloat [in,out] minBack    1     [0,Inf)
  SFFloat [in,out] minFront   1     [0,Inf)
  SFFloat [in,out] priority   0     [0,1]
  SFNode  [in,out] source     NULL  [X3DSoundSourceNode]
  SFBool  []       spatialize TRUE
}
