SUPERB

A DAW engine, in one crate.

Sessions, tracks, clips and a mixer, rendered with no device and no interface.

$ cargo add superb
use superb::primitives::buffers::PlanarBuffer;
use superb::primitives::session::TrackKind;
use superb::primitives::{SampleRate, TimePosition};
use superb::{clip, session, track, transport};

let mut session = session::create("demo.superb", SampleRate::HZ_48K, 256)?;
let lead = track::add(&mut session, "lead", TrackKind::Audio)?;

let mut tone = PlanarBuffer::new(2, 48_000);
tone.fill(0.25);
session.audio.insert("tone.wav", tone);
clip::add(&mut session, lead, "tone.wav", TimePosition::ZERO)?;
track::volume(&mut session, lead, -6.0)?;

transport::start(&mut session)?;
let audio = session::steps::render_blocks(&mut session, 8)?;

> peak > 0.1
  8 blocks, no sound card