1#![no_std]
2
3#[cfg(feature = "std")]
37extern crate std;
38
39pub mod bank;
40pub mod config;
41pub mod decode;
42pub mod engine;
43pub mod envelope;
44pub mod error;
45pub mod fixed;
46pub mod fx;
47pub mod hal;
48pub mod output;
49pub mod pluck;
50pub mod prelude;
51pub mod source;
52pub mod stream;
53pub mod synth;
54pub mod tier;
55pub mod voice;
56
57#[cfg(feature = "std")]
58pub mod encode;
59
60#[cfg(feature = "std")]
61pub mod preview;
62
63#[cfg(feature = "fm")]
64pub mod profile;
65
66#[cfg(feature = "dsp")]
67pub mod dsp;
68
69#[cfg(feature = "dsp")]
70pub mod drums;
71
72pub use bank::{BANK_BUILD_CAP, BANK_MAGIC, BANK_VERSION, BankBuilder, EffectEntry, SoundBank};
73pub use config::{
74 AudioConfig, DEFAULT_PWM_CARRIER_HZ, DEFAULT_PWM_PERIOD, DEFAULT_SAMPLE_RATE_HZ,
75 crossfade_step_q8,
76};
77pub use decode::{AdpcmDecoder, AdpcmStream, Pcm8Stream};
78pub use engine::{AudioEngine, VoiceStealingPolicy};
79pub use envelope::{Adsr, AdsrSpec};
80pub use error::AudioError;
81pub use fixed::{db_to_q8, q8_to_db};
82pub use fx::{Overdrive, Tremolo, Wavefolder};
83pub use hal::{
84 DmaDoubleBuffer, DutyBuffer, PwmDutySink, fill_buffer_into, fill_dma_half_buffers, tick_into,
85};
86pub use output::{
87 DutyMode, PwmMapper, SigmaDelta, SigmaDelta2ndOrder, pcm_to_dac_u8, pcm_to_dac_u12,
88 pcm_to_dac_u16, pcm_to_i16, pcm_to_i32,
89};
90pub use pluck::KarplusPluck;
91pub use source::VoiceSource;
92pub use stream::SigmaDeltaBitStream;
93pub use synth::{
94 FmVoice, PULSE_25_TABLE, SAW_TABLE, SINE_TABLE, SQUARE_TABLE, TRIANGLE_TABLE, ToneParams,
95 ToneVoice, Waveform, WavetableVoice, generate_wavetable_fixed,
96};
97pub use tier::{EffectKind, flags};
98
99#[cfg(feature = "std")]
100pub use preview::{render_effect_pcm, render_effect_wav};
101
102#[cfg(feature = "fm")]
103pub use output::{FmMapper, FmTick};
104
105#[cfg(feature = "fm")]
106pub use profile::markham;
107
108#[cfg(feature = "dsp")]
109pub use dsp::{
110 AudioLmsFilter, AudioMeter, AudioSpectrumAnalyzer, AudioStats, BiquadAudioFilter,
111 BiquadAudioFilterQ15, EnvelopeFollower, GoertzelDetector, WindowType,
112};
113
114#[cfg(feature = "dsp")]
115pub use drums::{AnalogBassDrum, AnalogSnareDrum, HiHat};