You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Repaired MIDI Studio V2 playback messaging so `.mid` files are treated as musical instruction data, not browser-playable audio.
6
+
- Updated rendered preview behavior to use browser media playback only for manifest-owned rendered OGG/MP3/WAV targets.
7
+
- Added explicit live MIDI synthesis status: `NOT IMPLEMENTED` until a real shared JavaScript MIDI parser/synth/instrument path exists.
8
+
- Preserved first-class Workspace V2 tool scope and did not add MIDI input, recording, fallback songs, DAW editing, piano-roll editing, or fake playback.
9
+
10
+
## Playback Contract
11
+
12
+
- Manifest root `music.songs` stores song metadata.
13
+
-`sourceMidi` points to a `.mid` musical instruction file.
14
+
-`rendered` targets point to runtime audio assets that may be previewed through browser `Audio`.
15
+
- Future real MIDI playback requires shared `src/` MIDI parser, synth, and instrument rendering capability before the tool can claim live MIDI playback.
16
+
17
+
## Status Behavior
18
+
19
+
- Rendered preview success logs `OK Rendered preview started ...`.
20
+
- Instruction-only playback attempts log `WARN Live MIDI synthesis not implemented.`.
21
+
- Songs without rendered targets fail with `FAIL No rendered audio target ... and no live MIDI engine is available ...`.
Copy file name to clipboardExpand all lines: tools/midi-studio-v2/README.md
+9-2Lines changed: 9 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,9 @@ Current scope:
7
7
- renders multiple songs from `game.manifest.json` root `music.songs`;
8
8
- honors `tools.midi-studio-v2.activeSongId` and `directorMode` preferences;
9
9
- displays `.mid` source paths, instrument sets, rendered WAV/MP3/OGG targets, loop metadata, tags, and Game Music Director notes;
10
-
- attempts browser media preview for selected `.mid` sources;
10
+
- treats `sourceMidi` as a `.mid` instruction file path, not browser-playable audio;
11
+
- uses browser media preview only for rendered OGG/MP3/WAV targets;
12
+
- reports live MIDI synthesis as not implemented until shared MIDI parser/synth/instrument capability exists;
11
13
- reports missing source paths and unsupported preview playback visibly;
12
14
- rejects invalid payloads before render.
13
15
@@ -18,4 +20,9 @@ Out of scope:
18
20
- piano-roll or DAW editing;
19
21
- hidden fallback songs or sample data.
20
22
21
-
Future `src/` follow-up: add shared MIDI parsing/synthesis/rendering capability when live MIDI preview and rendered WAV/MP3/OGG export move beyond this first usable metadata surface.
23
+
Playback distinction:
24
+
25
+
- manifest root `music.songs` stores song metadata;
26
+
-`sourceMidi` points to a `.mid` musical instruction file;
27
+
-`rendered` targets point to runtime audio assets that browser `Audio` may preview;
28
+
- future real MIDI playback requires shared `src/` MIDI parser, synth, and instrument capability.
<pclass="tools-platform-frame__description">Inspect multi-song MIDI metadata, preview source files when the browser can play them, and verify rendered gameplay targets.</p>
32
+
<pclass="tools-platform-frame__description">Inspect multi-song MIDI metadata, preview rendered audio targets, and track future live MIDI synthesis readiness.</p>
Copy file name to clipboardExpand all lines: tools/midi-studio-v2/js/MidiStudioV2App.js
+6-2Lines changed: 6 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -82,6 +82,7 @@ export class MidiStudioV2App {
82
82
this.selectedSongId=this.payload.activeSongId;
83
83
this.render();
84
84
this.statusLog.ok(`Loaded ${this.payload.songs.length} MIDI song${this.payload.songs.length===1 ? "" : "s"} from ${sourceLabel} via ${normalized.sourceKind}.`);
85
+
this.statusLog.warn("Live MIDI synthesis not implemented. sourceMidi is musical instruction data; rendered OGG/MP3/WAV targets are used for preview and gameplay audio.");
85
86
returntrue;
86
87
}
87
88
@@ -112,14 +113,17 @@ export class MidiStudioV2App {
this.statusLog.warn("Live MIDI synthesis not implemented.");
121
+
}
118
122
this.statusLog.fail(result.message);
119
123
return;
120
124
}
121
125
this.playbackControl.setPlaying(song);
122
-
this.statusLog.ok(`Preview play started for ${song.name}. Live MIDI playback is for tools, preview, and debugging; prefer rendered OGG/MP3 for gameplay.`);
126
+
this.statusLog.ok(`Rendered preview started for ${song.name}: ${result.path}.`);
message: `Missing MIDI source for ${song.name}. Add music.songs[].sourceMidi in game.manifest.json.`
35
+
liveMidiNotImplemented: true,
36
+
message: `No rendered audio target is available for ${song.name}, and no live MIDI engine is available. Add rendered OGG/MP3/WAV targets or implement shared src MIDI parser/synth/instrument capability.`
18
37
};
19
38
}
20
39
if(!this.mediaTracks.isSupported()){
21
40
return{ok: false,message: "Media playback is unavailable in this browser."};
message: this.mediaTracks.lastError||`MIDI preview failed for ${sourceMidi}. Browser MIDI playback may be unsupported; use rendered OGG/MP3 for gameplay.`
48
+
message: this.mediaTracks.lastError||`Rendered ${previewSource.format.toUpperCase()}preview failed for ${previewSource.path}.`
0 commit comments