Give a song, a track or an item a sound FX of its own (#355)
A sound FX for one place in a song had to be a project asset, which then stood in every picker. Now every pick of a sound FX in a song can make one the song keeps for that place alone, on top of the embedded assets of the first two parts. - Create sound FX sits at the end of the Sound FX row of the song, a track and an item, and of the menu of a track's FX button. It makes "Sound FX 1", 2, … per song with the Input wired to the Output, picks it and opens it. That is one undo step. - Embed a copy, while the place names a project FX, gives the place a copy under the same name. - While the place names its own, the menu shows it with the mark and offers Edit sound FX and Make project asset. - Picking anything else lets it go in the same undo step. For a track or an item `settleEmbedded` did that already. For the song's own row `AssetPropertyCommand` now settles the song after `fx`. - The mark `•` moved to the core. `assetRefLabel` puts it in front of an embedded asset, so the inspector rows show it like the timeline. - `FieldHandlers.moreChoices` lets a caller end a reference menu with entries of its own. `embeddedPatternName` is `embeddedName` with a base now. Tests: - Unit own-fx (new): 6 green, 6 counter-checks each red - Unit embedded and 80 neighbouring files: 1434 green - e2e 65 (melektaus-atx): ALL PASSED, 51 checks (2 new) - Gate (melektaus-atx): CHECK EXIT 0, 270 files, 4178 tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
49669017b1
commit
668682c4ff
11 files changed
+339
-37
No files matched your search
@@ -21,7 +21,7 @@ import {
|
||||
assetTitle,
|
||||
embeddedCopy,
|
||||
embeddedIn,
|
||||
embeddedPatternName,
|
||||
embeddedName,
|
||||
embeddedUsedBy,
|
||||
instrumentNear,
|
||||
isRowHiddenWhenEmbedded,
|
||||
@@ -234,7 +234,7 @@ describe('a pattern made in a song (#355)', () => {
|
||||
const make = (props: Record<string, string | number> = {}) => {
|
||||
const made = new CreateAssetCommand(
|
||||
'pattern',
|
||||
embeddedPatternName(f.project, songId),
|
||||
embeddedName(f.project, songId, 'Pattern'),
|
||||
{ ...songClockProps(s.song().props), bars: 1, ...props },
|
||||
songId,
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user