-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
audioAll things related to audioAll things related to audioenhancementNew feature or requestNew feature or requestlambda-rsIssues pertaining to the core frameworkIssues pertaining to the core frameworklambda-rs-platformIssues pertaining to the dependency & platform wrappersIssues pertaining to the dependency & platform wrappers
Description
Overview
Add positional audio support where sounds have a position in 3D space and are
panned/attenuated based on listener position and orientation.
Current State
Requires audio mixer implementation. No spatial audio exists.
Scope
- Set sound position in 3D space
- Set listener position and orientation
- Distance-based volume attenuation
- Stereo panning based on direction
- Configurable attenuation model
Non-Goals:
- HRTF (head-related transfer function) - complex, deferred
- Doppler effect (separate issue)
- Occlusion/obstruction (separate issue)
- Reverb zones (separate issue)
Proposed API
pub struct AudioListener {
position: [f32; 3],
forward: [f32; 3],
up: [f32; 3],
}
pub struct SpatialSound {
position: [f32; 3],
min_distance: f32,
max_distance: f32,
// ...
}
impl SpatialSound {
pub fn set_position(&mut self, position: [f32; 3]);
pub fn set_min_distance(&mut self, distance: f32);
pub fn set_max_distance(&mut self, distance: f32);
}
impl AudioContext {
pub fn set_listener(&mut self, listener: AudioListener);
pub fn play_spatial(&mut self, buffer: &SoundBuffer) -> SpatialSound;
}Acceptance Criteria
- Sounds pan left/right based on listener orientation
- Sounds attenuate with distance
- Sounds beyond max_distance are silent
- Sounds within min_distance play at full volume
- Example with moving sound source
Affected Crates
lambda-rs, lambda-rs-platform
Notes
- Linear or inverse-square attenuation models
- Integrate with camera position for listener updates
Metadata
Metadata
Assignees
Labels
audioAll things related to audioAll things related to audioenhancementNew feature or requestNew feature or requestlambda-rsIssues pertaining to the core frameworkIssues pertaining to the core frameworklambda-rs-platformIssues pertaining to the dependency & platform wrappersIssues pertaining to the dependency & platform wrappers