diff --git a/Architecture.md b/Architecture.md
index 5135a6b..07fbd7c 100644
--- a/Architecture.md
+++ b/Architecture.md
@@ -148,8 +148,10 @@ src/core/time.ts the global clock: one scaled step a frame, shared by the
src/core/music/ time (ticks, 480 to the quarter, tempo and meter, a position as bar, beat and tick), sequence
(the notes of a window of playing time, across the seam of a loop — a pure rule), Scheduler
(#332: plans the notes ahead on the audio clock through a host, so it is measured with a clock
- of the test's own), pattern (#333: a pattern's notes, grid, meter, tempo and loop, held to
- their rules, and the sequence it plays)
+ of the test's own; a song's sound items as clips, taken up mid-way where the playhead
+ lands, #334), pattern (#333: a pattern's notes, grid, meter, tempo and loop, held to
+ their rules, and the sequence it plays), song (#334: tracks and items held to their rules,
+ the sequence a song plays, the level of a track's bus, an item cut at a tick)
src/runtime/ GameRun (one run: start, tick, `Load scene` — shared by Play and a released game, #266),
World, Entity, System interface, Input tracker, CollisionSystem (the editor run's detection),
solids (what `Move` collides with and how it slides — one-way solids let it through unless
@@ -206,8 +208,10 @@ src/viewport/ WorldViewport (the drawing of a world or a holder, the ba
SoundLibrary + pitchWorklet (the AudioWorklet that plays a way with a Pitch through
core/soundfx/pitchPlayer, a phase vocoder, #317; a note of an instrument is one voice
of what reaches its Output, each way with its own file, #331; a voice can start and be released
- at a second of the audio clock, #332), music (the scheduler on the library's clock, its
- notes played by the project's instruments: the Pattern tab's player, #333, and `__gm.music`) + musicTimer
+ at a second of the audio clock, #332; a clip of a song from a second into its sound until
+ its end, a bus per track of a song with its level and pan, #334), music (the scheduler on
+ the library's clock, its notes played by the project's instruments and its clips by
+ the library: the player of the Pattern and Song tabs, #333/#334, and `__gm.music`) + musicTimer
(the Web Worker whose interval is the scheduler's beat, #332), ShaderLibrary, ParticleLibrary,
particles (one ParticleContainer per source), tilemap (one container per layer),
shaderPicture (the picture a shader is laid over when it shades a camera's frame, #299, or
@@ -342,7 +346,13 @@ src/editor/pattern/ PatternEditor (header: Play, Grid; plays through the sche
PianoRoll (keys, ruler, notes and velocity lane in one widget, the gestures and keys) +
rollView (its geometry: rows, hits, bands) + rollEdit (what a gesture does to the notes)
src/editor/music/ timeView (the time axis: ticks to pixels, zoom, the lines of bars, beats and grid) + TimeRuler
- (bars, loop, start and playhead) — for the piano roll and the song tab (#334)
+ (bars, loop, start and playhead) — for the piano roll and the song tab — + transport (one
+ piece plays at a time: a song or a pattern, #334)
+src/editor/song/ SongEditor (header: Play, Grid; plays through the scheduler, sets the tracks' buses and
+ follows edits, #334), SongTimeline (heads, ruler and lanes in one widget, dropping assets
+ in, the gestures and keys) + songView (its geometry: tracks, items and their ends, the
+ parts of a head) + songEdit (what a gesture does to the items) + songActions (deleting
+ tracks and items, shared with the inspector and Delete)
src/editor/tile/ TileEditor (header + kind), TileCanvas (every tile of the block and a sample map, animated),
PictureStrip (the pictures as animation steps; its reorder maths is `dropIndex` in ui/sortable),
TilePalette (the tiles as a grid of pictures in the tilemap panel, #139)
diff --git a/Development.md b/Development.md
index 492e796..14c8d1c 100644
--- a/Development.md
+++ b/Development.md
@@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun
# has and the web server's container has not (SKIP there)
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
php tests/php/releases.test.php # the release store (#266), the same way
-node tools/seed-e2e.mjs && node tools/e2e.mjs # 1799 editor checks, screenshots in /tmp/gm-e2e-*.png
+node tools/seed-e2e.mjs && node tools/e2e.mjs # 1817 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
diff --git a/Home.md b/Home.md
index 2f10046..4b4f4db 100644
--- a/Home.md
+++ b/Home.md
@@ -24,6 +24,7 @@ Live: · Widget playground: