119 lines
2.4 KiB
Markdown
119 lines
2.4 KiB
Markdown
# Song Project --- Draft Data Model
|
|
|
|
This schema is intentionally provider-neutral and should evolve before
|
|
implementation is locked.
|
|
|
|
``` text
|
|
SongProject
|
|
- id
|
|
- title
|
|
- idea
|
|
- duration
|
|
- conversationMode: auto | discuss
|
|
- languages[]
|
|
- dialects[]
|
|
- arabicPronunciationSettings
|
|
- genres[]
|
|
- moods[]
|
|
- emotionalArc[]
|
|
- bpm
|
|
- key
|
|
- scale
|
|
- maqam
|
|
- structureMode: manual | auto
|
|
- sections[]
|
|
- instruments[]
|
|
- vocalists[]
|
|
- lyrics
|
|
- productionDirections[]
|
|
- productionMode: manual | auto
|
|
- userLocks[]
|
|
- sunoOutput
|
|
- versions[]
|
|
- createdAt
|
|
- updatedAt
|
|
|
|
InstrumentCatalogItem
|
|
- id
|
|
- name
|
|
- familyCategory
|
|
- regionOrigin (optional)
|
|
- aliases[]
|
|
- searchTerms[]
|
|
|
|
GenreStyleCatalogItem
|
|
- id
|
|
- name
|
|
- familyCategory
|
|
- regionOrigin (optional)
|
|
- aliases[]
|
|
- searchTerms[]
|
|
|
|
SongSection
|
|
- id
|
|
- type (intro, verse, preChorus, chorus, bridge, outro, custom)
|
|
- title
|
|
- startTime
|
|
- endTime
|
|
- lyrics
|
|
- emotion
|
|
- energy
|
|
- vocalDirection
|
|
- productionDirection
|
|
|
|
InstrumentTrack
|
|
- instrumentId
|
|
- selected
|
|
- variant
|
|
- playingStyle
|
|
- role
|
|
- autoArrangementEnabled
|
|
- placements[]
|
|
|
|
Auto-decision behavior
|
|
- The AI may update song sections only when structureMode is auto.
|
|
- The AI may update an instrument's role, playing style and placements only
|
|
when autoArrangementEnabled is true for that selected instrument.
|
|
- The AI may fill BPM, key, scale and maqam only when their individual
|
|
ManualAutoValue mode is auto.
|
|
- The AI may update production directions only when productionMode is auto.
|
|
- Manual values remain authoritative when automatic decisions are applied.
|
|
|
|
Discuss mode behavior
|
|
- When conversationMode is discuss, the AI receives the current Song Project
|
|
and conversation context, then returns follow-up questions before a project
|
|
decision is applied.
|
|
- A discussion response does not itself modify the Song Project.
|
|
|
|
User-lock behavior
|
|
- userLocks records update scopes explicitly locked by the user.
|
|
- AI updates for locked scopes are ignored; every other accepted AI update must
|
|
still preserve Manual/Auto choices.
|
|
|
|
InstrumentPlacement
|
|
- sectionId (optional)
|
|
- startTime (optional)
|
|
- endTime (optional)
|
|
- direction
|
|
|
|
Vocalist
|
|
- id
|
|
- label
|
|
- voiceType
|
|
- genderSelection
|
|
- performanceStyle
|
|
- assignedSections[]
|
|
|
|
SunoOutput
|
|
- lyricsText
|
|
- stylePrompt
|
|
- additionalFields
|
|
- generatedAt
|
|
```
|
|
|
|
## Override Rule
|
|
|
|
Explicit user values are authoritative. AI may fill missing values or
|
|
propose changes, but must not silently replace locked/manual user
|
|
choices.
|