Files
music-assistant/docs/DATA_MODEL.md
T
2026-09-15 23:20:48 +02:00

137 lines
2.6 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[]
VocalistPreset
- id
- label
- familyCategory
- regionOrigin (optional)
- voiceType (optional)
- genderSelection (optional)
- performanceStyle (optional)
- aliases[]
- searchTerms[]
LanguageCatalogItem
- id
- name
- familyCategory
- 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.