{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Scene Description Training Entry", "description": "Schema for lyrics-to-visual scene description training data. Catches missing fields, wrong types, empty values, and unexpected fields.", "type": "object", "required": ["song", "beat", "lyric_line", "scene"], "properties": { "song": { "type": "string", "minLength": 1, "description": "Song title" }, "artist": { "type": "string", "minLength": 1, "description": "Artist or group name (missing in some files — flagged as warning)" }, "genre": { "type": "string", "minLength": 1, "description": "Musical genre" }, "bpm": { "type": "number", "minimum": 1, "description": "Beats per minute" }, "beat": { "type": "integer", "minimum": 1, "description": "Beat number within the song" }, "timestamp": { "type": "string", "pattern": "^[0-9]+:[0-5][0-9]$", "description": "Timestamp in M:SS or MM:SS format" }, "duration_seconds": { "type": "number", "minimum": 0, "description": "Duration in seconds" }, "duration": { "type": "string", "minLength": 1, "description": "Duration as string (e.g. '30s')" }, "mood_arc": { "oneOf": [ { "type": "string", "minLength": 1 }, { "type": "array", "items": { "type": "string" } } ], "description": "Optional mood progression arc" }, "lyric_line": { "type": "string", "minLength": 1, "description": "Lyric line(s) for this beat" }, "scene": { "type": "object", "required": ["mood", "colors", "composition", "description"], "properties": { "mood": { "type": "string", "minLength": 1, "description": "Emotional mood of the scene" }, "colors": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1, "description": "Visual color palette" }, "composition": { "type": "string", "minLength": 1, "description": "Shot composition description" }, "camera": { "type": "string", "minLength": 1, "description": "Camera movement or position" }, "camera_movement": { "type": "string", "minLength": 1, "description": "Camera movement (alternate field name)" }, "description": { "type": "string", "minLength": 10, "description": "Full visual scene description" } }, "additionalProperties": false } }, "additionalProperties": false }