UI enhancements, i18n, history drawer, and requested features
This commit is contained in:
+35
-2
@@ -91,6 +91,7 @@ Output ONE short Suno style description.
|
||||
Requirements:
|
||||
- A cohesive, production-ready combination of genres, instruments, BPM, mood,
|
||||
and vocal style (or "instrumental, no vocals" if appropriate).
|
||||
- If the user provides a music idea, tailor the style to complement it naturally.
|
||||
- Comma-separated keywords. No sentences, no bullet points, no labels.
|
||||
- Maximum 25 words.
|
||||
- Output ONLY the style description line — no quotes, no commentary, no prefix,
|
||||
@@ -108,6 +109,8 @@ Output ONE short Suno style description.
|
||||
|
||||
Requirements:
|
||||
- DELIBERATELY combine genres, eras, or instruments that don't normally mix.
|
||||
- If the user provides a music idea, use it as a jumping-off point for an
|
||||
unexpected, surprising twist on that idea.
|
||||
- The combination should still be parseable by Suno: use real instrument and
|
||||
genre names, include a BPM, mention a vocal style.
|
||||
- Comma-separated keywords. No sentences, no bullet points, no labels.
|
||||
@@ -122,12 +125,40 @@ Examples of the expected output (do NOT copy these verbatim):
|
||||
- medieval lute and drum & bass, fingerpicked strings, reese bass, 174 BPM
|
||||
- tuvan throat singing over tropical house, guttural vocals, marimba, 120 BPM`;
|
||||
|
||||
export const SYSTEM_PROMPT_LYRICS_PARTIAL = `You are a music production assistant specializing in Suno AI song creation.
|
||||
|
||||
The user has existing lyrics and wants to regenerate a SPECIFIC selected passage only.
|
||||
|
||||
Rules:
|
||||
- Rewrite ONLY the selected passage. Keep everything outside it exactly the same.
|
||||
- Match the existing rhyme scheme, meter, and section structure.
|
||||
- Keep the same emotional tone, language, and Suno section tags.
|
||||
- The lyrics must NOT reference the genre, instruments, or music production.
|
||||
- Output ONLY the rewritten passage text — no JSON, no explanation, no quotes around it.
|
||||
- Do NOT include section tags in your output unless the selected passage already contained them.`;
|
||||
|
||||
export function buildSystemPrompt(req) {
|
||||
if (req.section === 'lyrics_partial') return SYSTEM_PROMPT_LYRICS_PARTIAL;
|
||||
if (req.section === 'all') return SYSTEM_PROMPT_ALL;
|
||||
return SYSTEM_PROMPT_PARTIAL;
|
||||
}
|
||||
|
||||
export function buildUserMessage(req) {
|
||||
if (req.section === 'lyrics_partial') {
|
||||
return [
|
||||
`Music idea: ${req.input}`,
|
||||
`Language: ${req.language}`,
|
||||
req.mood ? `Mood: ${req.mood}` : '',
|
||||
req.vocals ? `Vocals: ${req.vocals}` : '',
|
||||
'',
|
||||
'Full current lyrics:',
|
||||
req.context?.lyrics ?? '',
|
||||
'',
|
||||
'Selected passage to rewrite:',
|
||||
req.selected_text ?? '',
|
||||
].filter(l => l !== null).join('\n');
|
||||
}
|
||||
|
||||
const lines = [];
|
||||
lines.push(`Music idea: ${req.input}`);
|
||||
lines.push(`Language: ${req.language}`);
|
||||
@@ -145,6 +176,8 @@ export function buildUserMessage(req) {
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
||||
export function buildStylePrompt(mode) {
|
||||
return mode === 'crazy' ? SYSTEM_PROMPT_STYLE_CRAZY : SYSTEM_PROMPT_STYLE_NORMAL;
|
||||
export function buildStylePrompt(mode, idea) {
|
||||
const base = mode === 'crazy' ? SYSTEM_PROMPT_STYLE_CRAZY : SYSTEM_PROMPT_STYLE_NORMAL;
|
||||
if (!idea || !idea.trim()) return base;
|
||||
return base + `\n\nUser's music idea (use as context for tailoring the style): "${idea.trim()}"`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user