@nodaro/prompts 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +101 -80
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -4
- package/dist/index.d.ts +23 -4
- package/dist/index.js +101 -81
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/assemble-suno-input.test.ts +14 -1
- package/src/__tests__/fixtures/parameter-hint-golden.json +1 -1
- package/src/__tests__/hint-join.test.ts +57 -0
- package/src/__tests__/sound-aggregator.test.ts +1 -1
- package/src/assemble-suno-input.ts +3 -2
- package/src/camera-motions.ts +44 -42
- package/src/factory-presets/music.ts +35 -35
- package/src/hint-join.ts +26 -0
- package/src/index.ts +1 -0
- package/src/parameter-prompt-hint.ts +2 -1
- package/src/prompt-wizard-categories.ts +9 -3
- package/src/sound-aggregator.ts +1 -1
|
@@ -401,7 +401,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
401
401
|
description: "Mellow focus beat.",
|
|
402
402
|
group: "By Use-Case",
|
|
403
403
|
data: {
|
|
404
|
-
model: "
|
|
404
|
+
model: "V6",
|
|
405
405
|
instrumental: true,
|
|
406
406
|
style: "lo-fi hip-hop, chill and mellow, jazzy Rhodes chords, vinyl crackle, soft boom-bap drums, Andante 80 BPM, instrumental",
|
|
407
407
|
},
|
|
@@ -412,7 +412,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
412
412
|
description: "Short confident opener.",
|
|
413
413
|
group: "By Use-Case",
|
|
414
414
|
data: {
|
|
415
|
-
model: "
|
|
415
|
+
model: "V6",
|
|
416
416
|
instrumental: true,
|
|
417
417
|
style: "modern podcast intro, upbeat and confident, catchy synth hook, punchy beat, Allegro, instrumental",
|
|
418
418
|
},
|
|
@@ -423,7 +423,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
423
423
|
description: "Epic orchestral build.",
|
|
424
424
|
group: "By Use-Case",
|
|
425
425
|
data: {
|
|
426
|
-
model: "
|
|
426
|
+
model: "V6",
|
|
427
427
|
instrumental: true,
|
|
428
428
|
style: "epic cinematic trailer, dramatic and intense, full orchestra, taiko drums, brass swells, crescendo into a powerful hit, instrumental",
|
|
429
429
|
},
|
|
@@ -434,7 +434,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
434
434
|
description: "Bright, motivational.",
|
|
435
435
|
group: "By Use-Case",
|
|
436
436
|
data: {
|
|
437
|
-
model: "
|
|
437
|
+
model: "V6",
|
|
438
438
|
instrumental: true,
|
|
439
439
|
style: "upbeat corporate, optimistic and motivational, bright piano, claps, clean electronic beat, Allegro 120 BPM, instrumental",
|
|
440
440
|
},
|
|
@@ -445,7 +445,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
445
445
|
description: "Feel-good acoustic bed.",
|
|
446
446
|
group: "By Use-Case",
|
|
447
447
|
data: {
|
|
448
|
-
model: "
|
|
448
|
+
model: "V6",
|
|
449
449
|
instrumental: true,
|
|
450
450
|
style: "feel-good vlog background, light and breezy, acoustic guitar, claps, warm and unobtrusive, Andante, instrumental",
|
|
451
451
|
},
|
|
@@ -456,7 +456,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
456
456
|
description: "Calm meditative pads.",
|
|
457
457
|
group: "By Use-Case",
|
|
458
458
|
data: {
|
|
459
|
-
model: "
|
|
459
|
+
model: "V6",
|
|
460
460
|
instrumental: true,
|
|
461
461
|
style: "ambient soundscape, calm and meditative, soft evolving synth pads, gentle textures, reverb-heavy, Adagio, instrumental",
|
|
462
462
|
},
|
|
@@ -467,7 +467,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
467
467
|
description: "Festival build and drop.",
|
|
468
468
|
group: "By Use-Case",
|
|
469
469
|
data: {
|
|
470
|
-
model: "
|
|
470
|
+
model: "V6",
|
|
471
471
|
instrumental: true,
|
|
472
472
|
style: "festival EDM, euphoric and energetic, big supersaw leads, sidechain bass, build-up and powerful drop, Allegro 128 BPM, instrumental",
|
|
473
473
|
},
|
|
@@ -478,7 +478,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
478
478
|
description: "Playful 8-bit loop.",
|
|
479
479
|
group: "By Use-Case",
|
|
480
480
|
data: {
|
|
481
|
-
model: "
|
|
481
|
+
model: "V6",
|
|
482
482
|
instrumental: true,
|
|
483
483
|
style: "video game chiptune, playful and adventurous, 8-bit synths, catchy melody, energetic, instrumental",
|
|
484
484
|
},
|
|
@@ -491,7 +491,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
491
491
|
description: "Dusty laid-back groove.",
|
|
492
492
|
group: "By Genre",
|
|
493
493
|
data: {
|
|
494
|
-
model: "
|
|
494
|
+
model: "V6",
|
|
495
495
|
instrumental: true,
|
|
496
496
|
style: "lo-fi hip-hop, jazzy and mellow, dusty Rhodes chords, vinyl warmth, laid-back boom-bap groove, instrumental",
|
|
497
497
|
},
|
|
@@ -502,7 +502,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
502
502
|
description: "Club-energy four-on-the-floor.",
|
|
503
503
|
group: "By Genre",
|
|
504
504
|
data: {
|
|
505
|
-
model: "
|
|
505
|
+
model: "V6",
|
|
506
506
|
instrumental: true,
|
|
507
507
|
style: "house EDM, energetic and euphoric, four-on-the-floor beat, catchy plucky synths, club energy, Allegro 124 BPM, instrumental",
|
|
508
508
|
},
|
|
@@ -513,7 +513,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
513
513
|
description: "Driving anthemic guitars.",
|
|
514
514
|
group: "By Genre",
|
|
515
515
|
data: {
|
|
516
|
-
model: "
|
|
516
|
+
model: "V6",
|
|
517
517
|
instrumental: true,
|
|
518
518
|
style: "rock anthem, energetic and driving, distorted electric guitars, pounding drums, anthemic, instrumental",
|
|
519
519
|
},
|
|
@@ -524,7 +524,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
524
524
|
description: "Late-night sophistication.",
|
|
525
525
|
group: "By Genre",
|
|
526
526
|
data: {
|
|
527
|
-
model: "
|
|
527
|
+
model: "V6",
|
|
528
528
|
instrumental: true,
|
|
529
529
|
style: "smooth jazz, relaxed and sophisticated, warm saxophone, brushed drums, walking bass, late-night, instrumental",
|
|
530
530
|
},
|
|
@@ -535,7 +535,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
535
535
|
description: "Spacious and serene.",
|
|
536
536
|
group: "By Genre",
|
|
537
537
|
data: {
|
|
538
|
-
model: "
|
|
538
|
+
model: "V6",
|
|
539
539
|
instrumental: true,
|
|
540
540
|
style: "ambient, serene and spacious, lush synth pads, field-recording textures, slow and meditative, instrumental",
|
|
541
541
|
},
|
|
@@ -546,7 +546,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
546
546
|
description: "Grand cinematic ensemble.",
|
|
547
547
|
group: "By Genre",
|
|
548
548
|
data: {
|
|
549
|
-
model: "
|
|
549
|
+
model: "V6",
|
|
550
550
|
instrumental: true,
|
|
551
551
|
style: "epic orchestral, grand and cinematic, sweeping strings, brass, woodwinds, timpani, dramatic, instrumental",
|
|
552
552
|
},
|
|
@@ -557,7 +557,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
557
557
|
description: "80s neon nostalgia.",
|
|
558
558
|
group: "By Genre",
|
|
559
559
|
data: {
|
|
560
|
-
model: "
|
|
560
|
+
model: "V6",
|
|
561
561
|
instrumental: true,
|
|
562
562
|
style: "80s synthwave, nostalgic and cool, retro analog synths, pulsing bass, gated drums, neon, Andante 110 BPM, instrumental",
|
|
563
563
|
},
|
|
@@ -568,7 +568,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
568
568
|
description: "Groovy and danceable.",
|
|
569
569
|
group: "By Genre",
|
|
570
570
|
data: {
|
|
571
|
-
model: "
|
|
571
|
+
model: "V6",
|
|
572
572
|
instrumental: true,
|
|
573
573
|
style: "funk and soul, groovy and fun, slap bass, wah guitar, tight horn section, danceable, instrumental",
|
|
574
574
|
},
|
|
@@ -581,7 +581,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
581
581
|
description: "Catchy vocal pop — add lyrics.",
|
|
582
582
|
group: "Vocals & Songs",
|
|
583
583
|
data: {
|
|
584
|
-
model: "
|
|
584
|
+
model: "V6",
|
|
585
585
|
instrumental: false,
|
|
586
586
|
style: "upbeat pop, catchy and bright, shimmering synths, four-on-the-floor, female vocals, Allegro 120 BPM, verse-chorus-verse with bridge",
|
|
587
587
|
},
|
|
@@ -592,7 +592,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
592
592
|
description: "Hard-hitting verses — add bars.",
|
|
593
593
|
group: "Vocals & Songs",
|
|
594
594
|
data: {
|
|
595
|
-
model: "
|
|
595
|
+
model: "V6",
|
|
596
596
|
instrumental: false,
|
|
597
597
|
style: "modern hip-hop, confident, hard-hitting 808s, trap hi-hats, male rap vocals, verse-hook-verse",
|
|
598
598
|
},
|
|
@@ -603,7 +603,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
603
603
|
description: "Heartfelt vocals — add lyrics.",
|
|
604
604
|
group: "Vocals & Songs",
|
|
605
605
|
data: {
|
|
606
|
-
model: "
|
|
606
|
+
model: "V6",
|
|
607
607
|
instrumental: false,
|
|
608
608
|
style: "emotional ballad, tender and heartfelt, piano and strings, soulful vocals, Adagio, verse-chorus with a big bridge",
|
|
609
609
|
},
|
|
@@ -614,7 +614,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
614
614
|
description: "Soaring chorus — add lyrics.",
|
|
615
615
|
group: "Vocals & Songs",
|
|
616
616
|
data: {
|
|
617
|
-
model: "
|
|
617
|
+
model: "V6",
|
|
618
618
|
instrumental: false,
|
|
619
619
|
style: "anthemic rock, powerful, driving guitars, big drums, male vocals, soaring chorus, verse-pre-chorus-chorus",
|
|
620
620
|
},
|
|
@@ -625,7 +625,7 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
625
625
|
description: "Warm and intimate — add lyrics.",
|
|
626
626
|
group: "Vocals & Songs",
|
|
627
627
|
data: {
|
|
628
|
-
model: "
|
|
628
|
+
model: "V6",
|
|
629
629
|
instrumental: false,
|
|
630
630
|
style: "acoustic singer-songwriter, warm and intimate, fingerpicked guitar, soft vocals, Andante, verse-chorus",
|
|
631
631
|
},
|
|
@@ -636,42 +636,42 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
636
636
|
name: "Trailer Riser / Braam",
|
|
637
637
|
description: "Pure rising tension hit.",
|
|
638
638
|
group: "By Use-Case",
|
|
639
|
-
data: { model: "
|
|
639
|
+
data: { model: "V6", instrumental: true, style: "cinematic trailer riser and braam, tense and building, rising whoosh into a deep brass impact, no melody, instrumental" },
|
|
640
640
|
},
|
|
641
641
|
{
|
|
642
642
|
id: "suno-generate/calm-corporate",
|
|
643
643
|
name: "Calm Corporate / Tech",
|
|
644
644
|
description: "Soft, professional bed.",
|
|
645
645
|
group: "By Use-Case",
|
|
646
|
-
data: { model: "
|
|
646
|
+
data: { model: "V6", instrumental: true, style: "calm corporate tech, professional and clean, soft synth pads, gentle pulse, Andante, instrumental" },
|
|
647
647
|
},
|
|
648
648
|
{
|
|
649
649
|
id: "suno-generate/holiday",
|
|
650
650
|
name: "Holiday / Festive",
|
|
651
651
|
description: "Warm seasonal cheer.",
|
|
652
652
|
group: "By Use-Case",
|
|
653
|
-
data: { model: "
|
|
653
|
+
data: { model: "V6", instrumental: true, style: "festive holiday music, warm and cheerful, sleigh bells, warm orchestration, cozy, instrumental" },
|
|
654
654
|
},
|
|
655
655
|
{
|
|
656
656
|
id: "suno-generate/kids",
|
|
657
657
|
name: "Kids / Children's",
|
|
658
658
|
description: "Playful and simple.",
|
|
659
659
|
group: "By Use-Case",
|
|
660
|
-
data: { model: "
|
|
660
|
+
data: { model: "V6", instrumental: true, style: "children's music, playful and happy, simple cheerful melody, xylophone and ukulele, bouncy, instrumental" },
|
|
661
661
|
},
|
|
662
662
|
{
|
|
663
663
|
id: "suno-generate/meditation-spa",
|
|
664
664
|
name: "Meditation / Spa",
|
|
665
665
|
description: "Healing singing bowls.",
|
|
666
666
|
group: "By Use-Case",
|
|
667
|
-
data: { model: "
|
|
667
|
+
data: { model: "V6", instrumental: true, style: "meditation and spa, serene and healing, singing bowls, soft drones, Adagio, reverb-heavy, instrumental" },
|
|
668
668
|
},
|
|
669
669
|
{
|
|
670
670
|
id: "suno-generate/workout",
|
|
671
671
|
name: "Workout / Gym",
|
|
672
672
|
description: "High-energy motivation.",
|
|
673
673
|
group: "By Use-Case",
|
|
674
|
-
data: { model: "
|
|
674
|
+
data: { model: "V6", instrumental: true, style: "high-energy workout, motivational and driving, pumping electronic beat, big synths, Allegro 140 BPM, instrumental" },
|
|
675
675
|
},
|
|
676
676
|
// ── More By Genre ────────────────────────────────────────────────────────
|
|
677
677
|
{
|
|
@@ -679,42 +679,42 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
679
679
|
name: "Trap Beat",
|
|
680
680
|
description: "Booming 808s, dark.",
|
|
681
681
|
group: "By Genre",
|
|
682
|
-
data: { model: "
|
|
682
|
+
data: { model: "V6", instrumental: true, style: "trap beat, dark and hard, booming 808s, crisp rapid hi-hats, moody, instrumental" },
|
|
683
683
|
},
|
|
684
684
|
{
|
|
685
685
|
id: "suno-generate/dnb",
|
|
686
686
|
name: "Drum & Bass",
|
|
687
687
|
description: "Fast breakbeats, deep bass.",
|
|
688
688
|
group: "By Genre",
|
|
689
|
-
data: { model: "
|
|
689
|
+
data: { model: "V6", instrumental: true, style: "drum and bass, fast and energetic, breakbeats, deep rolling bassline, Presto 174 BPM, instrumental" },
|
|
690
690
|
},
|
|
691
691
|
{
|
|
692
692
|
id: "suno-generate/afrobeats",
|
|
693
693
|
name: "Afrobeats",
|
|
694
694
|
description: "Warm syncopated groove.",
|
|
695
695
|
group: "By Genre",
|
|
696
|
-
data: { model: "
|
|
696
|
+
data: { model: "V6", instrumental: true, style: "afrobeats, groovy and warm, syncopated percussion, warm bass, bright melodies, danceable, instrumental" },
|
|
697
697
|
},
|
|
698
698
|
{
|
|
699
699
|
id: "suno-generate/country",
|
|
700
700
|
name: "Country / Americana",
|
|
701
701
|
description: "Acoustic, heartfelt.",
|
|
702
702
|
group: "By Genre",
|
|
703
|
-
data: { model: "
|
|
703
|
+
data: { model: "V6", instrumental: true, style: "country americana, warm and heartfelt, acoustic and slide guitar, storytelling feel, instrumental" },
|
|
704
704
|
},
|
|
705
705
|
{
|
|
706
706
|
id: "suno-generate/phonk",
|
|
707
707
|
name: "Phonk",
|
|
708
708
|
description: "Dark drift-phonk for reels.",
|
|
709
709
|
group: "By Genre",
|
|
710
|
-
data: { model: "
|
|
710
|
+
data: { model: "V6", instrumental: true, style: "drift phonk, dark and aggressive, distorted 808 cowbell, menacing beat, lo-fi grit, instrumental" },
|
|
711
711
|
},
|
|
712
712
|
{
|
|
713
713
|
id: "suno-generate/reggae",
|
|
714
714
|
name: "Reggae / Dub",
|
|
715
715
|
description: "Laid-back island groove.",
|
|
716
716
|
group: "By Genre",
|
|
717
|
-
data: { model: "
|
|
717
|
+
data: { model: "V6", instrumental: true, style: "reggae dub, laid-back and sunny, off-beat skank guitar, deep dub bassline, relaxed island groove, instrumental" },
|
|
718
718
|
},
|
|
719
719
|
// ── More Vocals & Songs ──────────────────────────────────────────────────
|
|
720
720
|
{
|
|
@@ -722,13 +722,13 @@ export const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [
|
|
|
722
722
|
name: "R&B / Soul (vocal)",
|
|
723
723
|
description: "Smooth soulful vocals — add lyrics.",
|
|
724
724
|
group: "Vocals & Songs",
|
|
725
|
-
data: { model: "
|
|
725
|
+
data: { model: "V6", instrumental: false, style: "smooth R&B soul, sensual and warm, lush chords, soft drums, soulful vocals, Andante, verse-chorus with ad-libs" },
|
|
726
726
|
},
|
|
727
727
|
{
|
|
728
728
|
id: "suno-generate/song-kpop",
|
|
729
729
|
name: "K-Pop (vocal)",
|
|
730
730
|
description: "Polished hook — add lyrics.",
|
|
731
731
|
group: "Vocals & Songs",
|
|
732
|
-
data: { model: "
|
|
732
|
+
data: { model: "V6", instrumental: false, style: "K-pop, polished and energetic, bright synths, punchy drums, layered vocals, Allegro 120 BPM, verse-pre-chorus-chorus" },
|
|
733
733
|
},
|
|
734
734
|
]
|
package/src/hint-join.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Join prompt-hint fragments into one injected string.
|
|
3
|
+
*
|
|
4
|
+
* Catalog hints were historically single clauses ("slow camera pan left,
|
|
5
|
+
* rotating horizontally") and every composer glued fragments with `", "`. The
|
|
6
|
+
* tested camera-motion injections are multi-sentence paragraphs that END IN A
|
|
7
|
+
* PERIOD, so the comma join produced `"...no pull-out., beginning with ..."`.
|
|
8
|
+
*
|
|
9
|
+
* This helper keeps the comma between clause-style fragments — every string
|
|
10
|
+
* the composers emitted before it existed is byte-identical — and switches to
|
|
11
|
+
* a single space after a fragment that already closes a sentence. It never
|
|
12
|
+
* strips or adds terminal punctuation: a tested injection ships exactly as
|
|
13
|
+
* approved, and a user's preText/postText is never rewritten.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const ENDS_SENTENCE = /[.!?]$/
|
|
17
|
+
|
|
18
|
+
export function joinHintFragments(fragments: ReadonlyArray<string>): string {
|
|
19
|
+
let out = ""
|
|
20
|
+
for (const fragment of fragments) {
|
|
21
|
+
if (!fragment) continue
|
|
22
|
+
if (!out) { out = fragment; continue }
|
|
23
|
+
out += ENDS_SENTENCE.test(out) ? ` ${fragment}` : `, ${fragment}`
|
|
24
|
+
}
|
|
25
|
+
return out
|
|
26
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -49,6 +49,7 @@ export * from "./atmosphere.js"
|
|
|
49
49
|
export * from "./backdrop.js"
|
|
50
50
|
export * from "./camera-format.js"
|
|
51
51
|
export * from "./camera-motions.js"
|
|
52
|
+
export * from "./hint-join.js"
|
|
52
53
|
export * from "./character-fx.js"
|
|
53
54
|
export * from "./color-look.js"
|
|
54
55
|
export * from "./composition-effects.js"
|
|
@@ -35,6 +35,7 @@ import { buildPoseHints } from "./pose.js"
|
|
|
35
35
|
import { buildStylingHints } from "./styling.js"
|
|
36
36
|
import { buildTemporalHints } from "./temporal.js"
|
|
37
37
|
import { composeCameraMotionHintFromConnections } from "./camera-motions.js"
|
|
38
|
+
import { joinHintFragments } from "./hint-join.js"
|
|
38
39
|
import { composeTransitionHintFromConnections, type TransitionDuration, type TransitionIntensity, type TransitionPosition, type TransitionTiming } from "./transitions.js"
|
|
39
40
|
import { composeCharacterFxHintFromConnections, type CharacterFxDuration, type CharacterFxIntensity, type CharacterFxPosition, type CharacterFxTiming } from "./character-fx.js"
|
|
40
41
|
import { buildMaterialHints } from "./materials.js"
|
|
@@ -84,7 +85,7 @@ function withCustomText(data: Record<string, unknown>, mainHint: string): string
|
|
|
84
85
|
if (mainHint) fragments.push(mainHint)
|
|
85
86
|
const post = typeof data.postText === "string" ? data.postText.trim() : ""
|
|
86
87
|
if (post) fragments.push(post)
|
|
87
|
-
return fragments
|
|
88
|
+
return joinHintFragments(fragments)
|
|
88
89
|
}
|
|
89
90
|
|
|
90
91
|
/**
|
|
@@ -333,11 +333,17 @@ export const PROVIDER_CAPABILITIES: Record<string, Record<string, string>> = {
|
|
|
333
333
|
"minimax": "General music generation, multiple genres",
|
|
334
334
|
},
|
|
335
335
|
"suno-generate": {
|
|
336
|
-
|
|
337
|
-
|
|
336
|
+
// Current generation first (V6 = default), then the earlier ones — all
|
|
337
|
+
// offered in the picker; mirrors SUNO_MODELS order in @nodaro/shared.
|
|
338
|
+
"V6": "Flagship — greater musical expression, more natural vocals, richer details",
|
|
339
|
+
"V6_WILD": "Bolder, more distinctive, less predictable results for exploration",
|
|
340
|
+
"V6_MINI": "Lightweight and fast — quality/speed balance",
|
|
341
|
+
"V5_5": "Custom-model tuning with strong vocal quality",
|
|
342
|
+
"V5": "Superior musical expression, faster generation",
|
|
338
343
|
"V4_5PLUS": "Enhanced V4.5 with better production",
|
|
339
344
|
"V4_5ALL": "Full-featured V4.5",
|
|
340
|
-
"
|
|
345
|
+
"V4_5": "Improved quality and coherence",
|
|
346
|
+
"V4": "Standard Suno generation",
|
|
341
347
|
},
|
|
342
348
|
"text-to-audio": {
|
|
343
349
|
"elevenlabs-sfx": "High quality sound effects and ambient audio",
|
package/src/sound-aggregator.ts
CHANGED
|
@@ -96,7 +96,7 @@ export function composeSoundHintFromConnections(
|
|
|
96
96
|
// Music consumers (suno-generate, generate-music) accept BOTH music nodes
|
|
97
97
|
// AND voice nodes — voice description (gender, age, accent, language,
|
|
98
98
|
// timbre, delivery archetype) is valid input for music with vocals. Suno
|
|
99
|
-
//
|
|
99
|
+
// V6 in particular benefits from rich voice description; the typed
|
|
100
100
|
// `vocalGender` field on Suno is also extracted below from voice-character.
|
|
101
101
|
//
|
|
102
102
|
// Voice Design rejects music nodes (different domain). Text-to-Audio
|