A sound asset can now play its stretch backwards. The switch sits on
the asset, so every way the sound is heard plays it reversed: Play
sound, a song item, an instrument's Sample and a Pitch in a sound FX.
There is no Reverse node in the sound FX graph. The user dropped it,
because playing backwards needs the whole sound in advance, which a
bus or a Chip does not have.
- The cut gets a `reverse` flag, stored as the asset property
`reverse` (default off). The cut name ends in `~reverse` when it is
on, so a reversed sound over the whole file is a cut of its own.
- The handles keep marking the same part of the file. The reversed
copy is made once, like any cut, and the fades follow what is heard:
Fade in ramps at the end handle, Fade out at the start handle.
- The Sound tab has a toggle with a left-pointing play triangle. Its
playhead runs from right to left, and the wave draws the ramps at
the edges they now belong to. The inspector has a Reverse row.
- The icon is a tab header icon (`HEADER_ICON_SVG`, next to the snap
magnet), not a top bar icon. The first gate run had it in the top
bar set, and the test that fixes that set went red.
- A song item draws the waveform of a reversed sound backwards.
Lengths stay as they are.
- The header label reads "Fade in" instead of "Fade in (ms)" and the
fade fields are 8 px narrower. With the new button the readout was
cut to "0.03 s of 0..." at 1280 px, now it shows in full. The
inspector keeps the unit.
Tests:
- Unit sounds 22, sound-library 85 (1 new each). Counter-checks:
without turning the samples round, without moving the fade in to
the end, and without mirroring the peaks, all red.
- e2e 34: ALL PASSED, 72 checks (2 new). The reversed stretch starts
with the last samples of the forward one, and the playhead ran
0.75, 0.60, 0.45, 0.30, 0.15 over the whole file.
- Gate: first run red, 1 of 4031 (the top bar icon list). After
moving the icon, CHECK EXIT 0, 260 files, 4031 tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>