Skip to main content

audio_lab/signal/
mod.rs

1//! Signal types, test signal generators, file I/O and playback.
2
3pub use ndarray;
4
5pub use blocks::{
6    BlockAdapterError, signal_from_block, signal_from_blocks, signal_to_block, signal_to_blocks,
7};
8pub use test_signal::impulse::{ImpulseConfig, ImpulseError, generate_impulse};
9pub use test_signal::noise::{NoiseConfig, NoiseError, Spectrum, generate_noise};
10pub use test_signal::pulsed_noise::{PulsedNoiseConfig, PulsedNoiseError, generate_pulsed_noise};
11pub use test_signal::sine::{SineConfig, generate_sine};
12pub use test_signal::sweep::{SweepConfig, SweepError, SweepType, generate_sweep};
13pub use types::{
14    FreqSignal, SignalError, Spectrogram, SpectrogramNormalization, TimeSignal, join_freq_signals,
15    join_time_signals, mix_freq_signals, mix_time_signals, utils,
16};
17
18#[macro_export]
19macro_rules! join_time {
20    ($($signal:expr),+ $(,)?) => {
21        $crate::signal::join_time_signals(&[$($signal),+])
22    };
23}
24
25#[macro_export]
26macro_rules! mix_time {
27    ($($signal:expr),+ $(,)?) => {
28        $crate::signal::mix_time_signals(&[$($signal),+])
29    };
30}
31
32#[macro_export]
33macro_rules! join_freq {
34    ($($signal:expr),+ $(,)?) => {
35        $crate::signal::join_freq_signals(&[$($signal),+])
36    };
37}
38
39#[macro_export]
40macro_rules! mix_freq {
41    ($($signal:expr),+ $(,)?) => {
42        $crate::signal::mix_freq_signals(&[$($signal),+])
43    };
44}
45
46// `#[macro_export]` puts the macros at the crate root, this keeps them available here too
47pub use crate::{join_freq, join_time, mix_freq, mix_time};
48
49mod blocks;
50pub mod data;
51pub mod fs;
52pub mod math;
53mod ops;
54#[cfg(feature = "playback")]
55pub mod playback;
56mod test_signal;
57mod types;