Skip to main content

secs_project/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(unsafe_op_in_unsafe_fn)]
3//! SECS 2 compatible `.secs` project files and `.irs` WAV storage.
4
5mod calibration;
6mod config;
7mod dsp_profile;
8mod error;
9mod irs;
10mod plan;
11mod project;
12pub mod pyjson;
13mod record;
14mod signature;
15mod target;
16
17pub use calibration::{calibration_from_project, store_calibration};
18pub use config::{Band, Speaker, SpeakerConfig, default_bands, ordered_speakers};
19pub use dsp_profile::DspProfile;
20pub use error::ProjectError;
21pub use irs::{
22    MAX_IR_BYTES, ir_directory, ir_file, load_ir, read_mono_float_wav, read_wav_float32, save_ir,
23    try_write_wav_float32, write_wav_float32,
24};
25pub use plan::{
26    MeasurementPlan, PlanValidationError, SWEEP_LENGTHS, TimingReference, default_ref_role,
27    measurement_roles, plan_from_project, position_seconds, split_role, start_delay_seconds,
28    sweep_length_samples, sweep_seconds, timing_settings,
29};
30pub use project::{
31    FOCUS_STEPS, PROJECT_VERSION, Project, migrate_calibration_keys, migrate_group_keys,
32    rename_keys, snap_focus,
33};
34pub use pyjson::{PyJson, PyJsonError, dumps, dumps_compact, loads};
35pub use record::{
36    AttachedCalibration, IR_CACHE_LIMIT_BYTES, IrCache, LoadedIr, MAX_PROJECT_BYTES,
37    MeasurementRecord, MeasurementResult, MeasurementStore, MigrationWarning, RemovedPosition,
38    attached_calibration, calibration_fingerprint, load_project_irs, load_project_sources,
39    load_source, save_source, source_path,
40};
41pub use signature::{
42    FloatKey, MeasurementSignatureEntry, estimate_seconds, estimate_subs_seconds,
43    estimate_xo_seconds, estimate_xo_seconds_on, measured_positions, measurement_signature,
44    project_spl_offset, target_key,
45};
46pub use target::{TargetCurve, TargetJson};