3D Audio
Learn how to use positional audio features
Overview
3D audio allows you to position sounds in 3D space, creating immersive audio experiences. The coordinate system is right-handed:
          Y
          ^
          |
          |
          |
          --------> X
         /
        /
       Z
Basic 3D Playback
Play a sound with 3D positioning:
final handle = await SoLoud.instance.play3d(
  sound,
  posX: 10.0,
  posY: 0.0,
  posZ: 5.0,
  velX: 0.0, // optional velocity
  velY: 0.0,
  velZ: 0.0,
);
Listener Control
Configure the audio listener (usually your game's camera or player):
// Set listener position
SoLoud.instance.set3dListenerPosition(0, 0, 0);
// Set listener orientation
SoLoud.instance.set3dListenerAt(0, 0, 1);  // looking forward
SoLoud.instance.set3dListenerUp(0, 1, 0);   // up vector
// Set listener velocity (for doppler effect)
SoLoud.instance.set3dListenerVelocity(0, 0, 0);
// Or set all parameters at once
SoLoud.instance.set3dListenerParameters(
  posX: 0, posY: 0, posZ: 0,     // position
  atX: 0, atY: 0, atZ: 1,        // looking direction
  upX: 0, upY: 1, upZ: 0,        // up vector
  velX: 0, velY: 0, velZ: 0,     // velocity
);
Sound Source Control
Control individual 3D sound sources:
// Update sound position
SoLoud.instance.set3dSourcePosition(handle, x, y, z);
// Set sound velocity
SoLoud.instance.set3dSourceVelocity(handle, velX, velY, velZ);
// Set both at once
SoLoud.instance.set3dSourceParameters(
  handle,
  posX, posY, posZ,
  velX, velY, velZ,
);
Distance Attenuation
Configure how sounds fade with distance:
// Set minimum and maximum distances
SoLoud.instance.set3dSourceMinMaxDistance(
  handle,
  1.0,     // minimum distance
  1000.0,  // maximum distance
);
// Set attenuation model
SoLoud.instance.set3dSourceAttenuation(
  handle,
  2,    // LINEAR_DISTANCE model
  1.0,  // rolloff factor
);
Available attenuation models:
- 0: NO_ATTENUATION - No distance attenuation
- 1: INVERSE_DISTANCE - 1/distance attenuation
- 2: LINEAR_DISTANCE - Linear distance attenuation
- 3: EXPONENTIAL_DISTANCE - Exponential distance attenuation
Doppler Effect
Control the doppler effect strength:
// Set doppler factor (0 = disable, 1 = normal, >1 = exaggerated)
SoLoud.instance.set3dSourceDopplerFactor(handle, 1.0);
// Set speed of sound (affects doppler calculations)
SoLoud.instance.set3dSoundSpeed(343.0); // meters/second
Best Practices
- Keep coordinate scales consistent throughout your application
- Update listener and source positions every frame if moving
- Use appropriate attenuation models for your game/app scale
- Consider performance when using many 3D sound sources
- Set appropriate minimum/maximum distances for your scale
- Use doppler effects sparingly for better performance