#![doc = include_str!("../README.md")]
#![allow(clippy::missing_errors_doc)]
mod delay;
mod event;
mod herd;
mod io;
mod master;
mod noise_builder;
mod overdrive;
mod point;
mod pulse_frequency;
mod pulse_oscillator;
mod result;
pub mod timing;
mod unit;
mod voice;
mod voice_data {
pub mod noise;
pub mod oggv;
pub mod pcm;
pub mod wave;
}
mod util {
mod array_len_ext;
pub use array_len_ext::ArrayLenExt;
}
pub use {
delay::{Delay, DelayUnit},
event::{DEFAULT_KEY, EveList, Event, EventPayload, Key},
herd::{
FmtInfo, FmtKind, FmtVer, Herd, MooInstructions, Song, Text, Units, Voices,
moo::{MooPlan, StartPosPlan, current_tick, do_event, moo_prepare},
read_song, rebuild_tones, serialize_project,
},
master::{LoopPoints, Master},
noise_builder::{NoiseDesignOscillator, NoiseTable, NoiseType, noise_to_pcm},
overdrive::Overdrive,
point::EnvPt,
pulse_oscillator::{OsciArgs, OsciPt},
pulse_oscillator::{coord, overtone},
result::{ProjectReadError, ReadResult},
timing::{Meas, SampleT, SamplesPerTick, Tick, Tick16, Timing},
unit::{GroupIdx, PanTime, PanTimeBuf, PanTimeOff, Unit, UnitIdx, VoiceIdx},
voice::{
EnvelopeSrc, Voice, VoiceData, VoiceFlags, VoiceInstance, VoiceSlot, VoiceTone, VoiceUnit,
},
voice_data::{
noise::{NoiseData, NoiseDesignUnit, NoiseDesignUnitFlags},
oggv::OggVData,
pcm::PcmData,
wave::{WaveData, WaveDataPoints},
},
};
#[derive(Default, Clone, Copy, PartialEq, Eq, Debug)]
pub enum ChNum {
#[default]
Mono = 1,
Stereo = 2,
}
#[derive(Clone, Copy, Default, PartialEq, Eq, Debug)]
#[repr(u8)]
pub enum Bps {
#[default]
B8 = 8,
B16 = 16,
}
pub type SampleRate = u16;
pub type SourceSampleRate = u32;
pub const NATIVE_SAMPLE_RATE: SampleRate = 44_100;
#[cfg(target_endian = "big")]
const _: () = panic!("Only little endian architectures are supported currently.");