Spotify concept ad
How it was made with Ice Motion Director, from the prompt to the delivered film.
Unofficial concept, not affiliated with Spotify
The film
The prompt
Make an ad for Spotify, 35 seconds to a minute long, with an Arabic version and an English version.
Show the original, exactly as typed (Arabic)
Translated from Arabic.
اعمل إعلان لسبوتيفاي، مدته من 35 ثانية لدقيقة، ونسخة عربي ونسخة إنجليزي.
- Film type
- Brand film
- Route
film- How it ran
- One prompt (auto mode)
- Size
- Standard
- Published
- 21 October 2026
Delivered
- English, 16:9, 0:35
How it was made
- Agent
- Claude Code 2.1.303 (desktop app)
- Model
- claude-opus-5-5
- Effort
- xhigh
- Sub-agents
- A director session, research agents, concept and stage critics, rework and verify critics, picture and sound critics, a cold viewer for the clarity read, the stage approver and a sound designer
- Made on
- 20 October 2026 to 21 October 2026
- Start to delivery
- 31 h 36 min
- Active work
- 15 h 43 min
- Tokens
- 1.3B in total, 3.6M of them output
- API cost
- $565.98
Made on a Claude Code subscription, so no token was billed. The API cost is what the same tokens would cost at Anthropic's list API prices on 31 October 2026 (the Claude API pricing page), with the same prompt caching. Start to delivery runs from the first prompt to the delivered film; active work leaves out waiting for answers and usage-limit pauses. Work after delivery, such as the case study export and the site translations, is not counted.
How it got here
The run as it happened, step by step, from the prompt to delivery, on the run's own clock.
The prompt
One line at night: a Spotify ad, 35 seconds to a minute, in Arabic and English. The owner went to sleep and said not to stop for questions, so the run went fully automatic and every decision was researched and logged with its reason and source.
Draft 3
The first look at the work. The agent flagged its own weak spots: the last 8 seconds were still and empty, the top result card was a grey placeholder, the mix was not done. The owner approved the look and cut the scope from six versions to one: English, 16:9, complete.
Draft 14
The black end card with the official logo landing on the last hit at 33.5 seconds. The owner listened to the sound and approved it. Final render at 1920 x 1080, the last review round, delivery and this case study.
What Ice asked
Brand ownership and material
b) not the brand: unofficial concept (default, user said do not ask)
The recommended default
Voice source
a) every word on screen, music-led (default, no permitted voice source)
The recommended default
Picture in mind
a) pitch ideas (default)
The recommended default
Platform
YouTube and social feeds plus the gallery page (decision D-06)
The recommended default
What was supplied
Briefpartial
Filled in: goal, audience, platform and aspect, message, call to action, must-include content, commercial use missing
Brand kit (logos only)partial
Filled in: palette with roles, typefaces and imagery style missing (filled from Spotify's own site and guidelines by ice-assets)
The workflow, stage by stage
All ten stages, from the brief to delivery: what each one decided and why, what it made, the critic rounds and the roles that worked on it.
Stage 01, Brief
Rolesuserapprovercriticresearcher
Intake, research R-01 to R-08, compliance, truth sheet, brand material; approver PASS on second pass (ice/review/stages/01-approver.md)
Decisions
D-01 Ask or not ask at stage 01
- AChosen
- - A: Send no message
- every field takes its default with a D-entry (rests on: questions.md section 5 signal "don't ask")
Why, and its source
The user's own words are a "don't ask" signal; the router's stops table then has zero stops (no stage 01 message, no preview approval).
Source: brief slot mode (router; user signal quoted); ice-motion-director/SKILL.md section 3.3 and section 5 "Stops"; ice-direction/references/questions.md section 5
D-02 Brand ownership
- BChosen
- - A: I am the brand: use its official material as an official film
Why, and its source
Stated in the run conditions and equal to the fixed default; no store badges, offers, prices or claims the brand's own pages do not state today.
Source: run conditions (quoted); ice-direction/references/questions.md section 2 fixed option set; ice-assets/references/brand-authenticity.md section 10 steps 1 and 10
D-04 Commercial use
- AChosen
- - A: unknown: never open the noncommercial folder (default when unanswered)
Why, and its source
The user did not say; unknown keeps every noncommercial-only source closed, which costs nothing because the skill's permissive references cover the same ground.
Source: ice-film/SKILL.md section 8; ice-direction/references/intake-and-brief.md section 1 slot commercial_use
D-05 Market (provisional, for research)
- AChosen
- - A: Arabic version for Egypt and the wider Arab world (MENA)
- English version global (rests on: prompt language and dialect)
Why, and its source
The user's own dialect points to Egypt; an Arabic film for a pan-Arab streaming audience reads in MENA when its on-screen words are clear Arabic; the English version serves the gallery's global audience. Research queries use market "Egypt", "MENA" and "global".
Source: brief slots language and market (prompt); ice-direction/references/intake-and-brief.md section 1 ("market: infer from language and brand")
D-06 Platform (provisional, for research)
- AChosen
- - A: YouTube and social feeds (Instagram
- TikTok
- YouTube Shorts)
- plus the public gallery page (rests on: run conditions "public gallery"
- length range)
Why, and its source
A 35 to 60 s ad for a gallery is watched on a web page and on YouTube (landscape); the same film is most often reused in feeds (vertical). Research queries use platform terms "YouTube", "Instagram", "TikTok". Final ratios are set at 03 from the film type's deliverables.
Source: run conditions ("public gallery"); brief slot duration (prompt); ice-direction/references/intake-and-brief.md section 1 ("platform: infer")
D-08 Size and crew
- AChosen
- - A: Size standard (7 to 60 s, versions included)
- crew Full: length row Standard (21 to 45 s) or Full (over 45 s), plus one row per flag: two language versions
- a real brand's UI rebuilt at 90 percent fidelity
- more than one master aspect composed separately (16:9 and 9:16 re-laid out). Capped at Full
Why, and its source
The film-setup.md rule moves one row up per flag and never above Full; with two languages and re-laid-out aspects the run has 12 to 20 dispatches, a reviewer per round per master, and up to 3 film review rounds per master. Size stays standard because the router says language versions and cutdowns of a 7 to 60 s film keep it Standard.
Source: brief slots duration and language (prompt); ice-motion-director/SKILL.md section 4; ice-film/references/film-setup.md section 2
D-09 Goal and audience
- AChosen
- - A: Goal "open Spotify and play something for the moment you are in"
- audience 18 to 34 on phone feeds (sound often off at first) for both versions, plus laptop gallery viewers for English (rests on: R-02 S-17 and S-15 on Egypt's free-listening and data barriers
- R-01 S-15 to S-19 on Spotify's own campaigns built on personal listening moments
- D-06 platform)
Why, and its source
The only action an unofficial concept can honestly ask for is to play something; it is also the action Spotify's own link wording names ("PLAY ON SPOTIFY", "LISTEN ON SPOTIFY", R-01 S-02). Sound-off feed viewing is why every word is on screen (D-03).
Source: brief slots platform (D-06), real_brand (prompt); R-01 (2026-10-20) S-02, S-15 to S-19; R-02 (2026-10-20) S-06, S-15, S-17
D-10 Aspect ratios and deliverables
- AChosen
- - A: 16:9 master per language, with 9:16 and 1:1 re-laid out from the same timeline, plus a poster still per version (rests on: brand-film.md Deliverables
- D-06)
The type's deliverables list exactly this, and D-06 names both landscape and vertical destinations. Cutdowns (15 s, 6 s) are decided at 03 in versions.md.
Source: ice-film/references/film-types/brand-film.md Deliverables; D-06
D-11 Arabic language profile
- AChosen
- - A: Egyptian (Cairo) spoken Arabic, polished register, the way Spotify Egypt writes its own pages ("اسمع موسيقى من غير حدود"، "هتدفع ... بس بعد كده") (rests on: R-02 S-07
- prompt written in Egyptian Arabic)
Why, and its source
dialect-profiles.md section 1 says a text-light film with no voice decides between MSA and the most likely audience dialect; the brand's own Arabic copy for this market is Egyptian colloquial, and the user writes Egyptian. Native reader: the user by default; the sign-off stays open in the delivery note (no preview approval in this run).
Source: R-02 (2026-10-20) S-07; prompt; ice-arabic/SKILL.md section 1; ice-arabic/references/dialect-profiles.md sections 1 and 2
D-12 Picture in mind, and the request's triage
- AChosen
- - A: Not yet, pitch ideas (fixed default for the question)
- triage: unformed about the telling, so the full concept round runs at 02 (rests on: questions.md section 4 default
- intake-and-brief.md section 4 "An ad prompt that gives facts and an occasion ... but no telling ... always enters the concept round")
Why, and its source
The prompt holds a subject and constraints but no telling; the skill's rule sends such an ad to the concept round, and the unanswered question takes its default.
Source: prompt (quoted); ice/state.json questions[2]; ice-direction/references/questions.md sections 4 and 5; ice-direction/references/intake-and-brief.md section 4
D-16 The fourth noise source: a demolition hammer instead of TV static
- BChosen
- - A: horn
- drill
- engine
- TV static (as the critic listed) (rests on: D-13-critic.md fix 3)
Why, and its source
TV static has no clear everyday Egyptian noun and its sound is a hiss with no transient, so it cannot carry the backbeat; the demolition hammer has an everyday Cairo word ("تكسير", the neighbour's renovation) and a hard transient that becomes the backbeat (tak in maqsum, the snare in the straight four). It stays a machine or tool source, inside the critic's rule.
Source: ice/review/direction/D-13-critic.md fixes 3 and 4; ice/review/direction/D-13-consultant.md; ice/plan/script.md shot 1 and the Arabic dialect review
D-22 Default-kit items kept, with reasons
- A. Reasons: the dark opener of kinetic type is the concept itself (the street's noise is written as words, D-13 and D-15), not decoration; the search box is Spotify's real, captured input and the film's hinge, and the answer now lands whole instead of being typed (critic fix 4); the mint #91EEDA is Spotify's own Premium page accent, not a generic "cyan on dark".Chosen
- - A: keep the dark kinetic-type opener and the search box with reasons
- mint stays as a Premium page accent (rests on: D-15
- TRUTH F1)
Source: D-17-critic.md (default kit count 3, fix 4); anti-sameness.md section 6
D-24 End-card ground
- AChosen
- - A: the green logo on pure #000000 inside an oval zone wider than its clear space
- outside the zone the black thins to 86 percent so the dim street and its lights show through (background with texture)
- the search field under the logo (second layer)
- two or three out-of-focus lane lights near the lens at the frame corners, drifting (foreground) (rests on: R-01 S-02 green-on-black rule
- composition-and-staging.md section 7.2)
Why, and its source
the green logo is Spotify's primary colourway and the film's only green after the play circle, so it should close the film; keeping its own zone pure black satisfies the logo rule while the frame around it keeps the street's texture and depth; B gives up the green; C fails the floor.
Source: R-01 (2026-10-20) S-02; ice/review/stages/05-approver.md item 1; ice-motion/references/composition-and-staging.md section 7.2
D-25 Arabic melody lane word order
- AChosen
- - A: words in reading order: "حاجة" in the rightmost melody cell
- "دي" in the leftmost
- so the lane reads correctly from right to left while the playhead lights them left to right (rests on: rule 11 for the timeline
- letterforms-in-motion.md section 6 reading order for words)
Why, and its source
the words are read, the timeline is not; A keeps both rules. The melody notes still play left to right; the score does not sing the words, so no word-to-note sync is lost.
Source: ice-arabic/SKILL.md section 2 rule 11; ice-arabic/references/letterforms-in-motion.md section 6; ice/review/stages/05-approver.md item 2
D-26 Size of the rebuilt interface strings in Arabic
- AChosen
- - A: interface strings at the capture's own proportion (Arabic at the Latin size, as Spotify's Arabic web player sets them)
- the film's own words (noise words, lane words, the painted line, tile titles) keep D-19's 1.35 (rests on: measured on the captures at 07: the Arabic placeholder is 128 px wide in a 474 px field and "أفضل النتائج" 121 px over a 388 px card
- at 1.35 the rebuild measured 175 px and 162 px, at 1.0 it measures 130 px and 121 px)
Why, and its source
inside the rebuilt interface the capture is the authority (section 11.1); Spotify itself sets Arabic at the Latin size there, and IBM Plex Sans Arabic at that size matches the capture's ink width within 2 percent. D-19's reason (Arabic read words visibly smaller than Latin at equal size) concerns the film's own type, which keeps 1.35. The answer stays legible: 40 px in the 16:9 master, 37 px in 9:16.
Source: ice/review/ui-fidelity/sheet-ar.png; film/js/ui.js (uts); D-19
D-28 One version only: English, 16:9 (owner's decision)
- BChosen
- - A: deliver the six planned films (rests on: the prompt and D-10)
Why, and its source
the owner (Omar) narrowed the scope mid-run, in his words: "منا مش عايز غير نسخة واحدة فقط لا غير. انجليزي و 16:9 عجبتني ووافقت عليها ... هي نسخة واحدة كاملة من كل شيئ حتى الميوزك والساوند ايفكت وغيره" (I want only one version, nothing else; English and 16:9, I liked it and approved it; one complete version of everything, music and sound effects included). He watched ice/renders/draft-3-en.mp4 and approved its story, scene order, look and pacing; later changes are allowed only where they fix the static, empty last 8 s and the grey placeholder Top result card. The user's newest explicit note outranks earlier notes (ice-film SKILL.md).
D-40 A denser jam inside the frame (note 2)
- AChosen
- - A: a second row of the jam in the far lane (three cars and vans standing above and behind the hero car, a little smaller for depth), the motorbike moved forward in the far lane between that row and the road works, the wide frames shifted to take in the two rows
- the jam stabs from the drop cycle through all seven cars, one car per stab (rests on: seven vehicles stacked in two rows read as a jam at a glance in the same width the machines need)
only the second row puts more cars inside the same frames; cycling the stabs through the seven cars matches the sound, which already plays one car per stab (08a note on draft-9).
Source: D-38; film/js2/street.js (JAM, order); ice/plan/cue-sheet.json (music.jam)
D-42 Peak limiting at or under 6 dB (note 4)
- AChosen
- - A: make the score's own peaks smaller instead of limiting them (softer transients at the drop impact and the kick, the jam stabs kept off the bass peak, gentle saturation before the bus), deliver the score with true-peak headroom so the master adds little, and measure the total peak reduction from the unlimited bus to the final master at 6 dB or less (rests on: harshness comes from the limiter working hard
- a smaller crest needs less of it)
it keeps the loudness target and removes the cause at the source.
Source: D-38; ice/audio/score.py (version 5); ice/audio/NOTES.md
D-47 Final approval of draft-14 by the owner (2026-10-21)
- draft-14 is the approved cut: final render at 1920x1080, English, 16:9, one version; then delivery (ice/renders/final/, ice/review/NOTE.md, a 16:9 English poster still) and the case study export.Chosen
his decision. It confirms the logo landing at 33.5 s with the 1.5 s hold (D-45; the heads-up question is answered by his approval of draft-14), and it closes the "nobody has listened" caveat: the owner listened to the sound.
D-48 Viewer takeaway, written late at stage 09 (clarity gate)
- (a): the block "## Viewer takeaway" under the chosen concept in ice/plan/concepts.md, quoted here:Chosen
- - (a) write the takeaway late, only from text locked at 02 and before read 3, then run a blind read 3 on the delivered master (rests on: clarity-gate.md section 2, the takeaway is a restatement of the locked concept
- section 3, a new viewer per read
- the film is unchanged, D-47)
Why, and its source
(a) is the only option that tests the delivered film against a target fixed before the read; (b) leaves the gate untested and (c) has no Sells or Offer's job and would match the viewer to words on screen rather than to the concept. Every field restates text locked before read 3 (sources in brackets in concepts.md); nothing is new, so the concept, the film and its approval (D-47) do not change.
Source: ice/plan/concepts.md "Viewer takeaway"; D-13; D-30; TRUTH.md; BRIEF.md; ice-qa/references/clarity-gate.md sections 2 to 5
Made in this stage
01-COMPLIANCE.mdResearch note COMPLIANCE.md
Open the file: 01-COMPLIANCE.md01-R-01-RQ-brand.mdResearch note R-01-RQ-brand.md
Open the file: 01-R-01-RQ-brand.md01-R-02-RQ-business.mdResearch note R-02-RQ-business.md
Open the file: 01-R-02-RQ-business.md01-R-03-RQ-rules.mdResearch note R-03-RQ-rules.md
Open the file: 01-R-03-RQ-rules.md01-R-04-RQ-color.mdResearch note R-04-RQ-color.md
Open the file: 01-R-04-RQ-color.md01-R-05-RQ-type.mdResearch note R-05-RQ-type.md
Open the file: 01-R-05-RQ-type.md01-R-06-RQ-category.mdResearch note R-06-RQ-category.md
Open the file: 01-R-06-RQ-category.md01-R-07-RQ-ads.mdResearch note R-07-RQ-ads.md
Open the file: 01-R-07-RQ-ads.md01-R-08-RQ-refs.mdResearch note R-08-RQ-refs.md
Open the file: 01-R-08-RQ-refs.md01-BRIEF.mdThe brief: what the user said and every slot with its source
Open the file: 01-BRIEF.md
Stage 02, Concept
Rolescriticconsultantapprover
Concept D-13 (C2 plus C1 hinge), structure D-14 (crane up with chain reaction); approver PASS second pass
Decision
D-13 Concept
- mix of C2 (body and hero) with C1's exact question as the hinge, the critic's own recommendation, with the critic's five fixes applied (ice/plan/concepts.md)Chosen
- - C1: One question
- 777 million answers (subject world) (rests on: R-01 capture "What do you want to play?"
- R-02 S-01 figures
- R-07 open space "interface as main stage")
Why, and its source
C2 is the only KEEP (7): one idea, readable muted from frame 0, and its percussion-led score is the most code-friendly in the round; C1's exact Spotify question fixes C2's failed competitor swap. The critic's Arabic condition for the pill was met by capturing Spotify's own Arabic search placeholder on 2026-10-20.
Source: ice/review/direction/D-13-options.md; R-01, R-02, R-06, R-07, R-08 (2026-10-20); COMPLIANCE.md; TRUTH.md (F1, Arabic interface strings)
Made in this stage
02-concepts.mdConcepts pitched and the one chosen
Read the whole file: 02-concepts.mdConcepts: spotify-concept-ad
Runtime date: 2026-10-20. Stage 02. Decision: D-13 (ice/DIRECTION.md). Options file: ice/review/direction/D-13-options.md. Consultant: ice/review/direction/D-13-consultant.md. Critic: ice/review/direction/D-13-critic.md.
The round (five pitches, one per path)
ID · Path · Concept in one sentence · Critic
C1 · Subject world · Spotify's search field asks "What do you want to play?" and a day answers it, each answer re-scoring the frame, until the field multiplies into 777 million answers · REVISE, 6
02-TREATMENT.mdThe treatment handed to the build
Read the whole file: 02-TREATMENT.mdTreatment: spotify-concept-ad (The street plays along)
Runtime date: 2026-10-20 Direction: D-17 (palette D-18, type D-19, sound D-20, motion D-21) Concept: D-13 (structure D-14, opening D-15)
PAGE
Problem: the city around you is loud with noise you did not choose: horns, drills, engines, the neighbour's renovation.
Audience: 18 to 34, in Egypt and the Arab world (Arabic version) and worldwide (English version), on a phone feed that often starts muted, and gallery visitors on a laptop with sound.
Stage 03, Script
Rolescriticapprover
Script EN and AR, versions (6 films plus posters), hooks C plus A; approver PASS second pass
Decisions
D-03 Voice source
- AChosen
- - A: Every word on screen in each language
- with music and sound
- no voice (fixed default)
Why, and its source
No permitted voice source exists; the router's "voice implied, no voice source" rule keeps the film on ice-film, music-led. The cut is built so a voice could be added later without re-cutting.
Source: run conditions (quoted); ice-motion-director/SKILL.md section 2 "Voice implied, no voice source"; ice-direction/references/questions.md section 2 fixed option set
D-14 Structure
- S-B with S-A's chain reaction as the locking mechanism (the critic's mix), and the critic's five fixes: show the choice (an answer enters the pill and becomes the melody lane), the chain causes the rise and accelerates, importance budget 2 of 8 and peak at 67 percent, a short descent with the street playing under the closing pill, a 2.5D tilting plane with frontal billboards for read wordsChosen
- - S-A: Lock-in, row by row (chain reaction on a flat grid) (rests on: structure.md section 2 "chain reaction"
- brand-film.md "Narrative shapes")
Why, and its source
S-B is the only KEEP (7): the top-down reveal makes "the street plays along" literal and one camera meets the brand film's transform-not-cut policy; S-A's chain supplies the cause the camera lacked.
Source: ice/review/direction/D-14-structure-options.md; ice/review/direction/D-14-critic.md; ice-film/references/structure.md sections 2 to 7; film-types/brand-film.md
D-15 Opening (first 3 seconds)
- C mixed with A's dominant horn word, with the hook critic's five fixes (ice/plan/hooks.md)Chosen
- - A: typography leads
- one giant noise word slammed across the frame (rests on: concept-menus.md section 3 "A giant word cropped by the frame edge")
Why, and its source
the hook critic scored C highest (REVISE 6) as the only first frame a muted viewer reads at once, with an escalating fall into the 5.0 s horn; A's crop is a hard Arabic failure, B has no whole word at frame 0.
Source: ice/plan/hooks.md; studies ice/renders/studies/opening-*.mp4 and ice/plan/hooks/opening-studies-sheet.png; ice/review/direction/D-15-critic.md
Made in this stage
03-structure.mdStructure
Read the whole file: 03-structure.mdStructure: spotify-concept-ad
Runtime date: 2026-10-20. Stage 02. Decisions: concept D-13, structure D-14. Critic: ice/review/direction/D-14-critic.md.
Film type: brand film (D-07), borrowing the app ad's real product moment (Spotify's search field).
One claim (seven words or fewer, no conjunction): You choose what you play.
(The treatment does not exist yet at 02; the claim and PAGE lines are taken from the chosen concept here and copied into ice/plan/TREATMENT.md at 05. See PILOT-NOTES, structure.md section 1 problem.)
03-script.mdScript
Read the whole file: 03-script.mdScript: spotify-concept-ad (The street plays along)
Mode: Write (no script supplied)
Language and dialect: two versions. English (plain international, sentence case). Arabic: Egyptian (Cairo) spoken Arabic, polished register (D-11), every on-screen word in Arabic lettering except the Latin name "Spotify" and the English unofficial line (RD-02); transcreated, not translated.
Length target: 49.0 s (the D-14 beat plan re-timed at 03 so the question and the answer each get about 3 s of reading hold, and extended at 04 so the Arabic end card holds the logo plus both unofficial lines; the film runs 49.0 s in every plan file).
Word budget: 20 words or fewer per version in total, counting each distinct on-screen string once (the closing question repeats the same string the viewer already read at 5.5 s, so it adds no new reading; brand film text density: manifesto lines word by word, at most 2 lines, about 6 percent of frame height per line). The required unofficial label is exempt from the count (truth-sheet.md section 12: disclaimers are marked and exempt from text counts).
03-hooks.mdOpenings compared
Read the whole file: 03-hooks.mdHooks: spotify-concept-ad
Runtime date: 2026-10-20. Stage 03 openings step (ice-film/references/openers-and-endings.md sections 2 to 4).
Priority test: benefit "the noise around you can become your track"; open question "who wins: the noise, or me?"; payoff at 12.0 s (the play press locks the first noise to the beat) and fully at 31 s (the street as a drum machine).
Studies: grey blocking, real copy, real candidate fonts (Inter Bold for English, Noto Kufi Arabic 800 for Arabic; type is decided at 05), first 3.2 s, rendered with the HTML capture renderer at half size: ice/renders/studies/opening-<A|B|C>-<en|ar>.mp4; stills at 0, 1 and 3 s: ice/plan/hooks/opening-studies-sheet.png. The studies are built in isolation from the film; their timing may differ from the final cut.
Opening · Leads with · Frame 0 · By 1 s · By 3 s · Heard · Muted read · Choice notes
Stage 04, Storyboard
Rolescriticapprover
drawn-street rework (D-30): storyboard rev 5, shot-plan rev 5 with 15 contracts, strip as the staging board; approver second check ice/review/stages/04-05-rework-approver.md
Decision
D-37 A closer camera and a taller street (fix b)
- AChosen
- - A: tighten the layout (the motorbike in the far lane right above the hero car, the pile rig on the site right above the breaker, the jam running out of frame to the left), raise the buildings behind the action to just under the end card's limit, and raise the camera scale: about 1.1 on the opening car, 0.85 to 1.0 on each machine as it joins, about 0.72 when all four play
- the end card stays at 0.342 (rests on: the machines fill the frame and the frame top meets facades instead of sky, while the end card keeps its whole street)
only A answers both halves of the note (machines larger in the frame, less empty sky); B and C each move the emptiness or leave the machines small.
Source: D-35; ice/plan/style-frames/v2/ (updated); film/js2/street.js (camera keys)
Made in this stage
04-storyboard.mdStoryboard
Read the whole file: 04-storyboard.mdFilm type: brand film. Length 35.0 s (D-39; was 36.0 s, D-33; 33.5 s in draft-10). Master 16:9 1920x1080, English only (D-28). 30 fps. Clock: music-led, 120 BPM, bar 0 on the play press at 7.5 s; the noise (0 to 3.0 s) runs in free time.
Style: Drawn night street (D-31): a flat-vector night street in side view built by code (buildings with windows, street lamps, a construction site behind solid hoarding, a jam of cars and vans led by the hero car, a road breaker on a small excavator at the head of the jam, a pile rig, a motorbike with a helmeted rider), the machines drawn 1.6 times the building scale so they read on a phone, grey before the press, each machine taking its Spotify lane colour as it joins the song; Spotify interface rebuilt from captures; one style for the whole film
Palette: ground #121212, sky #0D0D0D to #1D1D1D, street greys #1A1A1A to #6A6A6A, field #1F1F1F, card #181818, ink #FFFFFF, ink muted #A7A7A7, accent #1ED760 (play circle and press ring only), lanes #FFA178 (horn), #608108 (hammer), #91EEDA (drill), #477D95 (engine), word outline #000000, end card sky and logo ground #000000 (D-18, D-24)
Characters: one motorbike rider in a full-face helmet with a dark visor (no face shown); no other people (a system pointer operates the rebuilt interface)
Video direction block
04-shot-plan.mdShot plan
Read the whole file: 04-shot-plan.mdThe contracts below hold for draft-14: the film is 35.0 s; shots 13 to 15 are re-timed (27.5 to 31.5, 31.5 to 33.5, 33.5 to 35.0; the end card is the logo alone on black, D-44 to D-46); shots 6 to 9 carry the camera pushes of D-41; the jam has a second row in the far lane (D-40). The draft-9 contracts are kept in shot-plan-draft9.md.
One composition: film/v2-en-16x9.html loading film/js/util.js, config.js, ui.js, lockup.js and film/js2/street.js, main.js (one continuous timeline; shots are time ranges of one camera along a drawn street). English 16:9 only (D-28). Times in seconds at 30 fps, from storyboard.md revision 5 (D-33). Richness values are measured on the stills of the real build with ice-qa's own area function (film_gate.area_features, 320 px grey; temp/v2o/v2-en-16x9/), and for type and interface heroes as hero_width, the hero text or interface width over the frame width. Every camera entry gives its reason. The revision 3 contracts of the lane-grid world are kept in shot-plan-rev3.md.
Shot · Time · Claim and evidence · Start state · Decisive state · Handoff state · Focal owner · Motion verb · Camera window and reason · Layer manifest (back to front) · Alive · Richness (hero_share / frame_fill of 16 / depth) · Cues · Assets · QA checks
1 · 0.0-2.9 · none (situation) · close on the grey honking hero car at frame 0, the jam behind it, the motorbike above, HONK in front of it · 2.62: the whole noisy block, the loudest horn, all four machines and their words in frame (frame-1) · the field rises at 2.9 as the street dims · the honking car, then the whole street · fire, pull back · 0.0 to 2.5: pull back from scale 1.1 on the hero car and the jam behind it to 0.7 on the block; reason: find the noise, then show all of it · sky, far skyline (parallax), buildings and site, road and lamps, machines, words · the four machines fire out of time, words pop and fade, the camera pulls back · 91 at 0.3 and 100 at 2.62 / 16 / 4 · horn 0.0, 0.7, 1.4, 1.9, 2.6 (loudest); breaker 0.3, 1.1, 2.0; ram 0.5, 1.25, 2.2; engine 0.15, 1.6, 2.4 · none · frame 0 readable; every read word whole inside the 5 percent margins; no face
2 · 2.9-3.3 · F1 search · the noisy block dimming · 3.2: the field risen with the question, caret showing · the first key at 3.3 · the search field · rise · held, slow drift; reason: the question rises over the dim street · street, dim layer, field · the field rises, the street drifts · hero_width 83 (the field) / 16 / 3 · pillIn 2.9 · webplayer-search-en · exact placeholder; field fidelity at least 90 percent
Stage 05, Look
Rolesapprovercriticconsultant
drawn-street look D-31 (gates: default look pass, 4 of 6 vs 01-flat-vector, default kit 2 with reasons); six style frames in ice/plan/style-frames/v2/; D-34 line left for the owner; approver second check ice/review/stages/04-05-rework-approver.md
Decisions
D-07 Film type
- A, Brand filmChosen
- - A: Brand film, borrowing the app ad's "real product moment" (rests on: brand-film.md Fit and Purpose "a feeling the brand owns"
- Timing master music-led by default
- Deliverables 16:9 master with 9:16 and 1:1 re-laid out)
Why, and its source
The asked 35 to 60 s length and an unofficial concept with no CTA badge fit the brand film's purpose (a feeling Spotify owns) and its music-led timing master; the app ad's strength, the real product doing its job, is borrowed as one or two rebuilt UI moments from Spotify's public pages with neutral content, so the film still shows the product.
Source: brief slots duration, real_brand (prompt); D-02; D-03; ice-film/references/film-setup.md section 1 ("Two types fit: pick the one whose purpose matches the goal, borrow parts of the other, log it"); film-types/brand-film.md and app-ad.md (Fit, Purpose, Rhythm ranges, Truth and content, Deliverables)
D-17 Direction (the look)
- A, with the critic's five fixes: (1) at 34 s the locked lanes fold into Spotify's Browse all tile layout under the search field (the street becomes Spotify's own search page); (2) no red: lanes coral #FFA178 (horn, first flood), olive #608108 (hammer), mint #91EEDA (drill), slate #477D95 (engine); (3) light carries the choice: overhead lamps on wires at 1.25x parallax, #2A2A2A until their lane locks, then a 600 px pool of the lane colour at 30 percent over the grain; (4) default kit cut to 2, logged (D-22): the answer lands whole; (5) Arabic read words in IBM Plex Sans Arabic Bold at 1.35x the Latin size, texture at 56 px minimum; the end card on #000000Chosen
- - A: Night shift: Spotify's dark interface becomes the street
- each locked lane takes one of Spotify's own browse colours (rests on: brand sheet, browse tile captures, R-04, R-06)
Why, and its source
A is the only direction that serves the claim with its own mechanics (grey until your press, colour only on a lock) and looks like Spotify's own interface and browse colours made better; B is inherited from the risograph entry (3 of 6 axes) and fails contrast on cream; C is the category convention and inherited from Swiss Motion (2 of 6).
Source: ice/review/direction/D-17-options.md; D-17-consultant.md; D-17-critic.md; R-01 S-02 (2026-10-20); R-04 S-03, S-04; brand-sheet.json; assets/capture/spotify/webplayer-search-en (browse tiles)
D-18 Palette
- BChosen
- - A: dark ground with four browse colours
- red led (coral
- olive
- mint
- red) (rests on: D-17 options A)
Why, and its source
removing red moves the nearest Apple Music red from dE 4.2 to dE 15.2, removes the pan-Arab flag set, and raises the worst lane pair in colour-vision simulation from 4.9 to 6.7 (critic, consultant measures); lanes also differ by position and word, never by colour alone.
Source: D-17-critic.md fix 2; D-17-consultant.md (measurements); captures browse tiles (#477D95, #608108), Premium page (#FFA178, #91EEDA)
D-19 Type
- A, with Arabic read words at 1.35x the Latin size (Plex Arabic body is 69 percent of Figtree's x-height at equal visible height) and Arabic texture words at 56 px or moreChosen
- - A: Figtree 700 and 500 (Latin) with IBM Plex Sans Arabic Bold and Regular (Arabic) (rests on: shape overlap 0.310 Latin
- 0.393 Arabic
- the best Arabic echo of CircularSp-Arab)
Why, and its source
A carries the direction's friendly geometric voice in Latin and the closest independent echo of Spotify's own Arabic site type; the size factor fixes the weight gap the consultant measured. B's Latin is inherited from the rejected direction; C's Arabic line box is smaller than its ink and clips marks.
Source: temp/fontmatch measurements (D-17-options.md); D-17-consultant.md; R-05; type-pairing.md sections 1 to 6
D-21 Motion language
- A (ice/plan/motion-plan.md)Chosen
- - A: one continuous camera
- locks on the beat
- colour and light arrive with the lock
- no cuts (rests on: D-14
- brand-film.md transition policy)
the brand film transition policy asks that nearly every transition turns the current object into the next; one camera keeps the chain causal.
Source: ice/plan/motion-plan.md; brand-film.md; D-14
Made in this stage
05-DIRECTION.mdDecision log: options, choice, reason and source for every decision
Open the file: 05-DIRECTION.md05-D-13-consultant.mdDirection review file D-13-consultant.md
Open the file: 05-D-13-consultant.md05-D-13-critic.mdDirection review file D-13-critic.md
Open the file: 05-D-13-critic.md05-D-13-options.mdDirection review file D-13-options.md
Open the file: 05-D-13-options.md05-D-14-critic.mdDirection review file D-14-critic.md
Open the file: 05-D-14-critic.md05-D-14-structure-options.mdDirection review file D-14-structure-options.md
Open the file: 05-D-14-structure-options.md05-D-15-critic.mdDirection review file D-15-critic.md
Open the file: 05-D-15-critic.md05-D-17-consultant.mdDirection review file D-17-consultant.md
Open the file: 05-D-17-consultant.md05-D-17-critic.mdDirection review file D-17-critic.md
Open the file: 05-D-17-critic.md05-D-17-options.mdDirection review file D-17-options.md
Open the file: 05-D-17-options.md
Style frame frame-1-ar.png 
Style frame frame-1-en.png 
Style frame frame-2-ar.png 
Style frame frame-2-en.png 
Style frame frame-3-ar.png 
Style frame frame-3-en.png 
Style frame frame-4-ar.png 
Style frame frame-4-en.png
Stage 06, Animatic
Rolesdirectorapprover
drawn street: cue sheet rebuilt and locked (46 events, 17 grid anchors checked, typing keys, jam steps 6 and 14 from the drop); timed stills board of 15 settled stills at or above the floor; lint YELLOW exit 0 with reasons; D-36 and D-37 approved; ice/review/stages/06-drawn-street-approver.md
Made in this stage
06-cue-sheet.jsonCue sheet
Read the whole file: 06-cue-sheet.json{ "locked": true, "locked_at": "2026-10-21 (stage 06, the drawn street; re-timed at 07 for D-39)", "project": "spotify-concept-ad", "version": "en", "fps": 30, "duration": 35, "mode": "music-led", "note": "The drawn street (D-30 to D-37): free-time noise 0 to 3.0 s, the search and the typing in a quiet street bed to the press, then a 120 BPM grid from the first downbeat at 7.5 s. Exported from film/js/config.js and film/js2/street.js by temp/tools/export-cues-v2.mjs; the build, the score and the checks read this file, never retype it. The lane-grid sheet is kept as cue-sheet-v1.json.", "music": {
Stage 07, Build
Rolesapprovercritic
draft-14 (black end card, D-44 to D-46): cue sheet re-exports identically, stills at every cue, G5 PASS, look G2 and G3 PASS, Final Frame Contract 0 px on the whole frame; D-45 approved with the 33.5 s landing awaiting the owner's confirmation; ice/review/stages/07-08-draft14-approver.md
Decisions
D-23 Engine
- BChosen
- - A: HyperFrames (row 8 default) (rests on: engine-choice.md section 1)
Why, and its source
HyperFrames is not installed and the run allows no installs; rung C renders the same page contract with Chrome 149 and FFmpeg 8.1 already on the machine; the 7.5 replacement gates apply.
Source: engine-choice.md sections 1, 7.2, 7.4, 7.5; render-html.mjs first lines: "driver built-in Chrome DevTools driver, browser C:\Program Files\Google\Chrome\Application\chrome.exe", "browser version Chrome/149.0.7827.102"
D-27 Compositing mode for every render
- BChosen
- - A: GPU compositing (the default) (rests on: speed
- measured at 07: the last frame differed from the static logo by up to 28 of 255 on 7,800 to 8,700 edge pixels in 16:9 and 9:16, and by 1 of 255 on 14 to 26 pixels after a fix, changing from run to run with what had been composited before)
the frame then depends only on t, as the build rules require, and the end lockup lands exactly on the official logo in every version.
Source: ice/review/final-frame/result.json; temp renders ffc to ffc5 and cues6 to cues7
Stage 08, Sound
Rolescriticapprover
master on draft-14: -14.0 LUFS, -1.4 dBTP, LRA 7.4, mono -17.2, no gaps, hits on cue incl. the final hit at 33.5; D-42 5.04 dB; ice/review/stages/07-08-draft14-approver.md
Decisions
D-20 Sound lead and music source
- A, logged as a code-made stand-in for a licensed human-made track (named in the delivery note as what a yes to a library download would add)Chosen
- - A: score led, composed by code with the project copy of mgaudio: a groove built from the street's own machines (horn as a low brass stab with the low hit, hammer as the backbeat, drill as the hats, engine as the sub bass), a lead playing the film's motif
- Arabic version in maqsum, English in a straight four, both at 120 BPM
- the noise section as sound design (rests on: D-13 critic fix 1
- ice-audio section 5 code score when no license-safe download is allowed)
Why, and its source
the film's claim is that the noise becomes your music, which only a score built from the same sounds can show; it is license-clean and locked to the cue sheet; C is blocked by the run conditions.
Source: ice-audio/SKILL.md section 5; music-choice-and-licensing.md section 2 (music brands row; downloads not allowed row); D-13-critic.md fix 1
D-29 Loudness profile and the score's loudness-range guard
- AChosen
- - A: Social and web, punchy: -14 LUFS, at or under -1 dBTP on the encoded file, LRA at most 9 to 11 LU
- the 5 to 8 LU music guard read on the music body (12 to 41 s), the whole-film LRA held to the profile (rests on: D-06 feeds and an energetic film
- measured: EN master -14.3 LUFS, -1.1 dBTP, LRA 8.4
- score v2 whole film 8.63 LU, body 4.58 LU)
Why, and its source
the film plays mostly in feeds (D-06), where -14 is the loudness of the content around it, and the whole film sits inside the profile's LRA (8.4 LU on the encoded master). The music guard's band (5 to 8 LU) is not met either way: the whole film reads 8.63 LU (0.63 over, because of the declared quiet stretches) and the music body, 12 to 41 s, reads 4.58 LU (0.42 under: a steady groove). Both figures are reported in the delivery note as an open guard item. The deliberate quiet stretches are what pushes the whole-film figure over 8; filling them would remove the cold-open silence and the breath. Listed in the delivery note with the numbers.
Source: ice/audio/qc_en_v2.json; ice/audio/master_draft4_en.json; ice/review/mix-08b.md; ice/review/stages/08-approver.md
Made in this stage
08-sound-plan.mdSound plan
Read the whole file: 08-sound-plan.mdSound plan: spotify-concept-ad (The street plays along), stage 08a
Built by ice/audio/score.py (one script, --lang en|ar) with the project copy of mgaudio (MIT), every time read from ice/plan/cue-sheet.json (locked, not retimed). Clock: music-led, 120 BPM, bar 0 = the press at 12.0 s, 4/4, a 16th = 0.125 s; 0 to 12.0 s free time. Outputs: ice/audio/soundtrack_en.wav, ice/audio/soundtrack_ar.wav (48 kHz, 24-bit, stereo, 2,352,000 samples = 49.000 s), stems in ice/audio/stems_en/ and ice/audio/stems_ar/ (pre-master, written at -6 dB), score_spec_en.png, score_spec_ar.png, beatgrid.png, measured reports qc_en.json, qc_ar.json, beatgrid.json.
Version 2 (section 7, the director's follow-up for the social-profile LRA): soundtrack_en_v2.wav, soundtrack_ar_v2.wav, stems_en_v2/, stems_ar_v2/, score_spec_en_v2.png, score_spec_ar_v2.png, beatgrid_v2.png, qc_en_v2.json, qc_ar_v2.json, beatgrid_v2.json, rendered with python ice/audio/score.py --lang en --v2 (and --lang ar --v2, --v2 --beatgrid). Version 1 files are unchanged (checksums verified after the v2 renders). Sections 1 to 6 describe version 1; section 7 lists what version 2 changes and its measured numbers.
This is the 08a score and SFX pass. The final mix on the picture, the exported MP4 measurement and the human listening check belong to 08b and 10. Nothing below is a claim about how it sounds: every number is measured, and no one has listened yet.
1. The four machines are the kit
Stage 09, Review
Rolescriticdirectorapprover
round 4 on the approved cut: critic A SHIP (5 P2), critic B SHIP (2 P3); clarity read 3 PASS r5, a blind viewer on the delivered master: 'Press play and the noise around you turns into music.' (the round-4 read is void); brand film QA: brand test FAIL 0 of 6, competitor swap FAIL (36 percent Spotify-specific), transitions PASS, value flips PARTIAL, listed for the owner; one encode fix R4-01 (bt709 tags); ice/review/stages/09-10-approver-r2.md
Made in this stage
09-critic-round-1.mdCritic round 1
Open the file: 09-critic-round-1.md09-critic-round-2.mdCritic round 2
Open the file: 09-critic-round-2.md09-critic-round-3.mdCritic round 3
Open the file: 09-critic-round-3.md09-critic-round-4.mdCritic round 4
Open the file: 09-critic-round-4.md09-fixes.jsonFix ledger with before and after evidence
Open the file: 09-fixes.json
Critic rounds
Round 1REVISE
- Critic A: 1 P0, 9 P1, 8 P2
- Critic B: 1 P0, 8 P1, 6 P2
- Critic C: 1 P0, 7 P1, 7 P2
- Fixes R1-01 to R1-20 in fixes.json; the frame-0 horn fade and the end card were the blockers
Round 2ONE MORE PASS
- verify-1: SHIP
- verify-2: ONE MORE PASS (the end card: street luma, the groove on the cells, the playhead, the field before 41.0)
Fixed
- Round 1 items: fixed or partly fixed, per verify-1.md and verify-2.md tables
Round 3ONE MORE PASS
- verify-3: ONE MORE PASS (the end card playhead, a cut grey cell, the final flash)
Fixed
- Round 2 items: per verify-3.md table
Round 4SHIP
- Critic A (picture): SHIP, no P0 or P1, five P2 logged (off-frame sources in the first 1.25 s, two words 10 px past the 5 percent margin, the motorbike faces the other way, no motion blur on four fast moves, missing bt709 tags)
- Critic B (sound and sync): SHIP, no P0 to P2, two P3 logged (machine pulses one frame after the kick, 1.9 dB mono loss in the last second)
- First cold viewer (clarity read 3): VOID, it opened the draft by its project path and the critics' labelled packet, and no takeaway existed to match (ice/review/clarity/read-3-cold-viewer.md); the read that counts, read-3-r5 on the delivered master, ran after this round (ice/review/clarity/read-3-r5.md and its match)
- One fix applied without changing the film: bt709 colour tags on the final master (R4-01)
Stage 10, Deliver
Rolesdirectorapprover
final 1920x1080 30 fps 35.00 s, rendered in order from frame 0 with one worker, bt709, -14.0 LUFS, -1.4 dBTP, LRA 7.4, last frame 0 px against the static logo page; poster and six stills; NOTE.md with the D-46 wording, the permissions and the QA fails; fingerprint in ice/review/fingerprint.jsonl (home store not written); ice/review/stages/09-10-approver-r2.md
Made in this stage
10-NOTE.mdDelivery report with measured numbers
Read the whole file: 10-NOTE.mdspotify-concept-ad: delivery report (2026-10-21)
Status: reviewer approved (stage 09 round 4: two fresh critics SHIP; clarity read 3 PASS r5, a blind viewer on the delivered master, in its own words: "Press play and the noise around you turns into music."), approved by the owner on draft-14 (D-47). Two brand film QA thresholds fail on the approved cut (brand test, competitor swap; see Gates), logged for the owner, not fixed, because a fix changes the approved film.
File: ice/renders/final/spotify-concept-ad_street_16x9_35s.mp4 sha256 d206ae58123e3bf71764a6be0d17853c2000b4b5f127725eab0dff50a87f2784 1920x1080 30 fps 35.00 s h264 (bt709) / aac 48 kHz stereo
Other deliverables: poster ice/renders/final/spotify-concept-ad_street_16x9_poster.jpg and .png (1920x1080, the drop at 20.2 s); six key stills ice/renders/final/stills/ (2.67, 8.20, 20.20, 22.30, 25.00, 34.97 s); the same master with its version in the name ice/renders/spotify-concept-ad_street_16x9_35s_v1.mp4; the case study ice/case-study/. One version only: English, 16:9 (the owner's decision, D-28); no Arabic version, no 9:16 or 1:1 re-layouts, no cutdowns.
The non-affiliation line (D-46)

Still from the delivered film at 0.00 s 
Still from the delivered film at 17.50 s 
Still from the delivered film at 34.90 s 
Delivered still spotify-concept-ad_street_16x9_poster.jpg 
Delivered still spotify-concept-ad_street_16x9_poster.png 
Delivered still spotify-concept-ad_street_16x9_01-noisy-street_2.67s.jpg
Research, with dates
Compliance note: spotify-concept-ad
21 sources
- Advertising and Marketing 2025, Egypt: Law and Practice (p. 109)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (p. 110)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (pp. 112 to 113)read 20 October 2026
- What You Need to Know About Egypt's New Advertising RulesPublished 13 March 2025, read 20 October 2026
- قانون رقم 181 لسنة 2018 (Consumer Protection Law), textPublished 13 September 2018, read 20 October 2026
- قانون حماية المستهلك رقم 181 لسنة 2018 (record)Published 13 September 2018, read 20 October 2026
- Meta Advertising Standardsread 20 October 2026
- Third-Party Infringementread 20 October 2026
- Unbranded ads or brand channelsread 20 October 2026
- Trademarkread 20 October 2026
- Trademarksread 20 October 2026
- Copyrightsread 20 October 2026
- Misrepresentationread 20 October 2026
- Misleading and false contentread 20 October 2026
- Ad Format and Functionalityread 20 October 2026
- Intellectual Property Infringementread 20 October 2026
- Deceptive Practicesread 20 October 2026
- About TikTok Advertising Policies for Promoteread 20 October 2026
- Design & Branding Guidelinesread 20 October 2026
- Spotify Developer Terms, Version 10Published 15 May 2025, read 20 October 2026
- Spotify Terms of Use, Egypt EnglishPublished 26 August 2025, read 20 October 2026
R-01 RQ-brand: What do Spotify's own official pages publish today about its logo rules, colors, typeface, live pages, store listings and current campaigns?
21 sources
- Logo and Brand Assetsread 20 October 2026
- Design & Branding Guidelinesread 20 October 2026
- Spotify Developer Terms, Version 10read 20 October 2026
- Spotify Terms of Use (End User Agreement), Egypt Englishread 20 October 2026
- Sharing your musicread 20 October 2026
- Introducing Spotify Mix, Our New and Exclusive FontPublished 22 May 2024, read 20 October 2026
- The Look Behind the SoundPublished 23 April 2026, read 20 October 2026
- Spotify Premium (Egypt), Englishread 20 October 2026
- Spotify Premium (مصر), Arabicread 20 October 2026
- Spotify Web Playerread 20 October 2026
- Download Spotify (Egypt, English)read 20 October 2026
- Spotify listing, Apple App Storeread 20 October 2026
- Spotify listing, Google Playread 20 October 2026
- Spotify listing, Microsoft Storeread 20 October 2026
- How Our 2025 Wrapped Campaign Turns Your Year in Listening Into a Global CelebrationPublished 3 December 2025, read 20 October 2026
- It's Your Party of the Year(s): A Look Back at Your Entire Music History on SpotifyPublished 12 May 2026, read 20 October 2026
- Meet the Real-Life Superfan Starring in Spotify's Fan Life CampaignPublished 28 July 2026, read 20 October 2026
- Benito Skinner and Mary Beth Barone Will Always Ride for Pop DivasPublished 14 October 2026, read 20 October 2026
- Spotify's 'Your Summer Persona' gives Egyptians a personalised summerPublished 23 July 2026, read 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- Spotify Reports Second Quarter 2026 EarningsPublished 4 August 2026, read 20 October 2026
R-02 RQ-business: What is Spotify, whom does it serve, what does it publish as product truth today, who are its competitors in Egypt, MENA and globally, and how does it talk?
19 sources
- About SpotifyPublished 4 August 2026, read 20 October 2026
- Spotify Reports Second Quarter 2026 EarningsPublished 4 August 2026, read 20 October 2026
- Spotify Technology S.A., Form 6-K, interim statements for the period ended June 30, 2026read 20 October 2026
- Spotify Technology S.A., Form 20-F, fiscal year ended December 31, 2025Published 10 February 2026, read 20 October 2026
- Spotify Investor Relations, homeread 20 October 2026
- Spotify Premium (Egypt), Englishread 20 October 2026
- Spotify Premium (مصر), Arabicread 20 October 2026
- The Look Behind the SoundPublished 23 April 2026, read 20 October 2026
- Audiobooks on Spotify Are Going GlobalPublished 7 October 2026, read 20 October 2026
- Spotify Rolls Out 11 New Languages to Users Around the WorldPublished 15 May 2023, read 20 October 2026
- Global Music Report 2026: global recorded music revenues grow 6.4% as record companies drive innovationPublished 18 March 2026, read 20 October 2026
- Anghami Reports FY2025 Revenue of $99.3M, Up 27%, on 3.5M Subscribers and Landmark Strategic PartnershipsPublished 30 April 2026, read 20 October 2026
- KSA Music Streaming MarketPublished 29 July 2026, read 20 October 2026
- MENA grew 15.2% on almost pure streaming; Anghami is the DSP most distributors skipPublished 18 July 2026, read 20 October 2026
- Music for every moment (Spotify Egypt case study)read 20 October 2026
- Spotify Wrapped faces copycat pressure from Amazon, Apple, and YouTubePublished 4 December 2025, read 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- Spotify's 'Your Summer Persona' gives Egyptians a personalised summerPublished 23 July 2026, read 20 October 2026
- Spotify Web Player, Homeread 20 October 2026
R-03 RQ-rules: What advertising rules apply to a music streaming app ad in Egypt and MENA, and what do the YouTube (Google Ads), Instagram (Meta) and TikTok ad policies say for this unofficial concept film?
18 sources
- Advertising and Marketing 2025, Egypt: Law and Practice (printed p. 109)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (printed p. 110)read 20 October 2026
- Advertising and Marketing 2025, Egypt: Law and Practice (printed pp. 112 to 113)read 20 October 2026
- What You Need to Know About Egypt's New Advertising RulesPublished 13 March 2025, read 20 October 2026
- قانون رقم 181 لسنة 2018 (Consumer Protection Law), text "updated to 2024"Published 13 September 2018, read 20 October 2026
- قانون حماية المستهلك رقم 181 لسنة 2018 (record)Published 13 September 2018, read 20 October 2026
- Meta Advertising Standardsread 20 October 2026
- Third-Party Infringement (Advertising Standards, Intellectual property infringement)Published 30 May 2024, read 20 October 2026
- Unbranded ads or brand channelsread 20 October 2026
- Trademarkread 20 October 2026
- Trademarksread 20 October 2026
- Copyrightsread 20 October 2026
- Misrepresentationread 20 October 2026
- Misleading and false contentread 20 October 2026
- Ad Format and Functionalityread 20 October 2026
- Intellectual Property Infringementread 20 October 2026
- Deceptive Practicesread 20 October 2026
- About TikTok Advertising Policies for Promoteread 20 October 2026
R-04 RQ-color: What do colors mean for music streaming brands and to audiences in Egypt and the Arab world, and what palettes do music streaming brands use in 2025 and 2026?
7 sources
- Arab Flags: Colors and Symbolsread 20 October 2026
- Spotify DESIGN.md (design system extraction)Published 12 May 2026, read 20 October 2026
- Anghami home page (HTML source)read 20 October 2026
- Apple Music web (HTML and stylesheet)read 20 October 2026
- YouTube Music home (HTML source)read 20 October 2026
- Cairo Design Week (student poster)read 20 October 2026
- Anghami logoread 20 October 2026
R-05 RQ-type: What Arabic type conventions hold for screen and social video in 2025 and 2026, how is Arabic paired with a Latin sans, and which open-licensed Arabic typefaces do the sources name?
5 sources
- Arabic typography guide (Insights / Publishing & Arabic Craft)Published 28 April 2026, read 20 October 2026
- The Graphic Design Trends Defining the UAE in 2026Published 3 September 2026, read 20 October 2026
- Arabic App Store Screenshots: 4 Typography Tripwires [2026]Published 9 June 2026, read 20 October 2026
- Cairo Design Week (student poster)read 20 October 2026
- METADATA.pb files of the Google Fonts library (one per family)read 20 October 2026
R-06 RQ-category: What do current music streaming ads and Spotify ads look like (structure, palette, type, motion, sound), and what does every other video on this subject look like?
17 sources
- Ad of the Day: Spotify Wrapped gets first TV spot featuring star-studded UK castPublished 3 December 2025, read 20 October 2026
- Your Favourite Artists reveal Spotify 2025 WrappedPublished 3 December 2025, read 20 October 2026
- What Your Top Song Says About You, Spotify Wrapped 2025, Emraan Hashmi and Raghav JuyalPublished 3 December 2025, read 20 October 2026
- It's time... Go get your Wrapped!Published 3 December 2025, read 20 October 2026
- Mopping Made Fun, Spotify ChalaoPublished 16 September 2026, read 20 October 2026
- أنغامي، جوك له صوت، صوتك بطريقتكPublished 6 November 2025, read 20 October 2026
- Hello India. Love, Amazon Music.Published 4 August 2026, read 20 October 2026
- HEAD TRIP.Published 14 October 2026, read 20 October 2026
- YT 16x9 Horizontal v2Published 7 October 2026, read 20 October 2026
- There's just something in the air today, What's on your #SpotifyWrapped?Published 3 December 2025, read 20 October 2026
- How Our 2025 Wrapped Campaign Turns Your Year in Listening Into a Global CelebrationPublished 3 December 2025, read 20 October 2026
- Spotify ads celebrate fans of Oasis, Doechii and Chappell RoanPublished 14 April 2025, read 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- Spotify strikes a chord with Egyptian AudiencesPublished 26 July 2023, read 20 October 2026
- Regional focus key as Spotify launches 'Listening is Everything' campaign in Saudi Arabia and EgyptPublished 8 September 2020, read 20 October 2026
- Spotify Spotlights Egyptian Rap And Celebrates Fandom In Its Latest Campaign Melouk El ScenePublished 30 June 2022, read 20 October 2026
- Amazon Music cues Sonu Nigam and Usha Uthup for a nostalgic game of AntakshariPublished 6 August 2026, read 20 October 2026
R-07 RQ-ads: Which real 2024 to 2026 ads from Spotify and the competitors our sources name (Egypt, MENA and global) show the hooks, beat shapes, palettes, type, cut rates, sound and endings of this category?
24 sources
- Ad of the Day: Spotify Wrapped gets first TV spot featuring star-studded UK castPublished 3 December 2025, read 20 October 2026
- Your Favourite Artists reveal Spotify 2025 WrappedPublished 3 December 2025, read 20 October 2026
- Spotify, Wrapped 2025, Nattamai, Wrapped Ah Paathu Sollu, SarathkumarPublished 3 December 2025, read 20 October 2026
- What Your Top Song Says About You, Spotify Wrapped 2025, Emraan Hashmi and Raghav JuyalPublished 3 December 2025, read 20 October 2026
- Mopping Made Fun, Spotify ChalaoPublished 16 September 2026, read 20 October 2026
- Laundry Made Fun, Spotify ChalaainPublished 16 September 2026, read 20 October 2026
- It's time... Go get your Wrapped!Published 3 December 2025, read 20 October 2026
- There's just something in the air today, What's on your #SpotifyWrapped?Published 3 December 2025, read 20 October 2026
- Spotify India, channel video feedread 20 October 2026
- Spotify highlights data challenges in Egypt in latest campaignPublished 30 June 2025, read 20 October 2026
- أنغامي، جوك له صوت، صوتك بطريقتكPublished 6 November 2025, read 20 October 2026
- أنغامي، كل احساس له صوت، صوتك بطريقتكPublished 7 November 2025, read 20 October 2026
- أنغامي تشغلّك اللي يشبهك، صوتك بطريقتكPublished 13 November 2025, read 20 October 2026
- الصوت اللي يكمّله على أنغامي، صوتك بطريقتكPublished 27 November 2025, read 20 October 2026
- YT 16x9 Horizontal v2Published 7 October 2026, read 20 October 2026
- Anghami, channel video feedread 20 October 2026
- Anghami Latest TV AdPublished 30 March 2014, read 20 October 2026
- Amazon Music launches first India brand film celebrating Antakshari traditionPublished 5 August 2026, read 20 October 2026
- Amazon Music cues Sonu Nigam and Usha Uthup for a nostalgic game of AntakshariPublished 6 August 2026, read 20 October 2026
- Hello India. Love, Amazon Music.Published 4 August 2026, read 20 October 2026
- HEAD TRIP.Published 14 October 2026, read 20 October 2026
- Apple Music, channel video feedread 20 October 2026
- YouTube Music, channel video feedread 20 October 2026
- Nhar M3a AbduhPublished 16 October 2026, read 20 October 2026
R-08 RQ-refs: Which real, viewable, documented works can serve as benchmarks for narrative and transition grammar, for typography and composition, and for sound and pacing in a music streaming brand film?
18 sources
- Spreadbeats, ADC Awards 2025, Silver Cube, Craft in Motion / Film / Motion Graphicsread 20 October 2026
- Spotify at Cannes Lions 2025: The Week's Unmissable Highlights, Star Power, and MorePublished 24 June 2025, read 20 October 2026
- Spotify: Spreadbeatsread 20 October 2026
- SPOTIFY - Spreadbeats - FCB - Cannes Lions 2024Published 22 October 2024, read 20 October 2026
- Spotify - Spreadbeats (case study)Published 18 June 2024, read 20 October 2026
- Spreadbeats (Cannes Grand Prix 2024) - SpotifyPublished 18 June 2024, read 20 October 2026
- How Our 2025 Wrapped Campaign Turns Your Year in Listening Into a Global CelebrationPublished 3 December 2025, read 20 October 2026
- Spotify used Rive for Spotify Wrapped 2025Published 9 January 2026, read 20 October 2026
- It's time... Go get your Wrapped!Published 3 December 2025, read 20 October 2026
- There's just something in the air today, What's on your #SpotifyWrapped?Published 3 December 2025, read 20 October 2026
- Project Spotify: Music + Talk, Studio Dumbar/DEPT, European Design Awards 2022, Silver, Motion Logoread 20 October 2026
- Listening is Everything, D&AD 2021, Brandingread 20 October 2026
- Hello India. Love, Amazon Music.Published 4 August 2026, read 20 October 2026
- Amazon Music cues Sonu Nigam and Usha Uthup for a nostalgic game of AntakshariPublished 6 August 2026, read 20 October 2026
- Amazon Music launches first India brand film celebrating Antakshari traditionPublished 5 August 2026, read 20 October 2026
- Your Favourite Artists reveal Spotify 2025 WrappedPublished 3 December 2025, read 20 October 2026
- Ad of the Day: Spotify Wrapped gets first TV spot featuring star-studded UK castPublished 3 December 2025, read 20 October 2026
- Brand Film Awards 2026 winners revealedPublished 30 April 2026, read 20 October 2026
Checks on the delivered file
| Gate | Result | Measured |
|---|---|---|
| Cold-viewer clarity | Pass | a fresh sub-agent with no brief opened only the packet (film.mp4 and format.txt) and wrote: sells "Spotify."; does "It lets you find and play music that fits your moment."; idea "Press play and the noise around you turns into music."; the approver matched it to the takeaway (D-48): Sells, Offer's job and One-line idea MATCH, no misread, no major confusion, five minor items. The first read 3 (round 4) is void: it opened the draft by its project path and the critics' labelled packet, no takeaway existed and no match ran. Reads 1 and 2 were not run (the gate entered the skills mid-run, after 02). Limit: the packet path names "04-spotify", which the viewer saw |
| Storyboard lint | Warn | |
| Engine lint and check | Pass | page contract renders 1050 frames in order with one worker; cue sheet re-exports identically (53 events) |
| G0 render exists | Pass | 35.00 s matches the expected 35.00 s; audio present |
| G1 proof readable | By eye | the field type 54 px on 1080 (5 percent), the line 104 and 64 px; the sound words and the card read at full size; checked on the 1920 stills and the phone-size sheet |
| G2 no empty frame | Pass | no run of more than 3 flat frames |
| G3 end hold, CTA share | Pass | end hold 1.47 s (limit 0.6 to 1.77 s for a text-less end card); CTA from 27.5 s = 21 percent (at most 25) |
| G4 one hero per frame | By eye | one hero per beat (data-hero: the HONK word, the field, the street, the line, the field, the logo) |
| G5 no page chrome | Pass | 0 rule hits, depth_layers median 5 |
| Film gate | Warn | fast in-shot motion 0.151, blank mid-section 0.000 s, blue-purple ground 0.000; yellows: hero_share and frame_fill under the floor only for the beats 31.25-35 s, push-ins 12 per minute |
| Richness floor | Pass | hero_share 90.9 percent (floor 30), frame_fill 16 of 16 (floor 10), empty_half 0 s, in_shot_motion 100 percent, longest_still 0 s outside declared holds; depth_layers median 5 (page marks); surface detail (asphalt grain, windows, site frame and hoarding), light events (the press ring, the drop), real material (the rebuilt UI, the official logo) counted by critic A |
| Motion and freezes | Pass | 0 cuts, 0 freezes, 1 black stretch (the declared fade before the logo), 0 white; near-frozen samples 16 (the breath and the logo hold) |
| Seams | Not applicable | one continuous camera, no cuts (look.py reads the drop flash at 19.53 s as a scene change) |
| Captions and sync | Sync pass | no voice, no captions; every cue onset within one frame (critic B: press 7.5, drop 19.5, final hit 33.5 on their frames, 13 jam stabs sample-exact) |
| Loudness | Pass | -14.0 LUFS, LRA 7.4 LU, true peak -1.4 dBFS (target -14, -1 dBTP, D-29) |
| Spec | Pass | 1920x1080, h264, 30 fps, 35.00 s |
| Template distance | Pass | 4 of 6 axes against ice-styles 01-flat-vector |
| Fingerprint | No earlier record | the record is written to ice/review/fingerprint.jsonl inside the project (the run is confined to its folder, so ~/.ice-motion-director/fingerprints.jsonl was not written) |
| Final Frame Contract | Pass | the last frame of the lossless final equals the static logo page on the whole frame: 0 differing pixels |
| Final against the approved cut | Pass | final frames at 960x540 against draft-14: PSNR 36.7 to 43.6 dB at nine times; the lossless final against seeked stills: 0 px on the end card and the logo, specks of at most 29 of 255 on the street layer (raster history, the final rendered in order from frame 0 with one worker) |
| Brand test (brand film QA threshold) | Fail | 0 of 6 random frames read as Spotify with the logo and UI covered (2 NO, 4 WEAK): Spotify green is only on the play circle and the logo, the street colours are not known as Spotify |
| Competitor swap (brand film QA threshold) | Fail | 12.5 of 35 s (36 percent) Spotify-specific, all of it swappable surface (the rebuilt interface, the green, the logo); the idea transfers to any music app |
| Transitions transform the object; value flips (brand film QA threshold) | Partial | transitions pass: no hard cut on 1050 frames (one continuous camera); chapter luma flips at 4 of 7 changes, the last three step down to black |
| Climax duel | Not run |
- -14LoudnessLUFS
- -1.4True peakdBTP
- 30Frame rateframes a second
- 1920 x 1080Resolutionpixels
| Language | Aspect | Length | File |
|---|---|---|---|
| English | 16:9 | 0:35 | ice/ |
Credits and tools
- ice/audio/soundtrack_en.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py; mgaudio (c) 2026 Vincentwei1021, MIT, n/a (original output, mastered to -14 LUFS, -1 dBTP), English version, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/soundtrack_ar.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py; mgaudio (c) 2026 Vincentwei1021, MIT, n/a (original output, mastered to -14 LUFS, -1 dBTP), Arabic version, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/soundtrack_en_v2.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py (--v2); mgaudio (c) 2026 Vincentwei1021, MIT, version 2 levels for the social-profile LRA (mastered to -14 LUFS, -1 dBTP), English version, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/soundtrack_ar_v2.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py (--v2); mgaudio (c) 2026 Vincentwei1021, MIT, version 2 levels for the social-profile LRA (mastered to -14 LUFS, -1 dBTP), Arabic version, full soundtrack 0.0 to 49.0 s, 2026-10-20
All 25 credits
- ice/audio/soundtrack_en_v3.wav (and stems_en_v3/), local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, score and SFX composed by code in ice/audio/score.py (--v3); mgaudio (c) 2026 Vincentwei1021, MIT, version 3: full-level frame-0 horn, no fade-in, end hit at 46.0 and a natural ring-out (mastered to -14 LUFS, -1 dBTP), English 16:9 delivery film, full soundtrack 0.0 to 49.0 s, 2026-10-20
- ice/audio/stems_en_v2/, ice/audio/stems_ar_v2/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-20
- ice/audio/stems_en/, ice/audio/stems_ar/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-20
- ice/audio/soundtrack_en_v4.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--v4); mgaudio (c) 2026 Vincentwei1021, MIT, version 4, the drawn street: timed from ice/plan/cue-sheet.json (36.0 s); mid-honk at frame 0, no fade-in, last hit at 33.5 and a natural ring-out (mastered to -14 LUFS, -1 dBTP; measured -14.08 LUFS, -1.21 dBTP), English 16:9 film, full soundtrack 0.0 to 36.0 s (08b input: ice/audio/master_input_en_v4.json), 2026-10-21
- ice/audio/soundtrack_en_v4.wav: SFX (street noise of the hero car, four jam vehicles, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact), local, code-generated, none, horn, breaker, pile rig, motorbike and key models written in ice/audio/score.py (horn4, road_breaker, breaker_hat, pile_ram, pile_backbeat, bike_rev, key_tick, building on jack_hammer and engine_bass there); UI open, whoosh, click, riser, impact and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 36.0 s, 2026-10-21
- ice/audio/stems_en_v4/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 31 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v5.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v5); mgaudio (c) 2026 Vincentwei1021, MIT, version 5 (D-38 to D-42): timed from the re-timed ice/plan/cue-sheet.json (33.5 s), seven jam cars, an alive ending, smaller peaks at the source (mastered to -14 LUFS, -2.5 dBTP ceiling; measured -14.03 LUFS, -2.68 dBTP), English 16:9 film, full soundtrack 0.0 to 33.5 s (08b input: ice/audio/master_input_en_v5.json; mastered into ice/renders/draft-10-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v5.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact), local, code-generated, none, the same models as v4 in ice/audio/score.py (horn4 with seven horn timbres, road_breaker, breaker_hat, pile_ram, pile_backbeat, bike_rev, key_tick); UI open, whoosh, click, riser, impact (high-passed at 100 Hz) and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 33.5 s, 2026-10-21
- ice/audio/stems_en_v5/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 34 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v6.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v6); mgaudio (c) 2026 Vincentwei1021, MIT, version 6: the version 5 sound on the 35.0 s ice/plan/cue-sheet.json (last hit 32.5, ring-out to 35.0), the jam cars level-matched (mastered to -14 LUFS, -2.5 dBTP ceiling; measured -14.07 LUFS, -2.68 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v6.json; mastered into ice/renders/draft-11-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v6.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact), local, code-generated, none, the same models as v5 in ice/audio/score.py; UI open, whoosh, click, riser, impact (high-passed at 100 Hz) and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v6/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 34 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v7.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v7); mgaudio (c) 2026 Vincentwei1021, MIT, version 7: the version 6 sound with the black end card (D-44 to D-46): the groove under the field, the street dropping out with the fade to black, a reverse-cymbal swell under the logo entrance, the final hit at 32.5 and the ring-out (mastered to -14 LUFS, -2.3 dBTP ceiling; measured -14.04 LUFS, -2.48 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v7.json; mastered into ice/renders/draft-12-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v7.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact; the swell into the final hit), local, code-generated, none, the same models as v6 in ice/audio/score.py; UI open, whoosh, click, riser, impact (high-passed at 100 Hz), the reverse cymbal of the logo entrance and the drum bodies from mgaudio sfx and drums (MIT, project copy; the cymbal is mgaudio's synthetic crash reversed, no sample pack installed), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v7/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 35 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v8.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v8); mgaudio (c) 2026 Vincentwei1021, MIT, version 8: version 7's sound on the re-timed ending (the field 27.5 to 31.5, the fade to black 31.5 to 32.0, the swell 31.9 to 33.5, the final hit at 33.5, the ring-out to 35.0) (mastered to -14 LUFS, -2.3 dBTP ceiling; measured -14.03 LUFS, -2.48 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v8.json; mastered into ice/renders/draft-13-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v8.wav: SFX (street noise of the hero car, seven jam cars, road breaker, pile rig and motorbike; 26 key ticks; soft UI open; soft whoosh; click; riser; impact; the swell into the final hit), local, code-generated, none, the same models as v7 in ice/audio/score.py; UI open, whoosh, click, riser, impact (high-passed at 100 Hz), the reverse cymbal of the logo entrance (mgaudio's synthetic crash reversed) and the drum bodies from mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v8/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 35 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
- ice/audio/soundtrack_en_v9.wav, local, code-generated, none, code-generated with mgaudio (MIT, project copy at ice/audio/lib/mgaudio, from Vincentwei1021/mg-styles-15), no third-party audio, no samples, no AI generation, score and SFX composed by code in ice/audio/score.py (--lang en --v9); mgaudio (c) 2026 Vincentwei1021, MIT, version 9: version 8's sound on the end card re-timed for look.py G3 (the street fading 31.5 to 33.0, the swell 32.5 to the hit at 33.5) (mastered to -14 LUFS, -2.3 dBTP ceiling; measured -14.08 LUFS, -2.48 dBTP), English 16:9 film, full soundtrack 0.0 to 35.0 s (08b input: ice/audio/master_input_en_v9.json; mastered into ice/renders/draft-14-en-av.mp4), 2026-10-21
- ice/audio/soundtrack_en_v9.wav: SFX (as v8: street noise, 26 key ticks, UI open, whoosh, click, riser, impact, the swell into the final hit), local, code-generated, none, the same models as v8 in ice/audio/score.py and mgaudio sfx and drums (MIT, project copy), as above, original output, mixed into the soundtrack, English 16:9 film, 0.0 to 35.0 s, 2026-10-21
- ice/audio/stems_en_v9/, local, code-generated, none, code-generated with mgaudio (MIT, project copy), no third-party audio, as above, 35 pre-master stems written at -6 dB by mgaudio export, mix reference for 08b, 2026-10-21
look.pylint.mjsfilm_gate.pymotion_check.pyfrozen-time.mjsloudness.mjsprobe-mp4.mjstransitions.py
What the export could not find
mediaice/review/ui-fidelity/sheet-ar.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-en-v2.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-en.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-tiles-ar.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
mediaice/review/ui-fidelity/sheet-tiles-en.png not exported: raw fidelity sheet kept local (it may hold other rights holders' content; only its masked share copy is exported)
stages[].minutesminutes per stage not recorded in ice/state.json stages
stages[06].artifactsno animatic render in the run files
gates[].thresholdNOTE.md gates table does not separate thresholds; they are inside each value where the report states them
run-log25 more images left out (24 at most)
run-logmasked in the export: 0 keys or tokens, 0 email addresses, 0 phone numbers, 1 absolute paths (ice/log/conversation.jsonl keeps the verbatim text)
Give your agent a director
Paste one line, then ask for a film in plain words. Ice takes it from brief to delivery and shows you its work at every step you want to see.
npx skills add Omar-Tnzxo/ice-motion-director -g --all 