Skip to content

Commit cd225fb

Browse files
committed
Bring MIDI Studio V2 to end-state UAT readiness with SoundFont preview, effects, advanced settings, export readiness, and SSoT cleanup - PR_26146_341-420-midi-studio-v2-endstate-soundfont-effects-uat-ready
1 parent 0bae9fa commit cd225fb

15 files changed

Lines changed: 775 additions & 72 deletions
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# PR_26146_341-420 Effects And Advanced Report
2+
3+
## PROD Effects
4+
5+
The following effects are wired in the Instruments tab and persisted through the canonical instrument preview lane settings:
6+
7+
- Reverb
8+
- Chorus
9+
- Delay
10+
- Filter
11+
- Brightness/Tone
12+
13+
Each effect is a numeric 0..1 control owned by Instruments. Values are included in `previewLaneSettings.effects` and reflected in JSON Details.
14+
15+
## Fast JS Synth Influence
16+
17+
Fast JS Synth applies practical effect influence where supported by the existing browser synth:
18+
19+
- Brightness/Tone increases level and can brighten waveform choice.
20+
- Filter dampens level and can soften waveform choice.
21+
- Reverb, Delay, and Chorus influence duration/ambience-style scaling.
22+
- Chorus can select a softer waveform where practical.
23+
24+
This keeps the effects meaningful without introducing a new synth architecture.
25+
26+
## SoundFont Preview Influence
27+
28+
SoundFont Preview receives the same canonical effect data path, but actual SoundFont playback is blocked with WARN until the repo has a verified SoundFont loader/assets/render bridge. The UI does not claim SoundFont effects are audible until that path exists.
29+
30+
## Advanced PROD Controls
31+
32+
The following useful advanced controls remain wired in Instruments:
33+
34+
- Velocity
35+
- Duration
36+
- Transpose
37+
- Octave Range
38+
39+
These settings update canonical preview lane settings and influence Fast JS Synth playback/audition.
40+
41+
## Deep MIDI Controls
42+
43+
Deep MIDI controls were removed from the primary PROD UI instead of leaving unnecessary red controls:
44+
45+
- MIDI Channel
46+
- GM Program
47+
- Controller Values
48+
49+
No primary MIDI Studio workflow requires deep MIDI knowledge.
50+
51+
## Status
52+
53+
PASS for wired PROD effects and useful advanced controls. WARN for SoundFont-specific audible effect rendering because SoundFont Preview is unavailable in this repo.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# PR_26146_341-420 Endstate Validation
2+
3+
Task: PR_26146_341-420-midi-studio-v2-endstate-soundfont-effects-uat-ready
4+
5+
## Result
6+
7+
MIDI Studio V2 end-state UAT scope is implemented with one honest WARN: SoundFont Preview is selectable and owned by Export/audio settings, but the repo does not currently include a verified SoundFont loader, asset set, or render bridge. SoundFont playback therefore reports unavailable with actionable status and does not claim success.
8+
9+
## Implementation Summary
10+
11+
- Added Preview Engine selection in the Export ownership area:
12+
- Fast JS Synth
13+
- SoundFont Preview
14+
- Added SoundFont asset selector and live SoundFont preview status in Export.
15+
- Routed Play, Play Section, Play Sequence, Loop, Stop, note audition, and instrument audition through the selected preview engine gate.
16+
- Kept Fast JS Synth playback working with selected song, sequence, instruments, notes, volume, pan, transpose, octave range, velocity, duration, and practical effects.
17+
- SoundFont Preview reports WARN when no verified loader/assets/render bridge are available.
18+
- Wired PROD effects in Instruments:
19+
- Reverb
20+
- Chorus
21+
- Delay
22+
- Filter
23+
- Brightness/Tone
24+
- Kept useful Advanced controls wired in Instruments:
25+
- Velocity
26+
- Duration
27+
- Transpose
28+
- Octave Range
29+
- Removed deep MIDI controls from the primary PROD UI instead of leaving unnecessary red controls.
30+
- Updated Export readiness, Manifest readiness, Audio Diagnostics, JSON Details, and status surfaces with preview-engine/SoundFont readiness.
31+
- Added targeted Playwright coverage for PR341-420 preview engine, effects, advanced controls, export readiness honesty, and SoundFont unavailable behavior.
32+
33+
## Validation
34+
35+
- PASS changed-file syntax checks:
36+
- `node --check tools/midi-studio-v2/js/MidiStudioV2App.js`
37+
- `node --check tools/midi-studio-v2/js/bootstrap.js`
38+
- `node --check tools/midi-studio-v2/js/controls/PlaybackControl.js`
39+
- `node --check tools/midi-studio-v2/js/controls/ExportPanelControl.js`
40+
- `node --check tools/midi-studio-v2/js/controls/InstrumentGridControl.js`
41+
- `node --check src/engine/audio/PreviewSynthEngine.js`
42+
- `node --check tests/playwright/tools/MidiStudioV2.spec.mjs`
43+
- PASS targeted MIDI Studio Playwright validation:
44+
- `npx playwright test tests/playwright/tools/MidiStudioV2.spec.mjs --grep "PR061 instrument editor|PR281-340|PR341-420" --project=playwright`
45+
- Result: 3 passed.
46+
- WARN `npm run test:workspace-v2`:
47+
- Result: 49 passed, 23 failed.
48+
- Failures are existing Workspace Manager V2 lane failures outside MIDI Studio V2 scope, primarily the 11-tool-tile expectation while the UI renders 12 tools, plus one Asset Manager workspace-context timeout.
49+
- PASS `git diff --check`.
50+
51+
## Release Gate
52+
53+
MIDI Studio V2 PR341-420 scope is UAT-ready with the SoundFont limitation classified as WARN/unavailable, not a false PASS. No required PROD workflow control is left red/unwired. Remaining red/unwired controls are future-only surfaces outside this lane's implemented production path.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# PR_26146_341-420 Export Readiness Report
2+
3+
## Export Ownership
4+
5+
Export tab owns:
6+
7+
- Preview Engine
8+
- SoundFont Asset
9+
- SoundFont Preview status
10+
- Render Source
11+
- Export Status
12+
- Manifest Readiness
13+
- Save WAV
14+
- Save MP3
15+
- Save OGG
16+
17+
JSON import/export remains separate from rendered audio Save actions.
18+
19+
## Readiness Summary
20+
21+
Export readiness now includes:
22+
23+
- Selected song
24+
- Classification
25+
- Generated ID
26+
- Sequence summary
27+
- Section summary
28+
- Instrument count
29+
- Note count
30+
- Target output formats
31+
- Preview engine
32+
- SoundFont preview/render path availability
33+
34+
## Save Actions
35+
36+
Save WAV, Save MP3, and Save OGG continue to use declared rendered target files when present. They do not claim to render new audio. Missing target paths report WARN rather than false success.
37+
38+
## SoundFont Render Path
39+
40+
The UI now shows whether SoundFont Preview is available. Current status is WARN because there is no verified SoundFont loader/assets/render bridge in the repo.
41+
42+
## Status
43+
44+
PASS for honest export readiness and ownership. WARN for unavailable SoundFont preview/render path.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# PR_26146_341-420 Preview Engine Report
2+
3+
## Preview Engines
4+
5+
| Engine | Status | Notes |
6+
| --- | --- | --- |
7+
| Fast JS Synth | PASS | Working browser synth preview path. Uses sequence, notes, instruments, volume, pan, transpose, octave, velocity, duration, and practical effects. |
8+
| SoundFont Preview | WARN | Selectable and statused, but unavailable until a verified SoundFont loader, asset set, and render bridge are present. |
9+
10+
## Control Flow
11+
12+
`PlaybackControl` owns the preview engine selector binding and exposes the selected engine to `MidiStudioV2App`.
13+
14+
`MidiStudioV2App` checks preview engine availability before:
15+
16+
- Song playback
17+
- Section playback
18+
- Sequence playback
19+
- Loop playback
20+
- Canvas note audition
21+
- Instrument audition
22+
23+
`ExportPanelControl` renders the preview engine readiness as derived Export/Manifest readiness data.
24+
25+
## Playback State
26+
27+
Fast JS Synth preserves the existing playback state behavior:
28+
29+
- Playing
30+
- Looping
31+
- Stopped
32+
- Completed
33+
- Failed
34+
35+
SoundFont Preview unavailable state does not start playback, does not leave controls stuck disabled, and logs actionable WARN status.
36+
37+
## UAT Notes
38+
39+
Play/Stop and loop UAT should use Fast JS Synth for audible playback in this repo. SoundFont Preview UAT should verify the unavailable WARN path until assets/loader/render bridge are added.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# PR_26146_341-420 SoundFont Preview Report
2+
3+
## Ownership
4+
5+
SoundFont Preview settings live in the Export tab audio/render ownership area.
6+
7+
- `previewEngineSelect` owns preview engine selection.
8+
- `futureSoundFontSelect` is now the SoundFont Asset selector, no longer a disabled future control.
9+
- `soundFontPreviewStatus` is the live status surface.
10+
- Export readiness and diagnostics consume this status as read-only derived data.
11+
12+
## Behavior
13+
14+
Fast JS Synth remains the working preview engine.
15+
16+
SoundFont Preview can be selected, but this build reports it as unavailable unless a verified SoundFont loader, asset set, and render bridge exist. The current repo does not provide that verified path, so SoundFont Preview reports:
17+
18+
- WARN when selected.
19+
- Actionable message explaining that no SoundFont loader/assets are configured or no verified render bridge is present.
20+
- No false claim that SoundFont playback is active.
21+
22+
## Playback Integration
23+
24+
The preview engine gate covers:
25+
26+
- Play song
27+
- Play section
28+
- Play sequence
29+
- Loop
30+
- Stop
31+
- Canvas note audition
32+
- Instrument audition keyboard
33+
34+
When SoundFont Preview is selected and unavailable, playback does not start and the status log explains the blocker. Fast JS Synth remains available for the same workflow.
35+
36+
## Export Integration
37+
38+
Export readiness now shows:
39+
40+
- Preview engine
41+
- SoundFont preview status
42+
- Render source
43+
- Target output formats
44+
- Existing rendered target download readiness
45+
46+
Save WAV, Save MP3, and Save OGG still use the existing rendered-target download workflow and do not claim to render new SoundFont audio.
47+
48+
## Status
49+
50+
WARN: SoundFont Preview is honestly surfaced but unavailable in this repo until the SoundFont loader/assets/render bridge are added.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# PR_26146_341-420 SSoT Ownership Matrix
2+
3+
| Canonical Value Or Workflow | Editable Owner | Derived Readers |
4+
| --- | --- | --- |
5+
| Song name | Song Details | Song List, Export readiness, Diagnostics, JSON Details |
6+
| Classification | Song Details | Generated ID, Export readiness, Manifest readiness, Diagnostics |
7+
| Generated ID | Derived from song name and classification | Song Details display, Export readiness, Manifest readiness, JSON Details |
8+
| Tempo, Key, Style, Notes | Song Details | Diagnostics, JSON Details, Export readiness |
9+
| Song Sheet sections | Song Sheet | Available Sections, Sequence Builder, Timeline labels, JSON Details |
10+
| Song Sequence | Song Sheet | Octave Timeline, Export readiness, Manifest readiness, JSON Details |
11+
| Apply Song Sheet To | Song Sheet | Generation summary, Diagnostics, JSON Details |
12+
| Timeline notes | Octave Timeline canvas | Diagnostics, Export readiness, JSON Details |
13+
| Selected instrument | Instruments and Octave Timeline quick select sync to one selectedInstrumentId | Audition keyboard, Playback state, Diagnostics |
14+
| Instrument GM type/patch | Instruments | Timeline lane labels, Export readiness, JSON Details |
15+
| Instrument volume/pan | Instruments | Fast JS Synth, Export readiness, JSON Details |
16+
| Instrument transpose/octave range | Instruments | Fast JS Synth, Audition keyboard, JSON Details |
17+
| Instrument velocity/duration | Instruments | Fast JS Synth, JSON Details |
18+
| Instrument effects | Instruments | Fast JS Synth, SoundFont status path, JSON Details |
19+
| Timeline mute/solo/hide | Octave Timeline quick controls | Playback preparation, Diagnostics |
20+
| Preview engine | Export audio/render settings | Playback controls, Export readiness, Diagnostics |
21+
| SoundFont asset/status | Export audio/render settings | Playback gate, Export readiness, Diagnostics |
22+
| Save WAV/MP3/OGG | Export | Export status, Diagnostics |
23+
| JSON import/export | Tool shell / import-export ownership | Workspace handoff, Diagnostics |
24+
| Diagnostics | Read-only derived except explicit Copy/Clear actions | None |
25+
26+
## Duplicate Ownership Result
27+
28+
No duplicate editable SoundFont, effects, advanced, instrument, or song setup controls were introduced. Deep MIDI controls were removed from primary PROD UI to avoid unnecessary duplicate or unwired ownership.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# PR_26146_341-420 UAT Ready Report
2+
3+
## PASS Workflows
4+
5+
- Import JSON workflow preserved.
6+
- Create/select/edit song workflow preserved.
7+
- Generated ID remains `camelCase(Name) + "-" + Classification`.
8+
- Song Sheet sections, Available Sections, and Song Sequence workflow preserved.
9+
- Parse Guided Song Sheet and Regenerate Arrangement continue to update canonical model, timeline, diagnostics, JSON Details, and status.
10+
- Octave Timeline note editing, section visibility, frozen Bar/Beat, and Fast JS Synth playback remain covered by targeted Playwright tests.
11+
- Instruments tab owns instrument settings.
12+
- Effects controls are wired in Instruments.
13+
- Useful Advanced controls are wired in Instruments.
14+
- Fast JS Synth preview engine plays with selected song/sequence/instruments/notes and practical settings.
15+
- Export readiness and Manifest readiness include preview engine/SoundFont readiness.
16+
- Save WAV/MP3/OGG do not falsely claim generated output.
17+
- Diagnostics remain read-only derived except explicit actions.
18+
19+
## WARN Workflows
20+
21+
- SoundFont Preview is selectable but unavailable in this repo because no verified SoundFont loader/assets/render bridge exists.
22+
- `npm run test:workspace-v2` still has unrelated Workspace Manager V2 failures outside MIDI Studio V2 scope.
23+
- Changed runtime JS coverage is advisory only; `MidiStudioV2App.js` remains below 50 percent function coverage while all changed runtime JS files are exercised by targeted Playwright.
24+
25+
## FAIL Workflows
26+
27+
No in-scope MIDI Studio V2 PR341-420 FAIL items remain after this lane.
28+
29+
## Future-Only Controls
30+
31+
Remaining red/unwired controls are outside the implemented PROD preview path, including future render quality/sample-rate/normalize/stem export style surfaces and other previously documented future-only controls.
32+
33+
## UAT Recommendation
34+
35+
Proceed to UAT with Fast JS Synth as the working audible preview engine. Verify SoundFont Preview as an honest WARN/unavailable path until the render bridge and assets are added.

0 commit comments

Comments
 (0)