Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions quest/m0/pin-bus-stretch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# [S] A broadcast source's sound glides onto a moved delay

## Goal

The `moq` submodule includes moq-audio's stretching `Positioned` channel, from
[The bus stretches positioned audio onto its clock](https://github.com/moq-dev/moq/blob/main/quest/m1/audio-jitter-target/bus-stretch.md),
and a broadcast source's playout (`rs/moq-scene/src/playout.rs`) writes
through it with a stretch bound, so its sound glides onto a moved playout
delay as `moq play`'s does. A step of the jitter target no longer writes
silence into the program's sound or skips it. `README.md`'s broadcast-source
paragraph says how a delay change sounds.

## Plan

Decided 2026-11-12 (maintainer, /quest-plan), after
[moq-dev/studio#144](https://github.com/moq-dev/studio/pull/144) kept a
target step's gap or skip (its follow-up): moq-audio's bus stretches, since
audio mixing is moq's (`AGENTS.md`'s Upstream), and this quest pins it. ✅ m0,
beside the other pins (rejected: m2).

Advance with `just upgrade-moq` in its own PR, fixing whatever the new API
breaks here. Playout's `Writer` (`rs/moq-scene/src/playout.rs`) changes with
it: today it cuts the part of a frame overlapping the last one and lets a
later position leave a gap, so a step down would still skip audio. With a
bound it writes each frame after the last and hands the channel the position
it is due at, for the channel to converge on. Take the bound `moq play` defaults to (2 s, its `--stretch`)
unless a measurement here argues for another, and say which in the PR.

## Waiting

- moq-dev/moq: the upstream quest above lands. Check: that quest's PR has
merged on moq's `main`, deleting its file, and `moq_audio::bus::Positioned`
there takes a stretch bound. A quest file that moved, or went away without
its work landing, does not count.

## Required

- [The studio is caught up to moq's main](/quest/m0/pin-main.md) - moq's breaking changes since moq-dev/moq#8272, so this pin takes only its own