Compile complete Suno style prompts
This commit is contained in:
@@ -93,4 +93,53 @@ final class SongProjectPromptCompilerTests: XCTestCase {
|
||||
"[Intro - whispered lead]\nFirst line\n\n[Chorus]\nApproved hook"
|
||||
)
|
||||
}
|
||||
|
||||
func testCompilerIncludesStyleInputsFromTheSongProject() throws {
|
||||
let project = SongProject(
|
||||
title: "Full Style",
|
||||
idea: "Compile every approved style input",
|
||||
genres: [
|
||||
GenreStyle(id: "folk", name: "Folk"),
|
||||
GenreStyle(id: "electronic", name: "Electronic")
|
||||
],
|
||||
moods: [MoodTag(id: "warm", name: "Warm")],
|
||||
emotionalArc: [
|
||||
EmotionalArcPoint(
|
||||
id: "chorus-arc",
|
||||
sectionID: "chorus",
|
||||
emotion: "joyful",
|
||||
energy: 8,
|
||||
direction: "lift into release"
|
||||
)
|
||||
],
|
||||
bpm: ManualAutoValue(mode: .manual, value: 108),
|
||||
key: ManualAutoValue(mode: .manual, value: "D minor"),
|
||||
scale: ManualAutoValue(mode: .manual, value: "Dorian"),
|
||||
sections: [
|
||||
SongSection(
|
||||
id: "verse",
|
||||
type: .verse,
|
||||
title: "Verse",
|
||||
emotion: "yearning",
|
||||
energy: 3,
|
||||
productionDirection: "intimate opening"
|
||||
),
|
||||
SongSection(id: "chorus", type: .chorus, title: "Chorus", order: 1)
|
||||
],
|
||||
vocalists: [
|
||||
Vocalist(id: "lead", label: "Lead", voiceType: "clear alto", performanceStyle: "expressive")
|
||||
],
|
||||
productionDirections: [
|
||||
ProductionDirection(id: "chorus-width", sectionID: "chorus", text: "wide chorus"),
|
||||
ProductionDirection(id: "master", text: "warm tape saturation")
|
||||
]
|
||||
)
|
||||
|
||||
let output = try SongProjectPromptCompiler().compile(project: project)
|
||||
|
||||
XCTAssertEqual(
|
||||
output.stylePrompt,
|
||||
"Folk + Electronic; mood: Warm; Lead clear alto expressive; 108 BPM, key D minor, Dorian scale; emotion: Verse, yearning, energy 3; Chorus, joyful, energy 8, lift into release; production: Verse, intimate opening; Chorus, wide chorus; warm tape saturation"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user