Gap 13: BWF/INFO metadata cho WAV export — wav_bwf.patch_bwf_metadata chen bext + LIST/INFO (INAM/IART/ISRC/ICMT) truoc data chunk, giu nguyen PCM bits; render_project(metadata=) + RenderRequest.metadata + cloud render task; ExportModal Title/Artist/ISRC; test_66 (178 passed)

This commit is contained in:
2026-08-23 09:11:18 +07:00
parent 94a0bc7401
commit 1d4ff1282b
9 changed files with 222 additions and 10 deletions
+31 -2
View File
@@ -12361,6 +12361,26 @@ const ExportModal = ({ open, onClose, exportSettings, setExportSettings, isExpor
</label>
)}
</div>
<div className="grid grid-cols-3 gap-2 pt-1 bg-[#141414] border border-zinc-800 rounded px-2 py-1.5">
<div>
<label className="block text-[7px] text-zinc-500 font-bold uppercase mb-0.5">Title (BWF/INFO)</label>
<input type="text" value={exportSettings.metaTitle} maxLength="254"
onChange={e => setExportSettings(p => ({ ...p, metaTitle: e.target.value }))}
placeholder="Tên bài" className="w-full bg-[#141414] border border-zinc-800 rounded px-1 py-0.5 text-xs text-zinc-300 focus:outline-none" />
</div>
<div>
<label className="block text-[7px] text-zinc-500 font-bold uppercase mb-0.5">Artist</label>
<input type="text" value={exportSettings.metaArtist} maxLength="254"
onChange={e => setExportSettings(p => ({ ...p, metaArtist: e.target.value }))}
placeholder="Nghệ sĩ" className="w-full bg-[#141414] border border-zinc-800 rounded px-1 py-0.5 text-xs text-zinc-300 focus:outline-none" />
</div>
<div>
<label className="block text-[7px] text-zinc-500 font-bold uppercase mb-0.5">ISRC</label>
<input type="text" value={exportSettings.metaIsrc} maxLength="12"
onChange={e => setExportSettings(p => ({ ...p, metaIsrc: e.target.value.toUpperCase() }))}
placeholder="US-ABC-26-00001" className="w-full bg-[#141414] border border-zinc-800 rounded px-1 py-0.5 text-xs text-zinc-300 focus:outline-none" />
</div>
</div>
<div className="grid grid-cols-3 gap-2 pt-1">
<button onClick={onBounce} disabled={isExporting}
title="Bounce realtime — file WAV đầy đủ MIDI + FX Rack + Mastering Chain (chạy lại project thật)"
@@ -18141,7 +18161,11 @@ const App = () => {
dither: false,
normalize: false,
normalizeTarget: '-1dbtp',
monoCheck: true
monoCheck: true,
// Gap 13: BWF/INFO metadata cho WAV mastering export
metaTitle: '',
metaArtist: '',
metaIsrc: ''
});
const [serverStatus, setServerStatus] = useState('checking...');
const _lan = window.SonicRuntime && window.SonicRuntime.capabilities && window.SonicRuntime.capabilities.lan;
@@ -27715,7 +27739,12 @@ const App = () => {
dither: !!exportSettings.dither,
normalize: !!exportSettings.normalize,
normalize_target: exportSettings.normalizeTarget || '-1dbtp',
mono_check: !!exportSettings.monoCheck
mono_check: !!exportSettings.monoCheck,
metadata: {
title: exportSettings.metaTitle || '',
artist: exportSettings.metaArtist || '',
isrc: exportSettings.metaIsrc || ''
}
});
_lastMasterStats = { lufs: res.lufs, true_peak_db: res.true_peak_db };
const lufsTxt = (res.lufs !== null && res.lufs !== undefined) ? res.lufs + ' LUFS' : '-- LUFS';
File diff suppressed because one or more lines are too long