← back to chapter

warp-math · the grid follows the file

Chapter 07 bent the file onto the grid — and bent its sound. This chapter bends the grid onto the file: the audio plays raw, bit-identical, and the project's tempo map becomes the beat map. Everything below — ruler, bars, waveform, metronome — is @dawcore/components + @dawcore/transport, whose TempoMap implements exactly the math of chapter 01. The grid is always full bars: a pickup fills the tail of the bar before the first downbeat. Untick conform to hear the metronome march rigidly while the file drifts; tick it and the grid follows every wobble.

1. beats file (required)

Or use a bundled sample: (16 beats wandering 100 → 150 BPM, no pickup) · (steady 120 BPM, 2-beat pickup — the first downbeat lands on a bar line, the pickup fills the bar before it) · (real tracker output: 512 beats, 1-beat pickup, and one 5-beat bar around 30 s — which is actually a ghost beat, a tracker mistake) · (the same file after chapter 06's pipeline deletes the ghost — the 5/4 meter entry vanishes; see the chapter page) · (real tracker output whose final beat is mislabeled a downbeat — a phantom 1-beat bar repairable by relabeling alone) · (Ben Folds — genuinely mixed meter: 73 meter regions, bars of 1–7 beats, the fixture issue #8 was waiting for).

no beats loaded

2. audio file (optional)

The audio the beats map describes. It is never time-stretched, resampled, or rate-changed — in both modes you hear the identical signal. Without it, the metronome alone plays the grid.

no audio loaded · beats-only preview

· tempo here: BPM
the conformed map: one setTempo per segment, with live residual proof

Each row is one tempo event fed to the production transport. The residual columns check RULE (grid conformity) two ways: transport.tickToTime(tick) − (clipStart + beatTime) through @dawcore/transport, and the same through this chapter's pure reference clock. Both should be zero to numerical noise while conformed.

tickbeatBPMbeat time (s)residual (dawcore)residual (reference)