1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//! Audio (roadmap step 6, `docs/design.md#roadmap`; usage in `docs/audio.md`): one audio graph
//! rendered per timeline, not per shot, with no GPU.
//!
//! - [`sync`]: lines up timecode-less recorder WAVs (Zoom H2essential) with the camera clips'
//! scratch audio by cross-correlation, with drift, and writes them as audio clips.
//! - [`schema`]: `ffcine.audio.clean/1` (high-pass, wind, de-click, denoise, dialogue polish via
//! libavfilter), `ffcine.audio.level/1` (R128 levelling, gain, ducking, fades) and buses.
//! - [`mix`]: [`render_audio`] mixes the timeline's audio tracks into dialogue, music, ambience
//! and SFX buses (music ducked under dialogue), then a master at -14 LUFS under a 4x
//! oversampled true-peak limiter.
//!
//! ```no_run
//! use ffcine_audio::{MixOptions, render_audio};
//! use ffcine_timeline::Timeline;
//!
//! let tl = Timeline::from_file("edit.otio")?;
//! let mix = render_audio(&tl, &MixOptions::default())?;
//! mix.master.write_wav("mix.wav".as_ref())?;
//! # Ok::<(), ffcine_core::Error>(())
//! ```
// Sample maths converts between indices, times and gains everywhere; DSP reads best with short
// names (a, b, k, n, x, y).
pub use Beats;
pub use Audio;
pub use ;
pub use ;
pub use ;