1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//! Audio effects for spatial audio processing.
//!
//! This module provides various audio effects:
//!
//! # Effect Categories
//!
//! ## Point Source Spatialization
//! - [`BinauralEffect`] - Spatialize a point source using an HRTF
//! - [`PanningEffect`] - Pan a point source to a multi-channel speaker layout based on its 3D positon
//! - [`VirtualSurroundEffect`] - Render surround mixes binaurally over headphones using HRTF
//!
//! ## Environmental Effects
//! - [`DirectEffect`] - Distance attenuation, air absorption, occlusion, transmission
//! - [`ReflectionEffect`] - Room acoustics and reverb
//! - [`PathEffect`] - Sound propagation paths around obstacles
//!
//! ## Ambisonics Processing
//! - [`AmbisonicsEncodeEffect`] - Encode point sources to ambisonics
//! - [`AmbisonicsDecodeEffect`] - Decode ambisonics to speakers/headphones
//! - [`AmbisonicsPanningEffect`] - Decode ambisonics by panning to speakers
//! - [`AmbisonicsBinauralEffect`] - Decode Ambisonics using HRTF rendering
//! - [`AmbisonicsRotationEffect`] - Rotate Ambisonics to listener's orientation
//!
//! # Typical Usage
//!
//! ```
//! use audionimbus::*;
//!
//! let context = Context::default();
//! let audio_settings = AudioSettings::default();
//! let hrtf = Hrtf::try_new(&context, &audio_settings, &HrtfSettings::default())?;
//!
//! let mut effect = BinauralEffect::try_new(
//! &context,
//! &audio_settings,
//! &BinauralEffectSettings { hrtf: &hrtf },
//! )?;
//!
//! let params = BinauralEffectParams {
//! direction: Direction::new(1.0, 0.0, 0.0), // Sound from the right
//! interpolation: HrtfInterpolation::Nearest,
//! spatial_blend: 1.0,
//! hrtf: &hrtf,
//! peak_delays: None,
//! };
//!
//! let input_buffer = AudioBuffer::try_with_data([1.0; 1024])?;
//! let mut output_container = vec![0.0; 2 * input_buffer.num_samples() as usize];
//! let mut output_buffer = AudioBuffer::try_with_data_and_settings(
//! &mut output_container,
//! AudioBufferSettings::with_num_channels(2),
//! )?;
//!
//! let _ = effect.apply(¶ms, &input_buffer, &mut output_buffer);
//! # Ok::<(), Box<dyn std::error::Error>>(())
//! ```
pub use *;
pub use *;
pub use *;
pub use ;
pub use *;
pub use *;
pub use *;
pub use *;
pub use Equalizer;
pub use AudioEffectState;