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:
+31
-2
@@ -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
Reference in New Issue
Block a user