#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(docsrs, feature(doc_cfg))]
extern crate alloc;
#[cfg(feature = "std")]
pub(crate) type StdMap<K, V> = std::collections::HashMap<K, V>;
#[cfg(not(feature = "std"))]
pub(crate) type StdMap<K, V> = alloc::collections::BTreeMap<K, V>;
pub mod analog;
pub mod combinator;
pub mod graph;
pub mod modules;
pub mod polyphony;
pub mod port;
pub mod rng;
pub mod simd;
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod introspection;
#[cfg(feature = "alloc")]
mod introspection_impls; #[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod io;
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod observer;
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod presets;
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod scala;
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub mod serialize;
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub mod render;
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub mod extended_io;
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub mod mdk;
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub mod visual;
#[cfg(feature = "wasm")]
#[cfg_attr(docsrs, doc(cfg(feature = "wasm")))]
pub mod wasm;
pub mod prelude {
pub use crate::combinator::{
Chain, Constant, Contramap, Fanout, Feedback, First, Identity, Map, Merge, Module,
ModuleExt, Parallel, Second, Split, Swap,
};
pub use crate::port::{
ports_compatible, BlockPortValues, Compatibility, GraphModule, ModulatedParam, ParamDef,
ParamId, ParamRange, PortDef, PortId, PortInfo, PortSpec, PortValues, SignalColors,
SignalKind,
};
pub use crate::graph::{
Cable, CableId, CompatibilityResult, NodeHandle, NodeId, Patch, PatchError, PatchMeta,
PortRef, ValidationMode,
};
pub use crate::modules::{
Adsr, Attenuverter, Clock, Lfo, Mixer, Multiple, NoiseGenerator, Offset, Quantizer,
SampleAndHold, Scale, SlewLimiter, StepSequencer, StereoOutput, Svf, UnitDelay, Vca, Vco,
};
pub use crate::modules::{
BernoulliGate, Comparator, Crossfader, LogicAnd, LogicNot, LogicOr, LogicXor, Max, Min,
PrecisionAdder, Rectifier, RingModulator, VcSwitch,
};
pub use crate::modules::{Crosstalk, DiodeLadderFilter, GroundLoop};
pub use crate::modules::{
ArpPattern, Arpeggiator, ChordMemory, ChordType, FormantOsc, Granular, ParametricEq,
PitchShifter, Reverb, Vocoder, Wavetable, WavetableType,
};
pub use crate::modules::{
Ducker, MidSideDecode, MidSideEncode, Oversample, Oversampler, SamplePlayer, Wavefolder,
};
pub use crate::analog::{noise, saturation, AnalogVco, ComponentModel, ThermalModel};
pub use crate::analog::{HighFrequencyRolloff, VoctTrackingModel};
pub use crate::polyphony::{
AllocationMode, PolyPatch, UnisonConfig, Voice, VoiceAllocator, VoiceControl, VoiceInput,
VoiceMixer, VoiceState,
};
pub use crate::simd::{
AudioBlock, BlockProcessor, LazyBlock, LazySignal, ProcessContext, RingBuffer, StereoBlock,
DEFAULT_BLOCK_SIZE, SIMD_BLOCK_SIZE,
};
pub use crate::rng::{Rng, SeedableRng};
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub use crate::io::{AtomicF64, ExternalInput, ExternalOutput, MidiState};
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub use crate::introspection::{
ControlType, ModuleIntrospection, ParamCurve, ParamInfo, ValueFormat,
};
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub use crate::observer::{
calculate_peak_db, calculate_rms_db, GateDetector, LevelMeterState, ObservableValue,
ObserverConfig, StateObserver, SubscriptionTarget,
};
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub use crate::serialize::{
CableDef, CatalogResponse, ModuleCatalogEntry, ModuleDef, ModuleMetadata, ModuleRegistry,
PatchDef, PortSummary, ValidationError, ValidationResult, CURRENT_PATCH_VERSION,
};
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub use crate::presets::{
ClassicPresets, PresetCategory, PresetInfo, PresetLibrary, SoundDesignPresets,
TutorialPresets,
};
#[cfg(feature = "alloc")]
#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
pub use crate::scala::{ScalaError, ScalaScale};
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use crate::extended_io::{
AudioBusConfig, OscBinding, OscInput, OscMessage, OscPattern, OscReceiver, OscValue,
PluginCategory, PluginInfo, PluginParameter, PluginWrapper, WebAudioConfig,
WebAudioProcessor, WebAudioWorklet,
};
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use crate::mdk::{
AudioAnalysis, DocFormat, DocGenerator, ModuleCategory, ModulePresets, ModuleTemplate,
ModuleTestHarness, PortTemplate, StateFieldTemplate, TestResult, TestSuiteResult,
};
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use crate::visual::{
AutomationData, AutomationPoint, AutomationRecorder, AutomationTrack, DotExporter,
DotStyle, LevelMeter, Scope, SpectrumAnalyzer, TriggerMode,
};
#[cfg(feature = "std")]
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use crate::render::{render, render_to_wav};
#[cfg(feature = "wasm")]
#[cfg_attr(docsrs, doc(cfg(feature = "wasm")))]
pub use crate::wasm::{QuiverEngine, QuiverError};
}
pub use prelude::*;