Ardour/Synchronization/On-clock-and-time
更多操作
多媒体中的 synchronization 涉及两个常被混淆的概念:clock(速度)与 time(时间位置)。
Clock 决定一个或多个系统工作的速度。audio 领域通常称 Word Clock。它不携带任何绝对时间参考:clock 用于使系统 sample rate 保持规整与精确。Word Clock 频率通常等于 sample rate——48 kHz 时其周期约 20 μs。Word Clock 是最常见的基于 sample rate 的 clock,但其他 clock 也存在,如 Black and Burst、Tri-Level、DARS。Sample rates 也可从这些 clock 导出。
Time 或 timecode 指定 timeline 上的绝对位置,如 `01:02:03:04`(Hours:Mins:Secs:Frames 表示)。它是实际的*数据*,本身并非 clock*信号*。Timecode 的粒度是 Video Frames,比以 samples 计的 Word Clock 低一个数量级。典型 frame rate 为 25 fps,周期 40 ms。48 kHz 与 25 fps 情况下,每 video frame 有 1920 个 audio samples。
clock 与 timecode 概念反映在 JACK 与 Ardour 中:
JACK(Ardour 使用 ALSA backend 时内部如此)提供 clock synchronization,不关心 timecode(这并不完全准确,后文再谈 jack-transport)。软件层面,jackd 在所有 JACK 应用间提供 sample 精确的同步。硬件层面,JACK 与 Ardour 使用 audio-interface 的 clock;同步多个 interface 需要硬件支持同步 clock。若两个 interface 以不同 clock 运行,唯一对齐信号的方式是 resampling(SRC——Sample Rate Conversion),CPU 开销大且处理不当会降低保真度。
Timecode 用于将已由 clock 同步的系统对齐到共同的时间点,这是应用层的事,存在各种标准与方法。
令人困惑的是,可用 timecode 同步 clocks——例如使用 jam-sync 与 phase-locked loop 机制。值得注意的是,LTC(Linear Time Code)是 Manchester 编码、调制的信号,同时携带 clock 与 time,可从中提取绝对位置数据与速度。