//! Sample Forge: the "maker" middle of audiofiles. //! //! AF already owns the two hard halves of a DAWless rig — the content-addressed //! store and the 14-sampler hardware export. The forge is the missing middle: //! take a managed sample and *make* hardware-ready material from it. //! //! - [`chop`] — slice a sample into one-shots by transient, equal divisions, or a //! BPM grid. //! - [`conform`] — resample / convert bit depth + channels to match a device's //! accepted format (M8, Digitakt, SP-404, ...). //! - [`batch`] — silence detection for batch trim-silence (batch normalize reuses //! the existing edit operations). //! //! The DSP here is pure and operates on interleaved `Vec`, mirroring the //! [`crate::edit`] convention. Snapshots are free: the content-addressed store //! never deletes originals, so every forge action produces new samples without //! risking the source. pub mod batch; pub mod chop; pub mod conform; pub mod runner; pub use batch::{find_content_bounds, trim_silence}; pub use chop::{compute_slices, detect_bpm, render_slice, ChopMethod, Slice}; pub use conform::{ conform, peak_amplitude, resolve_overshoot, ConformTarget, ConformedAudio, OvershootAction, OvershootReport, }; pub use runner::{chop_to_vfs, conform_to_vfs, ChopResult, ConformResult};