Replace Comfy YuE with standalone YuEGP profile 1
This commit is contained in:
@@ -5,6 +5,7 @@ import type { ImageV2PresetSettings } from '~/utils/imageV2'
|
||||
export type GenerationPresetKind = 'video' | 'image' | 'imagev2' | 'music'
|
||||
|
||||
export type MusicPresetSettings = {
|
||||
yueProfile?: 1 | 3
|
||||
tags?: string
|
||||
lyrics?: string
|
||||
instrumental?: boolean
|
||||
|
||||
@@ -284,6 +284,7 @@ export function clipSettingsRows(clip: {
|
||||
}
|
||||
|
||||
export function trackSettingsRows(track: {
|
||||
yueProfile?: 1 | 3
|
||||
tags?: string
|
||||
lyrics?: string
|
||||
duration?: number
|
||||
@@ -310,8 +311,9 @@ export function trackSettingsRows(track: {
|
||||
const rounded = Math.round(track.duration * 10) / 10
|
||||
rows.push({ label: 'Duration', value: Number.isInteger(rounded) ? `${rounded}s` : `${rounded.toFixed(1)}s` })
|
||||
}
|
||||
if (track.steps != null) rows.push({ label: 'Steps', value: String(track.steps) })
|
||||
if (track.cfg != null) rows.push({ label: 'CFG', value: formatNum(track.cfg) })
|
||||
if (track.yueProfile != null) rows.push({ label: 'YuEGP profile', value: String(track.yueProfile) })
|
||||
if (track.yueProfile == null && track.steps != null) rows.push({ label: 'Steps', value: String(track.steps) })
|
||||
if (track.yueProfile == null && track.cfg != null) rows.push({ label: 'CFG', value: formatNum(track.cfg) })
|
||||
if (track.samplerName) rows.push({ label: 'Sampler', value: track.samplerName })
|
||||
if (track.scheduler) rows.push({ label: 'Scheduler', value: track.scheduler })
|
||||
if (track.lyricsStrength != null) rows.push({ label: 'Lyric strength', value: formatNum(track.lyricsStrength) })
|
||||
|
||||
+2
-3
@@ -104,9 +104,8 @@ export function countYueLyricSections(lyrics: unknown) {
|
||||
export function yueLyricsProblem(lyrics: unknown): string | null {
|
||||
const text = String(lyrics || '').trim()
|
||||
if (!text) return 'YuE needs lyrics with section tags like [Verse 1] and [Chorus].'
|
||||
if (countYueLyricSections(text) < 1) {
|
||||
return 'YuE lyrics must include at least one [Section] tag (use the chips under Lyrics).'
|
||||
}
|
||||
const sections = [...text.matchAll(/\[([^\]]+)\]\s*([^\[]*)/gs)].filter(match => match[2].trim())
|
||||
if (sections.length !== 1) return 'YuEGP needs exactly one non-empty lyric section. Combine the lyrics under one heading.'
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -22,6 +22,7 @@ export type QueuedShotDraft = import('~/utils/imageIterations').ImageIteration &
|
||||
}
|
||||
|
||||
export type QueuedInspectPayload = {
|
||||
yueProfile?: 1 | 3
|
||||
prompt?: string
|
||||
promptMid?: string
|
||||
promptPre?: string
|
||||
@@ -227,7 +228,8 @@ export function queuedJobPresetBody(job: QueuedInspectJob, name: string) {
|
||||
steps: clampMusicSteps(payload.steps),
|
||||
seed: payload.seed,
|
||||
cfg: payload.cfg,
|
||||
engine: payload.musicEngine || payload.engine
|
||||
engine: payload.musicEngine || payload.engine,
|
||||
yueProfile: payload.yueProfile
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user