JS / DODO
DevLog

One Light-Day: 16 music videos from Remotion, NASA data and diffusion models

Oct 27, 202620
One Light-Day: 16 music videos from Remotion, NASA data and diffusion models

On 18 November 2026 Voyager 1 will be so far from Earth that its signal, travelling at the speed of light, needs a full day to reach us. One light-day. Launched in 1977, it is the most distant object people have ever built, and it is still talking. I was born in 1975, so Voyager is more or less my peer, and the Grand Tour has fascinated me for as long as I can remember.

That is where One Light-Day comes from: a sixteen-track series following both probes from the launch pad at Cape Canaveral past Jupiter, Saturn, Uranus and Neptune to the edge of the Sun's influence and beyond. Every track has its own film, and a new one comes out every few days until 18 November, when the last one, the title track, is released. The tracklist, the mission timeline and a live map of where the probes are right now are at one-light-day.carnaby.sk.

YouTube playlist : www.youtube.com/playlist?list=PLQO8YC-bobdE.

Music first, pictures later

The music was made in Suno: synth in the spirit of Jean-Michel Jarre, whom I grew up with. I don't want to copy him, his melodies are out of reach for me, but that sound carries a lot of nostalgia. The series has four blocks (Departure, The Giants, Grand Tour, Interstellar Space), each with its own palette and mood. For the first time I finished all the music before starting on the videos. The opener, Alignment, came from the V6-wild model opening up the melody and a cover through full V6 finishing it.

I set a few rules on day one. It is a fan tribute, so no NASA logo and nothing that looks official. No recognisable people. No countdown in the launch track, the most predictable choice in the world. And no Carl Sagan quote, the most worn-out line in the whole subject.

Why Remotion

Diffusion video is great for mood, but for a series about a real mission it has two problems: glitches and physics. The model does not know what Voyager looks like, does not know Io has no air, and cannot hit a beat. So the videos are assembled in Remotion, which means video as React components. As a React/TypeScript developer I feel at home there: every frame is a function of time, so cuts on the beat, probe trajectories and captions are code you can version, test and re-render at any time.

The whole thing is a monorepo (Nx + pnpm) I built with Claude Code: Remotion compositions, a shared library of visual components, a track analyser (tempo, beats, sections, energy), a tool that pulls the real probe trajectories from JPL Horizons, a source and licence check for every borrowed image, and an Astro website running on my NAS at home.

One track, one session

Every video gets its own Claude session that follows a /song skill:

  1. I drop in the WAV, the analyser finds the beats and sections, and I confirm or correct them by ear.
  2. Claude proposes two or three directions as a table: time, what we see, source (Flow, NASA photo or programmed scene), camera move, and what in the music drives the moment. With a credit estimate.
  3. For the chosen direction it writes the prompts. I generate by hand in Google Flow: images with Nano Banana (free), video clips with Omni Flash (paid in credits, roughly 230 to 330 per track).
  4. Every delivered clip is checked: real length, baked-in black bars, micro-jitter (Omni Flash shakes by a pixel on a locked-off camera, so we wrote our own stabiliser) and small defects retouched.
  5. Remotion puts it together with NASA photos and programmed scenes and renders at 1440p.

I start each track session by hand so I can iterate with it. At the end it writes a final report, and the main orchestrator session folds the lessons back into the skill. The Flow rules file opens by saying that every rule in it was paid for with a rejected generation. In a month it grew to almost 70 kB.

One more file holds the series together: after each render the track writes down its main visual device and what later tracks should avoid. That is why nothing repeats, even after sixteen films.

What diffusion models taught us

This is the most interesting part, because it shows where their limits are today.

They cannot turn an object under fixed light. Omni Flash zoomed into the Golden Record and smeared its label, Veo squashed it into an ellipse. The fix: Nano Banana relit the real NASA photo and Remotion turns only the label, at the true 16⅔ rpm, while the grooves stay still.

They don't do airless physics. Every volcano on Io came out as smoke, an explosion with sparks or a mushroom cloud. The video uses programmed particles flying on ballistic arcs instead, and Pele's plume is its true 300 km tall.

Machines fall apart. On a camera pull-back the probe transformed like a Transformer, at Uranus it reassembled itself three times. From track nine on, the probe in programmed scenes is a 3D model with a cleaned, logo-free texture, and the rule is: move the camera, not the machine.

They take words literally and ignore negations. "Fine silky folds" in a haze turned into satin fabric, "lightning" on Jupiter gave forked Earth bolts, and "no tonearm in the frame" put a tonearm right on the record. Describing shape and position works: "soft round glows deep inside the clouds, like a lamp behind fog".

Every planet with thin rings becomes Saturn. Uranus and Neptune kept getting wide bright rings, so Uranus is a computed globe with its rings at their real radii.

Their stars rush past like warp speed. So we draw the stars ourselves and Flow gets pictures without any.

The trend shows in the numbers too. On Golden Record 12 of 16 clips were text-to-video and almost all were accepted on the first try. On Io I threw away 8 generations, and every one of them became a programmed scene. Uranus is mostly procedural, and Poke, the track about engineers working around a failed memory chip in 2024, is programmed almost entirely. Diffusion stayed where nothing beats it: living light, a sea before dawn, mist over Madrid, a snowy hill. Physics, machines and timing belong to code.

Real data instead of illustrations

What I enjoyed most is how much you can get out of public data. The flyby trajectories come from JPL Horizons, so when the amber and azure traces bend around Jupiter, that is the real path. The Neptune track runs a time-lapse of 327 raw Voyager 2 frames from the PDS archive. Termination Shock plots Voyager 1's daily magnetic field readings from 2004. In Pale Blue Dot the Earth grows out of the dot into a DSCOVR image from 14 February 2026, at the same hour as the original photo 36 years earlier. And in the track about the antennas at Goldstone, Madrid and Canberra, the azure Voyager 2 only ever appears in the Australian sky, because from where it is today it never rises over California or Spain. None of this is explained on screen. If you get it, it's a bonus.

A few numbers

From the first spec (26 September) to the last render took less than a month. 498 commits, about 30,000 lines of TypeScript, more than 170 generated video clips including the rejected ones, and 133 borrowed NASA/JPL images, each with its source and licence on record. All 16 films are done and scheduled on YouTube.

What's next

I don't remake finished videos: the journey is the point, and old work is a seal of its time. I have already started turning the tools from this project (the skill, the analyser, the clip checks, the shared components) into a common repo for future series. That is a topic for another devlog.

Until then, have a look at one-light-day.carnaby.sk, where the first tracks are already out. The last one, One Light-Day, comes out on 18 November, the day Voyager 1 crosses one light-day.