1#![cfg_attr(not(feature = "std"), no_std)]
58#![cfg_attr(docsrs, feature(doc_cfg))]
64
65extern crate alloc;
66
67#[cfg(feature = "std")]
69pub(crate) type StdMap<K, V> = std::collections::HashMap<K, V>;
70#[cfg(not(feature = "std"))]
71pub(crate) type StdMap<K, V> = alloc::collections::BTreeMap<K, V>;
72
73pub mod analog;
74pub mod combinator;
75pub mod graph;
76pub mod modules;
77pub mod polyphony;
78pub mod port;
79pub mod rng;
80pub mod simd;
81
82#[cfg(feature = "alloc")]
84#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
85pub mod introspection;
86#[cfg(feature = "alloc")]
87mod introspection_impls; #[cfg(feature = "alloc")]
89#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
90pub mod io;
91#[cfg(feature = "alloc")]
92#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
93pub mod observer;
94#[cfg(feature = "alloc")]
95#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
96pub mod presets;
97#[cfg(feature = "alloc")]
98#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
99pub mod scala;
100#[cfg(feature = "alloc")]
101#[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
102pub mod serialize;
103
104#[cfg(feature = "std")]
106#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
107pub mod render;
108
109#[cfg(feature = "std")]
111#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
112pub mod extended_io;
113#[cfg(feature = "std")]
114#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
115pub mod mdk;
116#[cfg(feature = "std")]
117#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
118pub mod visual;
119
120#[cfg(feature = "wasm")]
122#[cfg_attr(docsrs, doc(cfg(feature = "wasm")))]
123pub mod wasm;
124
125pub mod prelude {
127 pub use crate::combinator::{
129 Chain, Constant, Contramap, Fanout, Feedback, First, Identity, Map, Merge, Module,
130 ModuleExt, Parallel, Second, Split, Swap,
131 };
132
133 pub use crate::port::{
135 ports_compatible, BlockPortValues, Compatibility, GraphModule, ModulatedParam, ParamDef,
136 ParamId, ParamRange, PortDef, PortId, PortInfo, PortSpec, PortValues, SignalColors,
137 SignalKind,
138 };
139
140 pub use crate::graph::{
142 Cable, CableId, CompatibilityResult, NodeHandle, NodeId, Patch, PatchError, PatchMeta,
143 PortRef, ValidationMode,
144 };
145
146 pub use crate::modules::{
148 Adsr, Attenuverter, Clock, Lfo, Mixer, Multiple, NoiseGenerator, Offset, Quantizer,
149 SampleAndHold, Scale, SlewLimiter, StepSequencer, StereoOutput, Svf, UnitDelay, Vca, Vco,
150 };
151
152 pub use crate::modules::{
154 BernoulliGate, Comparator, Crossfader, LogicAnd, LogicNot, LogicOr, LogicXor, Max, Min,
155 PrecisionAdder, Rectifier, RingModulator, VcSwitch,
156 };
157
158 pub use crate::modules::{Crosstalk, DiodeLadderFilter, GroundLoop};
160
161 pub use crate::modules::{
163 ArpPattern, Arpeggiator, ChordMemory, ChordType, FormantOsc, Granular, ParametricEq,
164 PitchShifter, Reverb, Vocoder, Wavetable, WavetableType,
165 };
166
167 pub use crate::modules::{
171 Ducker, MidSideDecode, MidSideEncode, Oversample, Oversampler, SamplePlayer, Wavefolder,
172 };
173
174 pub use crate::analog::{noise, saturation, AnalogVco, ComponentModel, ThermalModel};
176
177 pub use crate::analog::{HighFrequencyRolloff, VoctTrackingModel};
179
180 pub use crate::polyphony::{
182 AllocationMode, PolyPatch, UnisonConfig, Voice, VoiceAllocator, VoiceControl, VoiceInput,
183 VoiceMixer, VoiceState,
184 };
185
186 pub use crate::simd::{
188 AudioBlock, BlockProcessor, LazyBlock, LazySignal, ProcessContext, RingBuffer, StereoBlock,
189 DEFAULT_BLOCK_SIZE, SIMD_BLOCK_SIZE,
190 };
191
192 pub use crate::rng::{Rng, SeedableRng};
194
195 #[cfg(feature = "alloc")]
201 #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
202 pub use crate::io::{AtomicF64, ExternalInput, ExternalOutput, MidiState};
203
204 #[cfg(feature = "alloc")]
206 #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
207 pub use crate::introspection::{
208 ControlType, ModuleIntrospection, ParamCurve, ParamInfo, ValueFormat,
209 };
210
211 #[cfg(feature = "alloc")]
213 #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
214 pub use crate::observer::{
215 calculate_peak_db, calculate_rms_db, GateDetector, LevelMeterState, ObservableValue,
216 ObserverConfig, StateObserver, SubscriptionTarget,
217 };
218
219 #[cfg(feature = "alloc")]
221 #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
222 pub use crate::serialize::{
223 CableDef, CatalogResponse, ModuleCatalogEntry, ModuleDef, ModuleMetadata, ModuleRegistry,
224 PatchDef, PortSummary, ValidationError, ValidationResult, CURRENT_PATCH_VERSION,
225 };
226
227 #[cfg(feature = "alloc")]
229 #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
230 pub use crate::presets::{
231 ClassicPresets, PresetCategory, PresetInfo, PresetLibrary, SoundDesignPresets,
232 TutorialPresets,
233 };
234
235 #[cfg(feature = "alloc")]
237 #[cfg_attr(docsrs, doc(cfg(feature = "alloc")))]
238 pub use crate::scala::{ScalaError, ScalaScale};
239
240 #[cfg(feature = "std")]
246 #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
247 pub use crate::extended_io::{
248 AudioBusConfig, OscBinding, OscInput, OscMessage, OscPattern, OscReceiver, OscValue,
249 PluginCategory, PluginInfo, PluginParameter, PluginWrapper, WebAudioConfig,
250 WebAudioProcessor, WebAudioWorklet,
251 };
252
253 #[cfg(feature = "std")]
255 #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
256 pub use crate::mdk::{
257 AudioAnalysis, DocFormat, DocGenerator, ModuleCategory, ModulePresets, ModuleTemplate,
258 ModuleTestHarness, PortTemplate, StateFieldTemplate, TestResult, TestSuiteResult,
259 };
260
261 #[cfg(feature = "std")]
263 #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
264 pub use crate::visual::{
265 AutomationData, AutomationPoint, AutomationRecorder, AutomationTrack, DotExporter,
266 DotStyle, LevelMeter, Scope, SpectrumAnalyzer, TriggerMode,
267 };
268
269 #[cfg(feature = "std")]
271 #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
272 pub use crate::render::{render, render_to_wav};
273
274 #[cfg(feature = "wasm")]
276 #[cfg_attr(docsrs, doc(cfg(feature = "wasm")))]
277 pub use crate::wasm::{QuiverEngine, QuiverError};
278}
279
280pub use prelude::*;