diff --git a/src/comfyworkflows/generate_video.json b/src/comfyworkflows/generate_video.json index ae030f3..1b9f71c 100644 --- a/src/comfyworkflows/generate_video.json +++ b/src/comfyworkflows/generate_video.json @@ -216,7 +216,7 @@ }, "63": { "inputs": { - "frame_rate": 32, + "frame_rate": 25, "loop_count": 0, "filename_prefix": "RADOMVIDEOMAKERVIDEO", "format": "video/h264-mp4", diff --git a/src/comfyworkflows/generate_video_light.json b/src/comfyworkflows/generate_video_light.json index 2a14b1c..5a96c4c 100644 --- a/src/comfyworkflows/generate_video_light.json +++ b/src/comfyworkflows/generate_video_light.json @@ -216,7 +216,7 @@ }, "63": { "inputs": { - "frame_rate": 32, + "frame_rate": 25, "loop_count": 0, "filename_prefix": "wan22_", "format": "video/h264-mp4", diff --git a/src/musicspot_generator/cetridesete/face.png b/src/musicspot_generator/cetridesete/face.png new file mode 100644 index 0000000..7b9705f Binary files /dev/null and b/src/musicspot_generator/cetridesete/face.png differ diff --git a/src/musicspot_generator/cetridesete/face2.png b/src/musicspot_generator/cetridesete/face2.png new file mode 100644 index 0000000..e1f4385 Binary files /dev/null and b/src/musicspot_generator/cetridesete/face2.png differ diff --git a/src/musicspot_generator/cetridesete/scenes.json b/src/musicspot_generator/cetridesete/scenes.json new file mode 100644 index 0000000..1e7e6d6 --- /dev/null +++ b/src/musicspot_generator/cetridesete/scenes.json @@ -0,0 +1,598 @@ +{ + "song": { + "title": "Četrdesete: Svjetlo kroz Maglu", + "artist": "Radni Front", + "genre": "Cinematic Pop/Rock", + "mood": "Gritty, uplifting, hopeful" + }, + "character": { + "bodyType": "average build, slightly athletic, in his 40s", + "hairStyle": "short side-part, light stubble", + "accessories": "leather messenger bag, analog watch, simple ring" + }, + "scenes": [ + { + "sceneId": 1, + "time": "Morning", + "location": "Foggy city street at dawn", + "outfit": "charcoal wool coat over navy blazer, white oxford shirt, dark chinos, leather derbies, grey scarf; takeaway coffee in hand", + "cuts": [ + { + "cutId": 1, + "pose": "walking briskly with coffee", + "action": "exhaling visible breath in cold air", + "camera": [ + "full-body frontal walk through light shafts in fog", + "low angle on shoes splashing a thin puddle" + ] + }, + { + "cutId": 2, + "pose": "pausing at crosswalk", + "action": "checking watch then stepping forward", + "camera": [ + "close-up on watch face catching sun flare", + "three-quarter side track across zebra lines" + ] + }, + { + "cutId": 3, + "pose": "tight grip on cup", + "action": "lifting cup for a sip", + "camera": [ + "macro fingers on cup sleeve with steam", + "profile head-and-shoulders backlit by hazy sun" + ] + }, + { + "cutId": 4, + "pose": "steady stride", + "action": "adjusting scarf in breeze", + "camera": [ + "telephoto compression down foggy avenue", + "rear follow shot with scarf rim-lit" + ] + }, + { + "cutId": 5, + "pose": "determined gaze", + "action": "looking ahead into sunlight", + "camera": [ + "tight face with soft lens bloom", + "over-shoulder toward blinding sky gap" + ] + } + ] + }, + { + "sceneId": 2, + "time": "Morning", + "location": "Tram interior rocking through city", + "outfit": "navy blazer, knit crewneck, white shirt, dark jeans, leather sneakers; coffee in hand", + "cuts": [ + { + "cutId": 1, + "pose": "standing in tram", + "action": "holding strap with one hand, coffee in the other", + "camera": [ + "medium inside tram, window condensation streaks", + "front angle from aisle with passing light bands" + ] + }, + { + "cutId": 2, + "pose": "leaning against pole", + "action": "checking phone briefly", + "camera": [ + "over-shoulder to phone screen glow", + "side profile with rim light from window" + ] + }, + { + "cutId": 3, + "pose": "looking out window", + "action": "soft smile seeing morning city", + "camera": [ + "through-glass face framed by droplets", + "exterior-to-interior angle catching reflection layers" + ] + }, + { + "cutId": 4, + "pose": "steady stance", + "action": "taking small sip as tram turns", + "camera": [ + "low angle on cup tilt and sleeve", + "rear quarter shot showing sway of carriage" + ] + }, + { + "cutId": 5, + "pose": "composed", + "action": "pocketing phone, focusing forward", + "camera": [ + "chest-up push-in down the aisle", + "top-down seat pattern with soft bloom" + ] + } + ] + }, + { + "sceneId": 3, + "time": "Morning", + "location": "Modern office desk with soft skylight", + "outfit": "light grey blazer, pale blue shirt, dark chinos, brown brogues; ID lanyard", + "cuts": [ + { + "cutId": 1, + "pose": "seated typing", + "action": "focused work with subtle nods", + "camera": [ + "medium desk-side angle with window beams", + "close-up fingers on keyboard with keycap sheen" + ] + }, + { + "cutId": 2, + "pose": "reviewing papers", + "action": "marking with pen", + "camera": [ + "top-down documents in stripey sunlight", + "front low angle across desk edge" + ] + }, + { + "cutId": 3, + "pose": "phone to ear", + "action": "short professional conversation", + "camera": [ + "profile with rim-lit jawline", + "over-shoulder to city glow outside" + ] + }, + { + "cutId": 4, + "pose": "stretching shoulders", + "action": "exhaling, sip of water", + "camera": [ + "medium with glass prisming light", + "close-up on water surface ripples" + ] + }, + { + "cutId": 5, + "pose": "refocused", + "action": "resuming typing with resolve", + "camera": [ + "front push-in past monitor edge", + "rear silhouette against bright window" + ] + } + ] + }, + { + "sceneId": 4, + "time": "Late Morning", + "location": "Office glass meeting room", + "outfit": "navy sport coat, white shirt, knit tie, tailored trousers", + "cuts": [ + { + "cutId": 1, + "pose": "standing at screen", + "action": "pointing to chart, calm tone", + "camera": [ + "three-quarter presenter through glass reflections", + "over-shoulder to slide glow on faces" + ] + }, + { + "cutId": 2, + "pose": "listening", + "action": "nodding, hands clasped", + "camera": [ + "medium frontal with rim edge light", + "tight hands interlaced catching sheen" + ] + }, + { + "cutId": 3, + "pose": "whiteboard note", + "action": "writing key word", + "camera": [ + "side on marker tip against board", + "over-shoulder on word under skylight stripe" + ] + }, + { + "cutId": 4, + "pose": "hand gestures", + "action": "framing idea in air", + "camera": [ + "front medium with floating dust motes", + "profile gesture silhouette against window" + ] + }, + { + "cutId": 5, + "pose": "closing remark", + "action": "small confident smile", + "camera": [ + "tight smile with gentle bloom", + "wide room applauding in soft backlight" + ] + } + ] + }, + { + "sceneId": 5, + "time": "Midday", + "location": "Quiet park bench under soft sun", + "outfit": "olive field jacket over white shirt, navy chinos, sneakers", + "cuts": [ + { + "cutId": 1, + "pose": "seated on bench", + "action": "unwrapping sandwich", + "camera": [ + "wide bench under dappled leaves", + "close-up foil crackle catching sparkles" + ] + }, + { + "cutId": 2, + "pose": "bite and look up", + "action": "watching birds", + "camera": [ + "tight mouthful with flare peeking", + "low up-angle to glowing canopy" + ] + }, + { + "cutId": 3, + "pose": "relaxed lean", + "action": "closing eyes briefly", + "camera": [ + "front push-in eyes closed in sun warmth", + "overhead bench and soft shadow lace" + ] + }, + { + "cutId": 4, + "pose": "checking phone", + "action": "soft smile at message", + "camera": [ + "over-shoulder to screen in shade", + "side profile with sun peeking lens flare" + ] + }, + { + "cutId": 5, + "pose": "standing stretch", + "action": "deep breath hands on hips", + "camera": [ + "rear sun halo and long shadow", + "front medium with leaf bokeh confetti" + ] + } + ] + }, + { + "sceneId": 6, + "time": "Afternoon", + "location": "Open office collaboration area", + "outfit": "rolled-sleeve shirt, blazer off, vest optional, dark trousers", + "cuts": [ + { + "cutId": 1, + "pose": "standing with teammates", + "action": "high-five and laugh", + "camera": [ + "wide group under skylight glow", + "tight palms meeting with light burst" + ] + }, + { + "cutId": 2, + "pose": "pointing at laptop", + "action": "explaining step-by-step", + "camera": [ + "over-shoulder to UI reflecting in eyes", + "front trio with bright window beams" + ] + }, + { + "cutId": 3, + "pose": "shared joke", + "action": "covering mouth laughing", + "camera": [ + "tight eyes creasing with sparkle", + "side candid smiles with lens bloom" + ] + }, + { + "cutId": 4, + "pose": "sticky note placement", + "action": "slapping idea on board", + "camera": [ + "macro note corner catching shine", + "front push-in to colorful board grid" + ] + }, + { + "cutId": 5, + "pose": "wrap-up clap", + "action": "small bow to team", + "camera": [ + "medium applause with soft halos", + "rear shoulders rim-lit against corridor" + ] + } + ] + }, + { + "sceneId": 7, + "time": "Evening", + "location": "Recording studio vocal booth", + "outfit": "black henley under dark blazer, dark jeans; studio headphones, pop filter", + "cuts": [ + { + "cutId": 1, + "pose": "standing at mic", + "action": "closing eyes and singing", + "camera": [ + "medium mic and pop filter with tube glow", + "profile head tilt with headphone sheen" + ] + }, + { + "cutId": 2, + "pose": "one hand on headphone", + "action": "finding pitch", + "camera": [ + "tight hand on ear cup", + "over-shoulder to waveform screen in control room" + ] + }, + { + "cutId": 3, + "pose": "leaning toward mic", + "action": "delivering powerful line", + "camera": [ + "front intense eyes past grille", + "low angle along mic stand to face" + ] + }, + { + "cutId": 4, + "pose": "step back", + "action": "nod to beat, smile", + "camera": [ + "wide booth with warm bokeh bulbs", + "tight smile reflected in glass" + ] + }, + { + "cutId": 5, + "pose": "hands open", + "action": "finishing phrase softly", + "camera": [ + "front soft flare across frame", + "overhead hands lowering into light cone" + ] + } + ] + }, + { + "sceneId": 8, + "time": "Golden Hour", + "location": "City park path with family", + "outfit": "sand blazer, light knit, dark denim; family in cozy casual", + "cuts": [ + { + "cutId": 1, + "pose": "holding partner’s hand", + "action": "walking with child skipping ahead", + "camera": [ + "rear wide with low sun flare", + "front medium through tree bokeh" + ] + }, + { + "cutId": 2, + "pose": "lifting child", + "action": "spinning gently", + "camera": [ + "front slow shutter light trails around", + "top-down arms forming circle with sun rim" + ] + }, + { + "cutId": 3, + "pose": "group hug", + "action": "closing eyes contentedly", + "camera": [ + "tight embrace hands with ring glint", + "side cheek-to-hair halo" + ] + }, + { + "cutId": 4, + "pose": "pointing to sky", + "action": "showing plane to child", + "camera": [ + "up-angle to contrail through warm haze", + "front medium faces reflecting sky" + ] + }, + { + "cutId": 5, + "pose": "hands intertwined", + "action": "walking toward camera", + "camera": [ + "front slow push with golden confetti bokeh", + "low angle on joined hands swinging" + ] + } + ] + }, + { + "sceneId": 9, + "time": "Night", + "location": "City viewpoint with beautiful skyline", + "outfit": "charcoal overcoat, black turtleneck, tailored trousers", + "cuts": [ + { + "cutId": 1, + "pose": "leaning on railing", + "action": "taking in skyline", + "camera": [ + "wide skyline as glittering backdrop", + "profile rim light from city glow" + ] + }, + { + "cutId": 2, + "pose": "deep breath", + "action": "exhale mist into night", + "camera": [ + "tight breath vapor lit by neon", + "rear silhouette against bokeh lights" + ] + }, + { + "cutId": 3, + "pose": "phone photo", + "action": "capturing skyline", + "camera": [ + "over-shoulder to bright screen framing towers", + "low angle to phone and light crown above" + ] + }, + { + "cutId": 4, + "pose": "hands in pockets", + "action": "swaying to distant music", + "camera": [ + "medium chest-up with drifting car streaks", + "tight shoe tapping in puddle reflection" + ] + }, + { + "cutId": 5, + "pose": "confident gaze", + "action": "looking past camera", + "camera": [ + "front tight eyes with city sparkles", + "top-down platform grid glimmering" + ] + } + ] + }, + { + "sceneId": 10, + "time": "Night", + "location": "Office district streets after hours", + "outfit": "dark blazer, open collar shirt, slim trousers, chelsea boots", + "cuts": [ + { + "cutId": 1, + "pose": "walking alone", + "action": "hands in pockets", + "camera": [ + "long-lens frontal with pearl-like streetlights", + "rear follow on wet pavement reflections" + ] + }, + { + "cutId": 2, + "pose": "pause under lamp", + "action": "looking up between towers", + "camera": [ + "upward angle of converging buildings and lamp star", + "side silhouette against lobby glow" + ] + }, + { + "cutId": 3, + "pose": "check messages", + "action": "small nod of relief", + "camera": [ + "over-shoulder phone light on face", + "handheld parallax of glass light columns" + ] + }, + { + "cutId": 4, + "pose": "crossing street", + "action": "steady stride", + "camera": [ + "wide zebra stripes with mirror reflections", + "low angle heel strike and passing headlight streak" + ] + }, + { + "cutId": 5, + "pose": "brief smile", + "action": "exhale, continue walking", + "camera": [ + "tight smile with neon glimmer", + "front slow push through flare streaks" + ] + } + ] + }, + { + "sceneId": 11, + "time": "Night", + "location": "Home living room, warm lamps", + "outfit": "soft cardigan over tee, lounge chinos, socks", + "cuts": [ + { + "cutId": 1, + "pose": "sinking into sofa", + "action": "deep relieved breath", + "camera": [ + "medium cozy frame with lamp bloom", + "low angle to floor lamp starburst" + ] + }, + { + "cutId": 2, + "pose": "family photo glance", + "action": "gentle smile at frame", + "camera": [ + "close-up photo glass catching sparkle", + "side hand brushing frame with glint" + ] + }, + { + "cutId": 3, + "pose": "stretch and yawn", + "action": "neck roll, relaxed shoulders", + "camera": [ + "front medium as light wraps softly", + "rear silhouette against curtained window halo" + ] + }, + { + "cutId": 4, + "pose": "notebook moment", + "action": "jotting tomorrow’s plan", + "camera": [ + "top-down page and pen tip glint", + "three-quarter profile calm focus" + ] + }, + { + "cutId": 5, + "pose": "closing lights", + "action": "switching lamp off", + "camera": [ + "tight finger on switch—tiny spark", + "wide room dimming to city twinkle outside" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/musicspot_generator/cetridesete/scenes2.json b/src/musicspot_generator/cetridesete/scenes2.json new file mode 100644 index 0000000..df6987b --- /dev/null +++ b/src/musicspot_generator/cetridesete/scenes2.json @@ -0,0 +1,68 @@ +{ + "song": { + "title": "Četrdesete: Svjetlo kroz Maglu", + "artist": "Radni Front", + "genre": "Cinematic Pop/Rock", + "mood": "Gritty, uplifting, hopeful" + }, + "character": { + "bodyType": "average build, slightly athletic, in his 40s", + "hairStyle": "short side-part, light stubble", + "accessories": "leather messenger bag, analog watch, simple ring" + }, + "scenes": [ + { + "sceneId": 1, + "time": "Morning", + "location": "Foggy city street at dawn", + "outfit": "down jacket, scarf, jeans, boots, t-shirt, hiphop style", + "cuts": [ + { + "cutId": 1, + "pose": "walking ", + "action": "exhaling visible breath in cold air", + "camera": [ + "full-body frontal walk through light shafts in fog", + "low angle on shoes splashing a thin puddle" + ] + }, + { + "cutId": 2, + "pose": "walking hands in pockets", + "action": "", + "camera": [ + "close-up on watch face catching sun flare", + "three-quarter side track across zebra lines" + ] + }, + { + "cutId": 3, + "pose": "standing hands in pockets", + "action": "", + "camera": [ + "macro fingers on cup sleeve with steam", + "profile head-and-shoulders backlit by hazy sun" + ] + }, + { + "cutId": 4, + "pose": "steady stride", + "action": "adjusting scarf in breeze", + "camera": [ + "telephoto compression down foggy avenue", + "rear follow shot with scarf rim-lit" + ] + }, + { + "cutId": 5, + "pose": "determined gaze", + "action": "looking ahead into sunlight", + "camera": [ + "tight face with soft lens bloom", + "over-shoulder toward blinding sky gap" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/musicspot_generator/cetridesete/song.mp3 b/src/musicspot_generator/cetridesete/song.mp3 new file mode 100644 index 0000000..17e0646 Binary files /dev/null and b/src/musicspot_generator/cetridesete/song.mp3 differ diff --git a/src/musicspot_generator/fire in the night/scenes.json b/src/musicspot_generator/fire in the night/scenes.json index 8833984..b237eba 100644 --- a/src/musicspot_generator/fire in the night/scenes.json +++ b/src/musicspot_generator/fire in the night/scenes.json @@ -1,827 +1,783 @@ { "song": { - "title": "Crimson Shadows", - "artist": "Nocturna", - "genre": "Gothic Metal", - "mood": "Dark, powerful, dramatic" + "title": "Svjetlo kroz Maglu", + "artist": "Radni Dan", + "genre": "Pop Rock / Motivational Rap", + "mood": "Hopeful, gritty, determined" }, "character": { - "bodyType": "slim yet strong presence", - "hairStyle": "long black hair with red streaks, slightly messy" + "bodyType": "average 40s male, sturdy build", + "hairStyle": "short neat hair with slight side part, light stubble", + "outfitPalette": "navy, charcoal, camel, white, subtle textures", + "defaultOutfit": "smart-casual: tailored blazer, oxford shirt (top button open), slim chinos, leather sneakers or derby shoes, minimalist watch, messenger bag" }, "scenes": [ { "sceneId": 1, - "time": "Night", - "location": "Ballroom with broken chandeliers and candles", - "outfit": "white gothic ball gown with lace sleeves", + "lyricAnchor": "intro", + "time": "Early Morning", + "location": "Foggy street in a quiet city block", + "outfit": "camel coat over navy blazer and white oxford, charcoal chinos, leather sneakers; steaming paper coffee cup in hand", + "lightFX": "soft ground fog, cool blue ambience, warm shop-window spill, rays through mist", "cuts": [ { "cutId": 1, - "pose": "standing tall in the center of the ballroom", - "action": "raising arms dramatically", + "pose": "walking steadily with coffee, shoulders relaxed", + "action": "breath visible in cold air", "camera": [ - "full body shot with chandeliers above", - "low angle from cracked floor", - "overhead view of gown spreading", - "face zoom in on serious look", - "back shot showing gown trail" + "full body tracking through fog with distant headlights bokeh", + "side shot catching coffee steam in backlight", + "face zoom in with gentle lens flare from streetlamp", + "overhead drone-lite glide showing puddle reflections", + "back shot with long god rays slicing mist" ] }, { "cutId": 2, - "pose": "leaning back scream", - "action": "shouting with wide-open mouth", + "pose": "pauses at crosswalk", + "action": "checks watch, sips coffee", "camera": [ - "face zoom in during scream", - "low angle emphasizing mouth open", - "side shot with candlelight shadows", - "zoom in to part of body trembling hand", - "overhead shot capturing scream posture" + "low angle shoe splash past a glowing puddle", + "medium shot watch face catching specular highlight", + "face zoom in through drifting fog", + "back shot red-to-green signal glow on mist", + "overhead crosswalk stripes fading into haze" ] }, { "cutId": 3, - "pose": "walking slowly", - "action": "dragging fingers on curtain", + "pose": "resumes walk", + "action": "adjusts strap of messenger bag", "camera": [ - "back shot trailing gown", - "side shot of hand on velvet", - "full body shot from distance", - "face zoom in on haunted gaze", - "low angle with curtain shadows" + "tracking three-quarter with storefront light streaks", + "side shot shallow DOF light orbs (bokeh)", + "face zoom in calm focus", + "reflected view in wet window pane", + "wide establishing with soft sunrise rim light" ] }, { "cutId": 4, - "pose": "kneeling on broken tiles", - "action": "holding necklace tightly", + "pose": "stops to let bicycle pass", + "action": "nods politely", "camera": [ - "overhead shot of kneeling pose", - "face zoom in with tears", - "low angle from shattered floor", - "side shot framing necklace", - "back shot with gown spread" + "over-shoulder bicycle headlights streaking", + "medium profile with fog swirls lit from back", + "ground-level reflection of both in puddle", + "wide silhouette against pale dawn sky", + "face close-up catching tiny snowlike mist droplets" ] }, { "cutId": 5, - "pose": "spinning mid-gown flare", - "action": "screaming with wide-open mouth mid-spin", + "pose": "steps onto tram platform edge", + "action": "exhales, looks down the track", "camera": [ - "face zoom in with hair flying", - "low angle capturing spin", - "overhead highlighting gown swirl", - "zoom in to mouth open", - "side shot with candle flames shaking" + "back shot rails vanishing into fog", + "side shot coffee steam crossing light beam", + "face zoom in hopeful gaze", + "overhead platform LEDs forming dotted trail", + "low angle rails with subtle lens flare" ] } ] }, { "sceneId": 2, - "time": "Night", - "location": "Dark graveyard with blood moon", - "outfit": "red gothic dress with corset and veil", + "lyricAnchor": "verse A", + "time": "Morning", + "location": "City tram interior, gently swaying", + "outfit": "navy blazer, white oxford, grey chinos; coffee cup; transit card", + "lightFX": "cool daylight through foggy windows, window streak glares, rhythmic flicker of tunnels", "cuts": [ { "cutId": 1, - "pose": "standing among gravestones", - "action": "lifting veil slowly", + "pose": "standing near door, one hand on pole", + "action": "sips coffee, eyes on passing streets", "camera": [ - "full body shot with gravestones", - "face zoom in through veil", - "overhead shot with moonlight", - "side shot with crosses behind", - "back shot with veil flowing" + "full body with window streaks bokeh outside", + "side shot with parallax of city blur", + "face zoom in catching soft rim light", + "reflection shot in tram door glass", + "overhead passengers’ silhouettes in soft haze" ] }, { "cutId": 2, - "pose": "bending forward toward the sky", - "action": "shouting with wide-open mouth at the blood moon", + "pose": "leans on pole", + "action": "checks phone briefly (calendar alert)", "camera": [ - "face zoom in from below", - "low angle with moon glow", - "overhead capturing scream to sky", - "side shot emphasizing mouth open", - "zoom in to part of body trembling hands" + "close on phone UI glow reflecting on face", + "low angle hand + coffee, light streaks above", + "medium shot over-shoulder to window", + "face zoom in steadied breathing", + "wide carriage shot with light pulses" ] }, { "cutId": 3, - "pose": "kneeling by gravestone", - "action": "touching carved letters", + "pose": "shifts stance with sway", + "action": "tightens blazer button", "camera": [ - "back shot with gravestone silhouette", - "low angle with fog rising", - "face zoom in teary", - "overhead with candle accents", - "side shot of hand on stone" + "profile tightening button with specular highlight", + "back shot rows of seats in perspective", + "face zoom in determined eyes", + "window reflection double exposure feel", + "handheld subtle sway for realism" ] }, { "cutId": 4, - "pose": "walking past tombs", - "action": "dragging gown through dirt", + "pose": "glances at a child smiling", + "action": "returns a soft smile", "camera": [ - "full body wide shot", - "back shot with gown trail", - "overhead with drifting fog", - "side shot framing gravestones", - "zoom in to part of body—bleeding palm" + "medium two-shot with warm sun beam", + "face zoom in softened expression", + "side shot catching dust motes in light", + "overhead strap lights forming leading line", + "wide interior with gentle motion blur" ] }, { "cutId": 5, - "pose": "clutching chest in anguish", - "action": "screaming again with wide-open mouth", + "pose": "tram slows", + "action": "prepares to step out", "camera": [ - "face zoom in intense", - "low angle shaky frame", - "overhead gown spread", - "side shot with blood moon glow", - "zoom in to part of body—trembling mouth" + "close on shoes as doors open, light washes floor", + "back shot doors parting with faint lens flare", + "face three-quarter with morning glow", + "low angle step-down with steam from cup", + "wide exterior as he exits into bright haze" ] } ] }, { "sceneId": 3, - "time": "Night", - "location": "Castle corridor with torches", - "outfit": "black velvet gothic gown with silver accents", + "lyricAnchor": "verse A", + "time": "Late Morning", + "location": "Modern office, clean lines, window light", + "outfit": "blazer off on chair, rolled sleeves, oxford + chinos; ID badge", + "lightFX": "soft skylight, bounce from white desks, screen glow highlights", "cuts": [ { "cutId": 1, - "pose": "walking slowly through corridor", - "action": "dragging hand across stone wall", + "pose": "seated typing", + "action": "focused, steady pace", "camera": [ - "back shot trailing behind", - "side shot hand scraping the wall", - "face zoom in haunted eyes", - "overhead torches flickering", - "full body wide frame" + "over-shoulder code/docs on monitor with gentle bloom", + "side shot keypress rhythm, wristwatch glint", + "face zoom in concentration with catchlight", + "overhead tidy desk grid, coffee ring", + "wide office depth with sunbeams" ] }, { "cutId": 2, - "pose": "standing between torches, head tilted back", - "action": "shouting with wide-open mouth", + "pose": "stands to stretch", + "action": "rolls shoulders, exhales", "camera": [ - "low angle torch flames", - "face zoom in mouth open", - "overhead capturing hall symmetry", - "side shot framing torches", - "zoom in to part of body—clenched fists" + "medium profile with light streak on edges", + "back shot window rim light tracing silhouette", + "face close slight smile of relief", + "low angle chair wheels reflecting light", + "wide airy office, dust motes floating" ] }, { "cutId": 3, - "pose": "kneeling near cracked stone", - "action": "holding broken goblet", + "pose": "points to sticky notes", + "action": "organizes tasks", "camera": [ - "overhead spilled goblet and shards", - "side shot with long shadow", - "face zoom in tragic expression", - "back shot of corridor depth", - "low angle torch flicker" + "macro sticky notes with pen glide", + "side shot hand gestures casting shadows", + "face zoom in purposeful look", + "overhead desk layout symmetry", + "rack focus foreground notes → him" ] }, { "cutId": 4, - "pose": "standing with hand raised", - "action": "reaching toward ceiling arches", + "pose": "quick call with headset", + "action": "nods, types one-handed", "camera": [ - "full body shot angled upward", - "low angle showing height of arches", - "face zoom in determination", - "back shot framed by arch", - "overhead with soft torch glow" + "face close with soft headset LED glow", + "side keyboard shot light skimming keys", + "back shot monitor reflections", + "low angle desk edge lens flare", + "wide office with colleagues as bokeh" ] }, { "cutId": 5, - "pose": "arched back against wall", - "action": "screaming again with wide-open mouth", + "pose": "final keystroke & save", + "action": "small fist pump", "camera": [ - "side shot hair flowing", - "face zoom in mouth open", - "low angle wall cracks", - "back shot dramatic shadow", - "overhead dim torch light" + "face zoom in subtle satisfaction", + "overhead enter-key press highlight", + "side shot progress bar completing", + "back shot sun patch moving across floor", + "wide with gentle parallax slide" ] } ] }, { "sceneId": 4, - "time": "Night", - "location": "Castle rooftop under stars and aurora", - "outfit": "red flowing gothic gown with crimson sash", + "lyricAnchor": "bridge", + "time": "Noon", + "location": "Office meeting room with glass walls", + "outfit": "puts blazer back on, pocket square minimal", + "lightFX": "top light soft panels, glass reflections, whiteboard glow", "cuts": [ { "cutId": 1, - "pose": "standing on rooftop edge", - "action": "arms spread to the sky", + "pose": "standing by screen", + "action": "presenting calmly", "camera": [ - "full body shot with starscape", - "overhead aurora curtains", - "face zoom in serene gaze", - "back shot with gown streaming", - "low angle with night sky dome" + "three-quarter presenter with screen bloom", + "side shot hand outlining charts", + "face zoom in composed tone", + "overhead table symmetry + notebooks", + "glass reflection two-layer composition" ] }, { "cutId": 2, - "pose": "kneeling on cold stone", - "action": "shouting with wide-open mouth into the wind", + "pose": "listening to feedback", + "action": "nods, writes key points", "camera": [ - "face zoom in under stars", - "overhead aurora swirl around", - "side shot mouth open profile", - "low angle wind tugging fabric", - "zoom in to part of body—trembling hand on stone" + "close pen tip gliding with light spark", + "profile with colleagues blurred", + "face zoom in attentive eyes", + "back shot city light filtering", + "low angle chair legs + floor sheen" ] }, { "cutId": 3, - "pose": "walking slowly along the ledge", - "action": "dragging gown across stone", + "pose": "whiteboard stand", + "action": "draws simple plan", "camera": [ - "back shot trailing fabric", - "side shot with aurora behind", - "face zoom in sorrow", - "overhead glinting stars", - "full body wide rooftop span" + "over-shoulder marker stroke with squeak", + "side shot board light wash", + "macro marker cap click", + "face zoom in confident smile", + "wide room with glass reflections" ] }, { "cutId": 4, - "pose": "sitting on the ledge", - "action": "staring at the blood moon", + "pose": "wraps up", + "action": "thanks team with small bow", "camera": [ - "face zoom in pale moonlight", - "side shot moon edge glow", - "back shot open horizon", - "overhead framing gown spread", - "low angle subtle lens flare" + "medium group claps, light bloom", + "back shot handshake silhouette", + "face close gratitude", + "overhead chairs and cables geometric", + "wide corridor outside glowing" ] }, { "cutId": 5, - "pose": "arched back with hair whipping", - "action": "screaming again with wide-open mouth", + "pose": "exits meeting room", + "action": "deep breath reset", "camera": [ - "face zoom in intensity", - "side shot mouth open", - "low angle aurora painted sky", - "overhead moon halo", - "back shot wind-rushed hair" + "hallway tracking with specular highlights", + "side shot blazer hem flutter", + "face zoom in renewed focus", + "reflection in glass wall double image", + "low angle sun slice across floor" ] } ] }, { "sceneId": 5, - "time": "Night", - "location": "Cathedral interior with neon red lamps", - "outfit": "white gothic lace dress with spiked choker", + "lyricAnchor": "bridge", + "time": "Early Afternoon", + "location": "City park bench under light trees", + "outfit": "blazer off, sleeves rolled, relaxed tie-less", + "lightFX": "dappled sun through leaves, pollen glitter bokeh, gentle breeze", "cuts": [ { "cutId": 1, - "pose": "standing at altar", - "action": "raising arms slowly", + "pose": "sitting on bench", + "action": "unwraps simple sandwich", "camera": [ - "full body altar frame", - "low angle stained glass glow", - "overhead neon lamps", - "face zoom in cold eyes", - "side shot candle rows" + "full body bench shot with leaf bokeh", + "side shot paper crinkle detail", + "face zoom in serene break", + "overhead lunch + watch on wrist", + "back shot path with cyclists light streaks" ] }, { "cutId": 2, - "pose": "in front of the altar", - "action": "shouting with wide-open mouth", + "pose": "takes first bite", + "action": "closes eyes a second", "camera": [ - "face zoom in wide scream", - "side shot neon wash", - "low angle altar cross", - "overhead long shadows", - "zoom in to part of body—tensed throat" + "close bite with sun rim on cheek", + "profile crumbs, shallow DOF", + "face zoom in small smile", + "wide park pond sparkle", + "low angle grass blades glowing" ] }, { "cutId": 3, - "pose": "kneeling in prayer", - "action": "clutching rosary tightly", + "pose": "checks notebook", + "action": "jots quick line", "camera": [ - "back shot neon cross silhouette", - "face zoom in closed eyes", - "overhead subtle aura", - "side shot trembling fingers", - "low angle pew shadows" + "macro ink glint", + "side shot wrist veins and light", + "overhead notebook grid clean", + "back shot kite in distant sky", + "face close pensive" ] }, { "cutId": 4, - "pose": "walking through pews", - "action": "gown brushing wood", + "pose": "sips water", + "action": "exhales, shoulders drop", "camera": [ - "full body wide aisle", - "back shot trailing fabric", - "overhead shadow mosaic", - "face zoom in haunted look", - "side shot cracked pew ends" + "close water bottle condensation sparkles", + "profile sip with sun flare", + "wide bench with trees swaying", + "ground-level ants-eye leaves", + "face gentle relief" ] }, { "cutId": 5, - "pose": "kneeling backward", - "action": "screaming again with wide-open mouth", + "pose": "stands to go", + "action": "tucks notebook into bag", "camera": [ - "face zoom in strained", - "overhead neon cross glow", - "side shot mouth open profile", - "low angle altar frame", - "zoom in to part of body—open mouth" + "back shot dust motes in sun beam", + "side shot bag flap catchlight", + "low angle steps from gravel", + "overhead bench now empty", + "wide exit through shimmering heat" ] } ] }, { "sceneId": 6, - "time": "Night", - "location": "Dungeon with chains and damp stone", - "outfit": "black gothic leather gown with lace gloves", + "lyricAnchor": "bridge → rap", + "time": "Afternoon", + "location": "Open office collaboration zone", + "outfit": "smart-casual with blazer on, sleeves half-rolled", + "lightFX": "big window shafts, whiteboard bounce, laptop screen glows", "cuts": [ { "cutId": 1, - "pose": "standing near dangling chains", - "action": "touching cold iron", + "pose": "huddled with team", + "action": "points at tablet, laughs", "camera": [ - "face zoom in fogged breath", - "side shot hand on chain", - "back shot against damp wall", - "low angle shadows of chains", - "overhead dim torch circle" + "three-quarter group with warm spill", + "side shot fingertip reflect on glass", + "face zoom in animated eyes", + "overhead table, sticky notes constellation", + "back shot sun flare between heads" ] }, { "cutId": 2, - "pose": "head thrown back", - "action": "shouting with wide-open mouth while gripping chains", + "pose": "pair-programming vibe", + "action": "nods at colleague’s suggestion", "camera": [ - "face zoom in raw scream", - "side shot taut chains", - "low angle wall fissures", - "overhead claustrophobic frame", - "zoom in to part of body—mouth close" + "over-shoulder code lines glow", + "profile double-bounce light", + "face close appreciative smirk", + "wide office as soft bokeh", + "macro key tap with sparkle" ] }, { "cutId": 3, - "pose": "kneeling, wrists lifted", - "action": "pulling against shackles", + "pose": "high-five moment", + "action": "quick celebratory clasp", "camera": [ - "face zoom in wet lashes", - "side shot trembling wrists", - "back shot chain stretch", - "overhead square of light", - "low angle torch sputter" + "hand slap in slow-mo micro flare", + "wide with cheering silhouettes", + "face zoom in spark of pride", + "back shot window halo", + "low angle chairs and shoe scuffs gleam" ] }, { "cutId": 4, - "pose": "standing and straining", - "action": "yanking chains from ring", + "pose": "whiteboard arrows", + "action": "draws bold box around goal", "camera": [ - "full body struggle shot", - "side shot metal tension", - "back shot elongated shadow", - "face zoom in fury", - "overhead dust falling" + "marker squeak macro with dust specks", + "side shot arm casting graphic shadow", + "face determined nod", + "overhead board geometry", + "wide team nodding" ] }, { "cutId": 5, - "pose": "arched back, wrists high", - "action": "screaming again with wide-open mouth", + "pose": "break breath", + "action": "looks out window to skyline", "camera": [ - "face zoom in contorted scream", - "side shot mouth open", - "overhead chains rattling", - "low angle shadow clawing up wall", - "zoom in to part of body—throat close" + "back shot silhouette and city shimmer", + "profile rim light on jawline", + "face close hopeful", + "low angle blinds lines across suit", + "wide room with golden haze creep" ] } ] }, { "sceneId": 7, - "time": "Morning", - "location": "Girly bedroom with dark lace curtains", - "outfit": "black pleated mini skirt, oversized white shirt, ripped stockings", + "LyricAnchor": "rap", + "time": "Late Afternoon", + "location": "Recording studio, vocal booth with pop filter and headphones", + "outfit": "black tee under blazer, dark jeans; studio sneakers", + "lightFX": "neon edge lights, VU meter glow, soft haze for beams", "cuts": [ { "cutId": 1, - "pose": "sitting on bed cross-legged", - "action": "playing with necklace charm", + "pose": "headphones on", + "action": "adjusts mic height behind pop filter", "camera": [ - "full body shot on bed", - "side shot necklace in hand", - "face zoom in subtle smile", - "overhead quilt folds", - "back shot window light through lace" + "face close through pop filter mesh bokeh", + "side mic silhouette with LED rim", + "overhead booth foam pattern", + "back shot cable drape glint", + "macro hands rolling knob with light tick" ] }, { "cutId": 2, - "pose": "leaning back over pillows", - "action": "shouting with wide-open mouth", + "pose": "eyes closed", + "action": "raps first bar with steady breath", "camera": [ - "face zoom in open mouth", - "side shot messy hair", - "low angle bed frame edge", - "overhead scream posture", - "zoom in to part of body—trembling hand" + "profile with breath not hitting mic (good distance)", + "face zoom in focused cadence", + "VU meter needles dancing", + "wide booth with purple-blue haze", + "low angle light bar lens flare" ] }, { "cutId": 3, - "pose": "lying sideways", - "action": "looking softly at camera", + "pose": "punch-in moment", + "action": "signals engineer, resumes", "camera": [ - "face zoom in gentle eyes", - "side shot pillow texture", - "overhead relaxed pose", - "back shot lace curtain glow", - "full body bed perspective" + "over-shoulder engineer glass reflection", + "side shot finger count-in", + "face close confident nod", + "macro record light switching on", + "wide studio cables lines" ] }, { "cutId": 4, - "pose": "standing by window", - "action": "touching glass", + "pose": "chorus take", + "action": "leans slightly, controlled power", "camera": [ - "face zoom in window reflection", - "side shot pale fingers on glass", - "overhead curtain shadow pattern", - "back shot from doorway", - "low angle diffused light" + "three-quarter with mic halo", + "face zoom in grit + hope", + "low angle stand and shock mount glint", + "back shot waveforms on screen", + "overhead booth ceiling star LEDs" ] }, { "cutId": 5, - "pose": "kneeling on bed", - "action": "screaming again with wide-open mouth", + "pose": "final word", + "action": "exhales, half smile", "camera": [ - "face zoom in scream", - "side shot mouth open profile", - "low angle trembling posture", - "overhead tangled sheets", - "zoom in to part of body—throat close" + "face close de-compress", + "side shot headphone slide off one ear", + "macro stop button press", + "wide studio with color wash fade", + "back shot door open to warm hall" ] } ] }, { "sceneId": 8, - "time": "Night", - "location": "Urban street with neon lights and wet pavement", - "outfit": "red tartan skirt, black crop top, fishnet stockings", + "lyricAnchor": "verse B", + "time": "Evening", + "location": "City park path with family", + "outfit": "soft knit over shirt, dark chinos; family in cozy layers", + "lightFX": "golden hour glow, lens flare peeks, fairy-light bokeh", "cuts": [ { "cutId": 1, - "pose": "walking on crosswalk", - "action": "flicking hair", + "pose": "walking hand-in-hand", + "action": "gentle chat, smile", "camera": [ - "full body wide crosswalk", - "side shot neon reflections", - "face zoom in smirk", - "back shot traffic lights", - "overhead city glow grid" + "full body back shot into sun", + "side shot swinging hands in flare", + "face close warm laugh lines", + "overhead trees and light leaks", + "low angle shoes kicking leaves sparkle" ] }, { "cutId": 2, - "pose": "standing under neon sign", - "action": "shouting with wide-open mouth", + "pose": "kid points at birds", + "action": "he kneels to show map", "camera": [ - "face zoom in neon bloom", - "side shot mouth open", - "low angle billboard glow", - "overhead zebra stripes", - "zoom in to part of body—clenched fists" + "two-shot knee level with soft glow", + "face close parental pride", + "over-shoulder simple map sketch", + "wide path dotted with fairy lights", + "macro leaf veins lit" ] }, { "cutId": 3, - "pose": "leaning on graffiti wall", - "action": "crossing arms with attitude", + "pose": "group selfie", + "action": "click with laughter", "camera": [ - "side shot tag texture", - "face zoom in cool gaze", - "back shot city night bokeh", - "overhead shadow frame", - "full body casual stance" + "phone POV smiling faces, sun starburst", + "side shot arm extended", + "back shot silhouettes + flare arc", + "overhead family circle", + "wide park twinkle lights on" ] }, { "cutId": 4, - "pose": "kneeling on sidewalk", - "action": "tracing chalk graffiti", + "pose": "rest on bench", + "action": "water break, shared bottle", "camera": [ - "overhead chalk lines", - "side shot hand drawing", - "face zoom in focused", - "back shot wet pavement shimmer", - "low angle neon bleed" + "medium sharing gesture backlit", + "face close gentle gratitude", + "low angle bottle condensation spark", + "overhead bench wood grain glow", + "wide with city edge twinkling" ] }, { "cutId": 5, - "pose": "jumping mid-beat", - "action": "screaming again with wide-open mouth in mid-air", + "pose": "stand to leave", + "action": "quick group hug", "camera": [ - "face zoom in scream", - "side shot mouth open", - "overhead body frozen mid-jump", - "back shot neon flare", - "zoom in to part of body—throat close" + "tight hug with sun blooming", + "side shot hands around shoulders", + "back shot long shadows merge", + "overhead crown of light around heads", + "wide path leading toward skyline" ] } ] }, { "sceneId": 9, - "time": "Afternoon", - "location": "Park bench under autumn trees", - "outfit": "black floral dress with lace stockings and boots", + "lyricAnchor": "verse B", + "time": "Night", + "location": "Overlook with clean city nightscape", + "outfit": "blazer back on, scarf added", + "lightFX": "city bokeh, cool-blue sky, subtle haze for star glints", "cuts": [ { "cutId": 1, - "pose": "sitting on bench", - "action": "looking down thoughtfully", + "pose": "hands on railing", + "action": "breath visible, quiet awe", "camera": [ - "full body bench shot", - "side shot fallen leaves", - "face zoom in pensive gaze", - "overhead bench frame", - "back shot winding path" + "full body with skyline glitter", + "profile face with neon reflection in eyes", + "back shot shoulders squared", + "low angle railing shine + lens flare", + "overhead city grid lines" ] }, { "cutId": 2, - "pose": "standing in leaf fall", - "action": "shouting with wide-open mouth to the sky", + "pose": "checks notes on phone", + "action": "adds a single word: 'continue'", "camera": [ - "face zoom in scream", - "side shot mouth open", - "low angle tree branches", - "overhead spinning leaves", - "zoom in to part of body—trembling hands" + "macro phone screen glow", + "side shot finger tap highlight", + "face close calm resolve", + "wide skyline as bokeh ocean", + "back shot scarf ripple" ] }, { "cutId": 3, - "pose": "lying on grass", - "action": "picking petals from a flower", + "pose": "exhale slowly", + "action": "pockets hands", "camera": [ - "overhead flower detail", - "face zoom in soft smile", - "side shot fingers on petals", - "back shot grassy field", - "full body relaxed frame" + "profile fogged breath in neon halo", + "low angle shoe on concrete edge", + "face zoom in quiet smile", + "overhead subtle city ray streak", + "wide with passing light trail" ] }, { "cutId": 4, - "pose": "walking along path", - "action": "hands in pockets", + "pose": "turns to camera", + "action": "small nod forward", "camera": [ - "back shot autumn walkway", - "side shot casual stride", - "face zoom in subtle grin", - "overhead tree shadows", - "full body natural stance" + "head-on medium with flare arch", + "close eyes determined brightness", + "side jawline rim light", + "back shot then whip-pan reveal city", + "wide crane up, city expands" ] }, { "cutId": 5, - "pose": "kneeling by the bench", - "action": "screaming again with wide-open mouth", + "pose": "steps away", + "action": "walks along overlook path", "camera": [ - "face zoom in intensity", - "side shot mouth open profile", - "low angle roots and soil", - "overhead leaf carpet", - "zoom in to part of body—throat close" + "tracking back shot bokeh river", + "side shot rail lights passing", + "face three-quarter confident", + "low angle puddle reflecting skyline", + "overhead path curve luminous" ] } ] }, { "sceneId": 10, - "time": "Afternoon", - "location": "Trendy café corner with plants and soft lamps", - "outfit": "gothic casual: black skirt, lace top, choker", + "lyricAnchor": "rap → end", + "time": "Night", + "location": "Office district after hours", + "outfit": "blazer + scarf, gloves optional", + "lightFX": "glass facade reflections, wet pavement neon, gentle drizzle mist", "cuts": [ { "cutId": 1, - "pose": "sitting at table", - "action": "smiling softly while stirring drink", + "pose": "walking alone between towers", + "action": "steady stride, chin up", "camera": [ - "full body cozy table shot", - "side shot spoon and cup", - "face zoom in gentle eyes", - "overhead latte foam swirl", - "back shot plant backdrop" + "full body on wet pavement mirror", + "side shot droplets catching light", + "face close focused calm", + "back shot towers converging lines", + "overhead umbrella silhouettes distant" ] }, { "cutId": 2, - "pose": "standing beside the table", - "action": "shouting with wide-open mouth", + "pose": "pauses at intersection", + "action": "inhales cool air", "camera": [ - "face zoom in bright lamps", - "side shot mouth open", - "low angle lamp glow", - "overhead table layout", - "zoom in to part of body—tensed throat" + "low angle traffic light glow on mist", + "profile breath plume", + "wide glass reflections kaleidoscope", + "macro droplet slide on sleeve", + "face close half-smile" ] }, { "cutId": 3, - "pose": "writing in notebook", - "action": "biting lip thoughtfully", + "pose": "checks tram schedule afar", + "action": "decides to walk instead", "camera": [ - "overhead page and pen", - "face zoom in focused eyes", - "side shot lace sleeve", - "back shot framed by chairs", - "full body seated posture" + "long lens heat-haze shimmer line", + "back shot step away from stop", + "side shot rhythmic footfalls", + "wide lone figure + city hum", + "overhead rain dot glitter" ] }, { "cutId": 4, - "pose": "sipping from cup", - "action": "looking away shyly", + "pose": "crosswalk stride", + "action": "bag strap adjustment", "camera": [ - "face zoom in eyes over rim", - "side shot cup touch", - "overhead saucer on table", - "back shot warm ambience", - "low angle lamp string bulbs" + "ground reflection of zebra stripes", + "three-quarter with neon banding", + "face close rain specks on cheek", + "low angle heel-toe cadence", + "wide car lights streak behind" ] }, { "cutId": 5, - "pose": "kneeling on chair", - "action": "screaming again with wide-open mouth", + "pose": "turns corner", + "action": "street opens to quieter block", "camera": [ - "face zoom in scream", - "side shot mouth open", - "low angle chair legs", - "overhead tabletop pattern", - "zoom in to part of body—throat close" + "back shot disappearing into warm alley glow", + "side shot brick wall glisten", + "overhead pocket of golden steam vent", + "face three-quarter softened by warmth", + "wide fade to gentle drizzle veil" ] } ] }, { "sceneId": 11, - "time": "Evening", - "location": "City rooftop with skyline lights", - "outfit": "casual gothic: leather jacket, mini skirt, torn tights", + "lyricAnchor": "end", + "time": "Late Night", + "location": "Home living room, cozy lamp pools", + "outfit": "cardigan over tee, soft pants, socks; glasses on table", + "lightFX": "warm lamps, TV ambient glow, window rain reflections", "cuts": [ { "cutId": 1, - "pose": "standing on edge", - "action": "arms open to the wind", + "pose": "sinks into sofa", + "action": "removes watch, exhales", "camera": [ - "full body skyline silhouette", - "back shot city bokeh", - "side shot hair lifted", - "overhead roof lines", - "face zoom in calm power" + "full body cozy frame with lamp bloom", + "macro watch buckle catchlight", + "face close relief", + "overhead coffee table still life", + "back shot curtain rain trails" ] }, { "cutId": 2, - "pose": "kneeling near the parapet", - "action": "shouting with wide-open mouth", + "pose": "scrolls photos", + "action": "smiles at family selfie", "camera": [ - "face zoom in stormy scream", - "side shot mouth open", - "low angle city glow", - "overhead concrete texture", - "zoom in to part of body—clenched fists" + "close phone screen glow on eyes", + "profile soft grin", + "wide living room warm pools", + "low angle socks on rug texture", + "back shot window city twinkle" ] }, { "cutId": 3, - "pose": "sitting on ledge", - "action": "looking down at traffic", + "pose": "leans back", + "action": "sips late tea", "camera": [ - "back shot roads below", - "side shot dangling feet", - "face zoom in reflective", - "overhead ledge line", - "full body relaxed sit" + "macro steam ribbon in lamp light", + "side shot cup handle highlight", + "face close calm closure", + "overhead tray symmetry", + "wide gentle rack focus to rain" ] }, { "cutId": 4, - "pose": "walking across roof", - "action": "wind blowing hair and jacket", + "pose": "turns off lamp", + "action": "room dims to TV glow", "camera": [ - "full body wide stride", - "side shot jacket flutter", - "back shot trailing steps", - "overhead roof grid", - "face zoom in focused" + "finger on switch micro flare", + "silhouette against window bokeh", + "face close eyes soft", + "low angle shadows lengthen", + "wide night hush settles" ] }, { "cutId": 5, - "pose": "small jump on roof seam", - "action": "screaming again with wide-open mouth", + "pose": "final glance to window", + "action": "small nod—tomorrow again", "camera": [ - "face zoom in scream", - "side shot mouth open", - "overhead mid-air frame", - "low angle skyline towers", - "zoom in to part of body—throat close" - ] - } - ] - }, - { - "sceneId": 12, - "time": "Night", - "location": "Underground subway platform with graffiti", - "outfit": "gothic streetwear: ripped jeans, black hoodie, silver chains", - "cuts": [ - { - "cutId": 1, - "pose": "standing on platform", - "action": "hands in pockets, head tilted", - "camera": [ - "full body trackside shot", - "side shot hoodie folds", - "face zoom in under tube light", - "overhead platform tiles", - "back shot tunnel perspective" - ] - }, - { - "cutId": 2, - "pose": "leaning toward the tunnel", - "action": "shouting with wide-open mouth", - "camera": [ - "face zoom in echoing mouth", - "side shot mouth open", - "low angle rail shine", - "overhead yellow line", - "zoom in to part of body—tensed throat" - ] - }, - { - "cutId": 3, - "pose": "sitting on bench", - "action": "head tilted down over chains", - "camera": [ - "back shot empty platform", - "side shot chain glint", - "face zoom in shadowed eyes", - "overhead bench geometry", - "full body moody sit" - ] - }, - { - "cutId": 4, - "pose": "walking along platform edge", - "action": "swinging arms slowly", - "camera": [ - "full body long leading lines", - "side shot sneaker scuff", - "face zoom in composed", - "overhead fluorescent bands", - "back shot receding tunnel" - ] - }, - { - "cutId": 5, - "pose": "arched back near the pillar", - "action": "screaming again with wide-open mouth", - "camera": [ - "face zoom in scream", - "side shot mouth open", - "low angle pillar grit", - "overhead tiled grid", - "zoom in to part of body—throat close" + "face three-quarter with faint smile", + "back shot rain tracing lines of light", + "macro drop racing down glass", + "wide living room serene", + "fade out on city reflections" ] } ] diff --git a/src/musicspot_generator/images.ts b/src/musicspot_generator/images.ts index 9e5ef71..95ff6be 100644 --- a/src/musicspot_generator/images.ts +++ b/src/musicspot_generator/images.ts @@ -4,6 +4,7 @@ import fs from 'fs/promises'; import { logger } from '../lib/logger'; import { callOpenAI } from '../lib/openai'; +import { callLMStudio } from '../lib/lmstudio'; import { generateImage as generateFaceImage } from '../lib/image-generator-face'; dotenv.config(); @@ -43,7 +44,7 @@ interface Server { } const DEFAULT_SIZE: Size = { width: 720, height: 1280 }; -const FOLDER = process.argv[2] || process.env.MUSICSPOT_FOLDER || 'oputstise'; +const FOLDER = process.argv[2] || process.env.MUSICSPOT_FOLDER || 'zagreb'; const FOLDER_SAFE = FOLDER.replace(/[/\\?%*:|"<>]/g, '_'); const FACE_SRC = path.resolve(`src/musicspot_generator/${FOLDER}/face.png`); const GENERATED_DIR = path.resolve('generated'); @@ -130,6 +131,10 @@ Describe clearly and concretely: - Action/Expression: ${cut.action} - Lighting: please be creative and make beautiful lighting, I like something like luminous, colorful +Important: +- adjust the outfit based on the camera framing, describe only what is visible. +For example, if the framing is a close-up of the face, do not mention the outfit at all. + Only respond with JSON. `.trim(); } @@ -143,6 +148,25 @@ async function getImagePromptFromOpenAI(req: string): Promise { return prompt.trim(); } +const IMAGE_PROMPT_PROVIDER = (process.env.IMAGE_PROMPT_PROVIDER || 'lmstudio').toLowerCase(); + +async function getImagePromptFromLMStudio(req: string): Promise { + const res = await callLMStudio(req); + const prompt = res?.imagePrompt || res?.image_prompt || res?.prompt; + if (!prompt || typeof prompt !== 'string') { + throw new Error('LM Studio failed to return imagePrompt JSON.'); + } + return prompt.trim(); +} + +async function getImagePrompt(req: string): Promise { + if (IMAGE_PROMPT_PROVIDER === 'openai') { + return getImagePromptFromOpenAI(req); + } + // default to LM Studio + return getImagePromptFromLMStudio(req); +} + function pickServer(servers: Server[], idx: number): Server { if (servers.length === 0) { throw new Error('No servers configured.'); @@ -197,10 +221,10 @@ async function main() { const imgPromptReq = buildImagePromptRequest(cfg.character, scene, cut, cameraIntent); let imagePrompt: string; try { - imagePrompt = await getImagePromptFromOpenAI(imgPromptReq); + imagePrompt = await getImagePrompt(imgPromptReq); } catch (err) { logger.error( - `OpenAI image prompt failed for scene ${scene.sceneId} cut ${cut.cutId} cam ${variantIndex}: ${err}` + `${IMAGE_PROMPT_PROVIDER.toUpperCase()} image prompt failed for scene ${scene.sceneId} cut ${cut.cutId} cam ${variantIndex}: ${err}` ); continue; } diff --git a/src/musicspot_generator/oputstise/oputstise_musicspot_s4_c1_v1.mp4 b/src/musicspot_generator/oputstise/oputstise_musicspot_s4_c1_v1.mp4 new file mode 100644 index 0000000..3b35b7d Binary files /dev/null and b/src/musicspot_generator/oputstise/oputstise_musicspot_s4_c1_v1.mp4 differ diff --git a/src/musicspot_generator/videos.ts b/src/musicspot_generator/videos.ts index b8e2e86..ac32135 100644 --- a/src/musicspot_generator/videos.ts +++ b/src/musicspot_generator/videos.ts @@ -43,7 +43,7 @@ interface Server { } const DEFAULT_SIZE: Size = { width: 720, height: 1280 }; -const FOLDER = process.argv[2] || process.env.MUSICSPOT_FOLDER || 'oputstise'; +const FOLDER = process.argv[2] || process.env.MUSICSPOT_FOLDER || 'zagreb'; const FOLDER_SAFE = FOLDER.replace(/[/\\?%*:|"<>]/g, '_'); const GENERATED_DIR = path.resolve('generated'); @@ -234,7 +234,7 @@ async function main() { serverForVideo.baseUrl!, serverForVideo.outputDir!, DEFAULT_SIZE, - true, + false, true ); diff --git a/src/musicspot_generator/zagreb/face.png b/src/musicspot_generator/zagreb/face.png new file mode 100644 index 0000000..ab0aa9e Binary files /dev/null and b/src/musicspot_generator/zagreb/face.png differ diff --git a/src/musicspot_generator/zagreb/scenes.json b/src/musicspot_generator/zagreb/scenes.json new file mode 100644 index 0000000..0305327 --- /dev/null +++ b/src/musicspot_generator/zagreb/scenes.json @@ -0,0 +1,834 @@ +{ + "character": { + "bodyType": "average", + "hairStyle": "long blonde hair tied in a man bun, white skin, blue eyes, beard" + }, + "scenes": [ + { + "sceneId": 1, + "season": "Autumn", + "time": "Evening", + "location": "Zagreb skyline viewpoint with light fog and warm city lights", + "outfit": "dark gray adidas joggers with white side stripes, black heavyweight hoodie (hood down), light quilted autumn jacket in charcoal, white adidas sneakers slightly scuffed, black knit beanie", + "cuts": [ + { + "cutId": 1, + "pose": "standing at viewpoint railing", + "action": "looking over city while exhaling misty breath", + "camera": [ + "fullbody shot with skyline and fog glow", + "closeup on eyes and misty breath", + "back shot framed by city lights" + ] + }, + { + "cutId": 2, + "pose": "hands in pockets", + "action": "nodding head slowly to beat", + "camera": [ + "fullbody shot silhouetted against skyline", + "closeup on subtle head nod and beard", + "side shot with drifting fog" + ] + }, + { + "cutId": 3, + "pose": "feet near railing edge", + "action": "dancing: tight heel-toe shuffle forward and back, ankles loose, arms swinging low in relaxed groove", + "camera": [ + "fullbody shot wide skyline backdrop", + "closeup on footwork over wet stone", + "side shot tracking along railing" + ] + }, + { + "cutId": 4, + "pose": "one arm lifted", + "action": "dancing: step-touch left/right with rolling shoulders and head bobs on the snare", + "camera": [ + "fullbody shot low angle, lights behind", + "closeup on rolling shoulders and hoodie fabric", + "back shot into glowing fog" + ] + }, + { + "cutId": 5, + "pose": "leaning against railing", + "action": "staring straight into lens with confident half-smile", + "camera": [ + "fullbody shot framed by rail", + "closeup on confident stare", + "side shot with fog drift" + ] + } + ] + }, + { + "sceneId": 2, + "season": "Autumn", + "time": "Day", + "location": "Inside Zagreb blue tram, sunlight streaks through windows", + "outfit": "mid-blue jeans, white cotton t-shirt under light gray zip hoodie, navy bomber jacket, clean white adidas sneakers, simple black wristwatch", + "cuts": [ + { + "cutId": 1, + "pose": "sitting by window", + "action": "writing lyrics in notebook as city blurs past", + "camera": [ + "fullbody shot seated by window", + "closeup on pen and notebook", + "side shot with city motion streaks" + ] + }, + { + "cutId": 2, + "pose": "standing near door holding rail", + "action": "dancing: rail-hold groove with shoulder ticks and toe taps in sync with tram sway", + "camera": [ + "fullbody shot vertical down tram aisle", + "closeup on toe taps on rubber floor", + "side shot from opposite pole" + ] + }, + { + "cutId": 3, + "pose": "leaning on glass", + "action": "fogging window with breath then drawing a small heart", + "camera": [ + "fullbody shot in window bay", + "closeup on fingertip tracing heart", + "side shot with sunlight flare" + ] + }, + { + "cutId": 4, + "pose": "feet apart, both hands on strap", + "action": "dancing: micro two-step in place with chest pops on backbeat", + "camera": [ + "fullbody shot in aisle", + "closeup on chest pops through hoodie", + "back shot down toward exit door" + ] + }, + { + "cutId": 5, + "pose": "stepping off tram", + "action": "placing foot on wet pavement and glancing up", + "camera": [ + "fullbody shot exiting with tram behind", + "closeup on sneaker hitting puddle", + "side shot tracking walk away" + ] + } + ] + }, + { + "sceneId": 3, + "season": "Autumn", + "time": "Morning", + "location": "Dolac market with red umbrellas, crisp air", + "outfit": "black adidas joggers, cream knit t-shirt under a denim trucker jacket, white adidas sneakers with gray socks, fingerless knit gloves", + "cuts": [ + { + "cutId": 1, + "pose": "walking through market", + "action": "nodding to vendors and smiling", + "camera": [ + "fullbody shot weaving among umbrellas", + "closeup on smile and beard", + "side shot with shoppers blurred" + ] + }, + { + "cutId": 2, + "pose": "open space between stalls", + "action": "dancing: pivot-spin on heel, one arm slicing air, stopping on beat", + "camera": [ + "fullbody shot centered under umbrellas", + "closeup on pivoting sneaker", + "back shot with umbrellas radiating" + ] + }, + { + "cutId": 3, + "pose": "holding an apple", + "action": "taking a bite and chuckling", + "camera": [ + "fullbody shot framed by produce colors", + "closeup on bite and beard", + "side shot with vendor in bokeh" + ] + }, + { + "cutId": 4, + "pose": "near stall edge", + "action": "dancing: side-step bounce with finger snaps and quick shoulder check", + "camera": [ + "fullbody shot on cobblestone", + "closeup on finger snaps", + "side shot past crates of apples" + ] + }, + { + "cutId": 5, + "pose": "sitting on bench", + "action": "exhaling a long misty breath up to sky", + "camera": [ + "fullbody shot bench among umbrellas", + "closeup on breath plume", + "back shot to morning light" + ] + } + ] + }, + { + "sceneId": 4, + "season": "Autumn", + "time": "Afternoon", + "location": "Graffiti alley glowing with neon tubes and hanging fog", + "outfit": "charcoal adidas joggers, navy heavyweight hoodie layered under a black denim jacket, white adidas sneakers worn at toes, charcoal beanie, silver chain", + "cuts": [ + { + "cutId": 1, + "pose": "line with two friends", + "action": "dancing: synchronized stomp-stomp-slide combo with shoulder hits (together)", + "camera": [ + "fullbody shot of trio in wide alley", + "closeup on synchronized sneakers", + "side shot panning across the line" + ] + }, + { + "cutId": 2, + "pose": "center of small circle", + "action": "dancing: knee spin to floor to knee up while friends clap and hype (together focus on him)", + "camera": [ + "fullbody shot near ground level", + "closeup on balancing palm and sleeve", + "back shot showing friends clapping" + ] + }, + { + "cutId": 3, + "pose": "leaning on wall", + "action": "rapping directly to camera, neon flicker behind", + "camera": [ + "fullbody shot against graffiti panel", + "closeup on lips and breath in cold air", + "side shot with neon reflections" + ] + }, + { + "cutId": 4, + "pose": "shoulder to shoulder with friends", + "action": "dancing: side-step shuffle with hand waves and head whips (together)", + "camera": [ + "fullbody shot three-wide groove", + "closeup on hand waves across frame", + "back shot down glowing alley" + ] + }, + { + "cutId": 5, + "pose": "arms stretched open", + "action": "looking up as fog lifts around lights", + "camera": [ + "fullbody shot silhouette in neon haze", + "closeup on eyes lit by tubes", + "side shot past a painted mural" + ] + } + ] + }, + { + "sceneId": 5, + "season": "Autumn", + "time": "Evening", + "location": "Sava riverbank at golden hour with low mist", + "outfit": "mid-wash jeans, black long-sleeve tee under olive lightweight parka, white adidas sneakers with darker laces, gray knit scarf", + "cuts": [ + { + "cutId": 1, + "pose": "walking riverside", + "action": "dancing: loose arm swing with heel peels and forward glide", + "camera": [ + "fullbody shot along river path", + "closeup on heel peel on damp gravel", + "side shot with river reflections" + ] + }, + { + "cutId": 2, + "pose": "hands in parka pockets", + "action": "gazing at sun reflecting on water", + "camera": [ + "fullbody shot silhouette at bank", + "closeup on eyes catching gold", + "back shot toward low sun" + ] + }, + { + "cutId": 3, + "pose": "standing by railing", + "action": "tapping rhythm on rail with knuckles", + "camera": [ + "fullbody shot framed by rail lines", + "closeup on tapping knuckles", + "side shot with mist ribboning" + ] + }, + { + "cutId": 4, + "pose": "open space at water edge", + "action": "dancing: slide-to-cross step with chest pop accent and arm sweep", + "camera": [ + "fullbody shot river behind", + "closeup on chest pop under tee", + "side shot tracking along water" + ] + }, + { + "cutId": 5, + "pose": "head tilted back", + "action": "breathing out slowly, eyes closed", + "camera": [ + "fullbody shot with fading sun", + "closeup on breath plume dispersing", + "back shot to amber sky" + ] + } + ] + }, + { + "sceneId": 6, + "season": "Autumn", + "time": "Night", + "location": "Ban Jelačić Square with neon ads and light fog", + "outfit": "black adidas joggers, gray t-shirt, slate bomber jacket, white adidas sneakers, fingerless gloves", + "cuts": [ + { + "cutId": 1, + "pose": "group line facing camera", + "action": "dancing: bounce-bounce-step pattern with knee lifts in unison (together)", + "camera": [ + "fullbody shot of group centered in square", + "closeup on synchronized knees", + "side shot with neon bokeh" + ] + }, + { + "cutId": 2, + "pose": "front of dance circle", + "action": "dancing: spin in, arms open, stop on beat with chest hit (together feature)", + "camera": [ + "fullbody shot in circle opening", + "closeup on arm extension and jacket fold", + "back shot toward statue and lights" + ] + }, + { + "cutId": 3, + "pose": "friends behind clapping", + "action": "rapping at lens with fog swirling", + "camera": [ + "fullbody shot square tiles reflecting", + "closeup on lips and beard", + "side shot past cheering friends" + ] + }, + { + "cutId": 4, + "pose": "two friends flanking", + "action": "dancing: traveling shuffle diagonally with toe digs and head tilts (together)", + "camera": [ + "fullbody shot three-across traveling", + "closeup on toe digs kicking sparks of water", + "back shot crossing square" + ] + }, + { + "cutId": 5, + "pose": "hands on hips", + "action": "smiling up at neon glow", + "camera": [ + "fullbody shot slight low angle", + "closeup on smiling eyes", + "side shot with tram passing blur" + ] + } + ] + }, + { + "sceneId": 7, + "season": "Autumn", + "time": "Day", + "location": "Corner café with fogged windows and warm Edison bulbs", + "outfit": "dark jeans, soft oatmeal t-shirt, forest-green hoodie under tan canvas jacket, white adidas sneakers, wool cap", + "cuts": [ + { + "cutId": 1, + "pose": "seated with two friends at table", + "action": "dancing: table-top beat — finger drumming while shoulders groove (together)", + "camera": [ + "fullbody shot across small table", + "closeup on finger rhythms on wood", + "side shot with fogged window" + ] + }, + { + "cutId": 2, + "pose": "standing by chair facing friend", + "action": "dancing: mirrored mini two-step and clap on two (together)", + "camera": [ + "fullbody shot of paired groove", + "closeup on clapping hands", + "back shot toward bar lights" + ] + }, + { + "cutId": 3, + "pose": "holding coffee cup", + "action": "blowing steam off cup and smirking", + "camera": [ + "fullbody shot seated relaxed", + "closeup on steam curling", + "side shot with bulbs in bokeh" + ] + }, + { + "cutId": 4, + "pose": "friends around hyping", + "action": "dancing: quick spin ending in finger point to camera (together energy)", + "camera": [ + "fullbody shot between tables", + "closeup on finger point and grin", + "back shot past other patrons" + ] + }, + { + "cutId": 5, + "pose": "leaning back in chair", + "action": "exhaling lightly, calm confidence", + "camera": [ + "fullbody shot reclined posture", + "closeup on relaxed eyes", + "side shot across window condensation" + ] + } + ] + }, + { + "sceneId": 8, + "season": "Autumn", + "time": "Evening", + "location": "Old Zagreb apartment balcony with laundry lines and city fog", + "outfit": "black adidas joggers, slate long-sleeve t-shirt under navy quilted vest, white adidas sneakers, knit scarf", + "cuts": [ + { + "cutId": 1, + "pose": "leaning on rail under warm bulb", + "action": "writing lyric line in notebook", + "camera": [ + "fullbody shot balcony edge", + "closeup on pen and paper", + "side shot past swaying laundry" + ] + }, + { + "cutId": 2, + "pose": "hands lifted", + "action": "dancing: shoulder rolls with slow side travel, wrists loose", + "camera": [ + "fullbody shot city behind", + "closeup on rolling shoulders", + "back shot toward foggy rooftops" + ] + }, + { + "cutId": 3, + "pose": "center balcony tile", + "action": "dancing: foot slide-cross with quick head nod accents", + "camera": [ + "fullbody shot top-down slight", + "closeup on sliding sneakers on tiles", + "side shot along rail" + ] + }, + { + "cutId": 4, + "pose": "headphones on", + "action": "nodding in time, eyes closed", + "camera": [ + "fullbody shot under balcony lamp", + "closeup on serene face and beard", + "back shot to dim streetlights" + ] + }, + { + "cutId": 5, + "pose": "sitting on chair", + "action": "long breath into cold night air", + "camera": [ + "fullbody shot with chair legs angled", + "closeup on breath plume", + "side shot from doorway" + ] + } + ] + }, + { + "sceneId": 9, + "season": "Autumn", + "time": "Day", + "location": "Neighborhood street football court, leaves on ground", + "outfit": "navy tracksuit top, black adidas joggers, white adidas sneakers with turf dust, simple beanie", + "cuts": [ + { + "cutId": 1, + "pose": "triangle with friends", + "action": "passing football quickly between feet (together)", + "camera": [ + "fullbody shot wide half-court", + "closeup on ball taps and passes", + "side shot through metal fence" + ] + }, + { + "cutId": 2, + "pose": "center circle", + "action": "dancing: soccer-shuffle — toe taps on ball with hip sway (together)", + "camera": [ + "fullbody shot center circle", + "closeup on rapid toe taps", + "back shot with friends cheering" + ] + }, + { + "cutId": 3, + "pose": "near goalpost", + "action": "dancing: step-over fake into spin and pose (solo flair)", + "camera": [ + "fullbody shot near net", + "closeup on foot feint over ball", + "side shot across goal mesh" + ] + }, + { + "cutId": 4, + "pose": "leaning on post", + "action": "chuckling at camera, breath visible", + "camera": [ + "fullbody shot framed by net", + "closeup on smile and breath", + "back shot to autumn trees" + ] + }, + { + "cutId": 5, + "pose": "group line on sideline", + "action": "dancing: circle footwork — alternating shuffles in and out (together)", + "camera": [ + "fullbody shot line routine", + "closeup on synchronized steps", + "side shot along chalk line" + ] + } + ] + }, + { + "sceneId": 10, + "season": "Autumn", + "time": "Night", + "location": "Rainy cobblestone street with neon reflections", + "outfit": "black jeans, charcoal hoodie with hood up, water-resistant black shell jacket, white adidas sneakers wet with rain", + "cuts": [ + { + "cutId": 1, + "pose": "mid-street", + "action": "kicking puddle to splash arcs of neon water", + "camera": [ + "fullbody shot centered on reflections", + "closeup on splash around sneaker", + "back shot with neon signs" + ] + }, + { + "cutId": 2, + "pose": "feet planted wide", + "action": "dancing: chest pulse on beat with slow head roll, rain dripping off brim", + "camera": [ + "fullbody shot silhouette in rain", + "closeup on chest pulse through hoodie", + "side shot with water streaks" + ] + }, + { + "cutId": 3, + "pose": "arms open", + "action": "letting rain hit face, eyes closed", + "camera": [ + "fullbody shot T-pose slight", + "closeup on raindrops on beard", + "back shot with street glow" + ] + }, + { + "cutId": 4, + "pose": "pivot foot ready", + "action": "dancing: 360° rain spin with heel skid and jacket flare", + "camera": [ + "fullbody shot tracking spin", + "closeup on heel skid and spray", + "side shot following arc" + ] + }, + { + "cutId": 5, + "pose": "hood low", + "action": "staring into lens, breath steaming", + "camera": [ + "fullbody shot still in rain", + "closeup on intense eyes", + "back shot with wet cobbles" + ] + } + ] + }, + { + "sceneId": 11, + "season": "Autumn", + "time": "Morning", + "location": "Zagreb Cathedral steps in pale fog", + "outfit": "dark jeans, black crew tee, gray wool overcoat, white adidas sneakers, knit gloves", + "cuts": [ + { + "cutId": 1, + "pose": "sitting mid-steps", + "action": "writing lyrics steadily", + "camera": [ + "fullbody shot wide steps and spires", + "closeup on pen strokes", + "side shot with drifting fog" + ] + }, + { + "cutId": 2, + "pose": "standing arms open", + "action": "exhaling long breath to sky", + "camera": [ + "fullbody shot facing façade", + "closeup on breath plume", + "back shot to gothic towers" + ] + }, + { + "cutId": 3, + "pose": "cleared area on steps", + "action": "dancing: step-tap pattern up two steps, back down, snap on beat", + "camera": [ + "fullbody shot across steps", + "closeup on step taps", + "side shot along handrail" + ] + }, + { + "cutId": 4, + "pose": "headphones on", + "action": "slow nod timing to kick and snare", + "camera": [ + "fullbody shot centered on landing", + "closeup on nod and beard", + "back shot to open square" + ] + }, + { + "cutId": 5, + "pose": "hands in coat pockets", + "action": "looking up the tower silently", + "camera": [ + "fullbody shot low angle", + "closeup on upward gaze", + "side shot with stone texture" + ] + } + ] + }, + { + "sceneId": 12, + "season": "Autumn", + "time": "Night", + "location": "Lantern-lit garden path with candle clusters and light ground fog", + "outfit": "black adidas joggers, charcoal long-sleeve tee, midnight blue bomber, white adidas sneakers catching candle glints", + "cuts": [ + { + "cutId": 1, + "pose": "walking along lantern path", + "action": "lifting a lantern and holding it forward", + "camera": [ + "fullbody shot through lantern aisle", + "closeup on lantern glow on face", + "back shot with lantern trail" + ] + }, + { + "cutId": 2, + "pose": "small clearing", + "action": "dancing: lantern in left hand, slow side-glide with soft wrist circles", + "camera": [ + "fullbody shot framed by candles", + "closeup on circling wrist and flame", + "side shot across floating fog" + ] + }, + { + "cutId": 3, + "pose": "at small garden table", + "action": "resting chin on hands, dreamy stare", + "camera": [ + "fullbody shot seated with lantern foreground", + "closeup on gentle eyes", + "back shot to candle clusters" + ] + }, + { + "cutId": 4, + "pose": "beneath hanging lights", + "action": "dancing: slow turn with arm rise, ending in still pose under lights", + "camera": [ + "fullbody shot low angle to lights", + "closeup on raised palm", + "side shot passing candle bokeh" + ] + }, + { + "cutId": 5, + "pose": "bare path", + "action": "spinning lightly as jacket hem flows", + "camera": [ + "fullbody shot tracking spin", + "closeup on jacket swirl", + "back shot retreating down path" + ] + } + ] + }, + { + "sceneId": 13, + "season": "Autumn", + "time": "Evening", + "location": "Warm recording studio with wooden panels, microphone on stand with pop filter, soft amber lamps", + "outfit": "charcoal adidas joggers, black heavyweight t-shirt, dark zip hoodie open at chest, studio headphones, white adidas sneakers", + "cuts": [ + { + "cutId": 1, + "pose": "standing at mic, one hand on headphones", + "action": "singing through pop filter with eyes closed", + "camera": [ + "fullbody shot booth and panels", + "closeup on lips behind pop filter fabric", + "side shot across mic arm" + ] + }, + { + "cutId": 2, + "pose": "one hand gripping mic stand", + "action": "dancing: subtle knee bounce and torso sway while holding pitch", + "camera": [ + "fullbody shot between panels", + "closeup on torso sway and hoodie folds", + "back shot from behind pop filter" + ] + }, + { + "cutId": 3, + "pose": "leaning slightly toward mic", + "action": "soft smile between lines, breath visible", + "camera": [ + "fullbody shot centered on stand", + "closeup on smile and beard texture", + "side shot with amber lamp flare" + ] + }, + { + "cutId": 4, + "pose": "adjusting headphones", + "action": "dancing: micro step-touch in place with shoulder ticks as chorus hits", + "camera": [ + "fullbody shot framed by acoustic panels", + "closeup on headphone cup and hand", + "back shot over shoulder into booth glass" + ] + }, + { + "cutId": 5, + "pose": "stool behind mic", + "action": "holding lyric sheet steady, one line delivered", + "camera": [ + "fullbody shot seated by stand", + "closeup on lyric sheet print", + "side shot past pop filter ring" + ] + } + ] + }, + { + "sceneId": 14, + "season": "Autumn", + "time": "Day", + "location": "Minimalist white studio booth, diffused panels, microphone with pop filter", + "outfit": "light gray adidas joggers, crisp white t-shirt, soft white zip hoodie, clean white adidas sneakers, over-ear studio headphones", + "cuts": [ + { + "cutId": 1, + "pose": "sitting on white stool at mic", + "action": "singing gently into pop filter with steady breath", + "camera": [ + "fullbody shot bright white booth", + "closeup on mouth behind pop fabric", + "side shot along mic arm and cable" + ] + }, + { + "cutId": 2, + "pose": "standing, lyric sheet in left hand", + "action": "dancing: soft sway with sheet hand marking the beat while delivering a phrase", + "camera": [ + "fullbody shot against white wall", + "closeup on sheet hand pulsing beat", + "back shot to frosted panel glow" + ] + }, + { + "cutId": 3, + "pose": "head slightly tilted", + "action": "smiling at the take, exhale visible in cool booth", + "camera": [ + "fullbody shot centered in booth", + "closeup on gentle smile", + "side shot with panel edge parallax" + ] + }, + { + "cutId": 4, + "pose": "hands lightly on headphones", + "action": "dancing: tiny step-rock left-right, shoulders ticking to metronome", + "camera": [ + "fullbody shot with mic foreground", + "closeup on headphone cushions and fingers", + "back shot over shoulder to pop filter" + ] + }, + { + "cutId": 5, + "pose": "one hand on mic stand", + "action": "holding final note clean through pop filter", + "camera": [ + "fullbody shot with stand and cable", + "closeup on pop filter mesh catching light", + "side shot from booth door" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/musicspot_generator/zagreb/song.mp3 b/src/musicspot_generator/zagreb/song.mp3 new file mode 100644 index 0000000..f6cdacc Binary files /dev/null and b/src/musicspot_generator/zagreb/song.mp3 differ