mod audio;
mod dispatcher;
mod link;
pub mod realtime;
pub mod sequencer;
mod timing;

pub use timing::{substeps_in_window, StepTiming, SyncTime};

// Used by plugin and desktop crates via the lib; not by the terminal binary directly.
#[allow(unused_imports)]
pub use audio::{
    preload_sample_heads, spawn_analysis_thread, AnalysisHandle, ScopeBuffer, SpectrumBuffer,
};

#[cfg(feature = "cli")]
#[allow(unused_imports)]
pub use audio::{build_stream, AudioStreamConfig, AudioStreamInfo};

pub use link::LinkState;
#[allow(unused_imports)]
pub use sequencer::{
    parse_midi_command, spawn_sequencer, AudioCommand, MidiCommand, PatternChange, PatternSnapshot,
    SeqCommand, SequencerConfig, SequencerHandle, SequencerSnapshot, SequencerState,
    SharedSequencerState, StepSnapshot, TickInput, TickOutput, TimestampedCommand,
};
