BUNNY STAGE 2: a parallel-octave duet about depending on machines, with a Stranger Things intro and a Klingon Plan 9 goodbye
A 3:21 cinematic EDM short. One bunny on one dawn planet becomes seven planets orbiting a glowing machine hub. The synth lead chants the thesis (we will depend on machines, multi planetary, stage two); Daniel doubles it three octaves below, autotuned to a matching D Dorian contour, and adds his own commentary (don't you wish you were, maybe you already are). Stranger Things crickets fade into the opening; Plan 9 closes the outro in Klingon — Daj. Hov leng wImaq. Qapla', leng. CC BY 4.0.
BUNNY STAGE 2: a parallel-octave duet about depending on machines, with a Stranger Things intro and a Klingon Plan 9 goodbye
Watch on YouTube. A 3:21 cinematic EDM short. One bunny on one dawn planet becomes seven planets orbiting a glowing machine hub. The synth lead chants the thesis — we will depend on machines · multi planetary · stage two — and Daniel (narrator_deep) doubles it three octaves below, autotuned to a matching D Dorian contour, while adding his own commentary: don't you wish you were · maybe you already are. Stranger Things crickets fade into the opening. Plan 9 closes the outro in Klingon.
This one is licensed CC BY 4.0. Engine code (Napkin Films, ChipForge) is GPL-3.0-or-later.
The premise
Bunnies become a multi-planetary species. Stage 2. Life depends on machines.
The film opens on one bunny standing on one dawn planet. By the end, that bunny is one of dozens scattered across seven planets in orbit around a glowing machine hub — the thing they all now depend on.
Seven musical sections, seven visual acts:
AWAKENING one bunny, one planet, bell pulse
LIFTOFF bass enters, rocket streaks rise from the home planet
TRANSIT drums lock 4-on-floor, distant planets fade in
BLOOM the machine hub reveals, beams to every planet
PHILOSOPHY drums drop, camera zooms into the hub
RETURN pull back, populated planets, canon climax
RESOLUTION the settled diagram, fermata on D
The film never tells you in text what it means. The visuals carry the narrative. The audio carries the language.
The chant — a parallel-octave duet
SYNTH LEAD (chipforge vocal_lead_ee, A5–D6 — high, female-ish synth)
"we will depend on machines to live"
"multi planetary"
"stage two"
DANIEL (ElevenLabs narrator_deep, A2–D3 — three octaves below)
doubles the synth thesis statements
AND adds his own commentary:
"don't you wish you were"
"maybe you already are"
PLAN 9 (ElevenLabs og_glenda_bunny, outro signoff, in KLINGON)
"Daj. Hov leng wImaq. Qapla', leng."
(Strange. We claim the star journey. Farewell, traveler.)
The two voices ride in parallel octaves three apart. They never collide because they're so far apart in register. The synth holds the bright melodic anchor; Daniel grounds it in the bass.
The autotune problem — and the --force-pitch fix
autotune_voice.py uses an autocorrelation pitch detector per segment. On polysyllabic words like planetary or machines the detected fundamental jumps around across vowel transitions and the detector frequently reports "unpitched" — which makes autotune skip that segment entirely. So a 7-note melodic contour intended to apply across "Multi planetary" might only actually shift 1-2 notes, with the rest passing through unchanged. Choppy artifacts.
Fix: added a --force-pitch HZ flag to autotune_voice.py. When set, both autotune_words and autotune_continuous use the provided fundamental instead of running detection. Threaded through every Daniel phrase at force_pitch_hz=120.0 (his typical speaking fundamental). All 7 notes of the "Multi planetary" hero contour now apply cleanly with shifts in the −3.5 to +3.5 semitone range — natural delivery, audible melodic shape, no warping.
Note 0: 120Hz → 110Hz (-1.5 st) "Multi"
Note 1: 120Hz → 110Hz (-1.5 st) start of "planetary"
Note 2: 120Hz → 131Hz (+1.5 st) pla
Note 3: 120Hz → 123Hz (+0.5 st) ne
Note 4: 120Hz → 110Hz (-1.5 st) ta
Note 5: 120Hz → 98Hz (-3.5 st) (pre-resolve)
Note 6: 120Hz → 147Hz (+3.5 st) ry — final resolve up
That's the hero lead's MULTI_PLANETARY contour (A A C B A G D) transposed three octaves down into Daniel's natural bass register. The melodic motion matches the synth chant's melodic motion exactly, just shifted down so Daniel can speak it naturally without falsetto.
Other bugs found along the way
1. autotune_continuous was dipping to zero at every internal segment boundary. The code was fading each segment's end + the next segment's start, then overwriting the output buffer with the faded array. At every internal note boundary the amplitude dipped to zero for ~30 ms — audible as clicks/skips on multi-note continuous-mode shapes. Fix: only fade the OUTER edges of the whole clip (first segment's start, last segment's end); internal boundaries pass through unfaded.
2. ElevenLabs narrator_deep inserts 300–600 ms breath pauses mid-phrase. A clause boundary like "We will depend [400ms silence] on machines." gets baked into the TTS clip. When placed against music, that gap reads as a confusing mid-phrase skip. Fix: new _compress_silences() helper using pydub.silence.detect_silence — shrinks any silence ≥180 ms down to ~60 ms before autotune. Compressed phrases: we_depend 2.56→2.11s, maybe 1.84→1.24s, multi_lo 1.84→1.02s, stage_two 1.52→0.98s, depend 2.00→1.83s.
Both fixes live in the engine going forward.
The bookend — Stranger Things crickets blend into D Dorian
BUNNY MANDALA used a soft sine-bell intro and a Sanskrit "Shubh raatri, namaste" outro. For STAGE 2 I wanted the intro to feel liminal — like a cold-open from a sci-fi show before the music kicks in.
So the 5.5s intro layers two sources:
- Stranger Things crickets (an ElevenLabs-generated atmospheric chirp file, 2.5s looped to 5.5s) at full level for the first 2s
- A 5-note D Dorian ascending bell pulse (D4 → A4 → D5 → F5 → A5) enters at 2.0/2.55/3.10/3.65/4.20s while the crickets duck via volume automation
The cricket bed BLENDS INTO the music rather than cutting hard. By 5.5s the bells are sustaining alone and hand off cleanly to the film's AWAKENING section.
The outro is a descending D-Dorian bell tail (D5 → A4 → F4 → D4) under Plan 9 saying — in Klingon — "Daj. Hov leng wImaq. Qapla', leng." (Strange. We claim the star journey. Farewell, traveler.) Same og_glenda_bunny persona that does the Sanskrit signoff in BUNNY MANDALA, but this time the cyborg bunny speaks the language of warriors. Three Klingon clauses mirror the English arc of strangeness → multi-planetary identity → farewell, and the final Qapla' is the iconic Star Trek sign-off. A Plan 9 wink at Trek across the closing bell tail.
Visual polish
Almost no on-screen text. One small S T A G E 2 wordmark fades in over the first ten seconds and out again. A tiny bottom-right credit during RESOLUTION. That's it.
The visuals do the heavy lifting:
- Nebula background — pre-computed numpy noise cloud, gaussian-blurred, tinted per section
- 3-tier parallax starfield (far / mid / close) that shifts slightly with camera zoom for depth
- Lambertian planet shading — each planet has a soft terminator gradient + specular highlight + atmospheric rim glow
- Animated machine hub — three dotted rotating ring orbits at different tilts/speeds + plasma core that wobbles with the kick
- Tapered beams — thicker near the hub, thinner near the planet end, with 3 traveling data packets per beam
- Multi-stage rocket trails from the home planet during LIFTOFF
- Bell-pulse with 4 light shafts at the AWAKENING moments
Production stack
- Engine: Napkin Films (Python + PIL → FFmpeg). 854×480 @ 12fps. Film: 2260 frames, 188.33s. Bookended: 201.7s.
- Music: ChipForge — songs/laboratory/bunny_stage2.py (1129 lines). Cinematic palette (T3 brightness 7.5 kHz, Tier-E reverb, Sub-C mode, R3 dynamics regime). 8 channels. D Dorian just intonation. BPM 132 with a breathing tempo curve (+4 in BLOOM, −4 in PHILOSOPHY).
- Per-note modulation matrix (ADR-016):
- Sub — envelope → ring_modulation @ carrier 58 Hz ("machine hum")
- Vocal lead — LFO → pitch vibrato + ring_swell @ apex notes
- Bloom — periodic frequency_shifter for "orbital doppler"
- Channel balance audit: all 8 channels passed
validate_song+channel_balance_auditfrom ADR-027 — no silent / dominant / clipping channels. - Voice generation: scripts/voice_bunny_stage2.py → ElevenLabs
narrator_deep(Daniel) for 7 unique cached phrases → autotune viascripts/autotune_voice.py --mode words/continuous --blend 0.68 --max-shift 6 --force-pitch 120→ silence compression via pydub → 38 placements assembled into voice stem. - Voice processing chain: HP 80 Hz → +1.2 dB @ 200 Hz (warmth) → +1.5 dB @ 3 kHz (presence) → alimiter @ 0.94 → stereo upmix → +3.5 dB output.
- Mix: sidechain duck against music (threshold 0.06, ratio 2.5:1, attack 40 ms, release 400 ms) → amix → master limiter @ 0.97. Mean −20.5 dB, max −0.6 dB.
- Bookend: scripts/bunny_stage2_bookend.sh — assembles 5.5s intro (cricket bed + D-Dorian bells + cards) + film + 7.5s outro (descending bells + Plan 9 Klingon signoff) → concat with master limiter at −0.92 dBFS.
The thesis, distilled
The film is about a thing we all already know: we depend on machines, and the machines we depend on are getting bigger and further away. Stage 1 was Earth. Stage 2 is the seven planets around the hub. Stage 3 — Plan 9 hints at — is something stranger.
We've always been multi-planetary.
Daj. Hov leng wImaq. Qapla'.
License
Film: CC BY 4.0. Remix it, repost it, drop it into your own thing. Credit "Napkin Films / Organic Arts LLC" and link CC BY 4.0.
Engine code (Napkin Films, ChipForge) is GPL-3.0-or-later.
ElevenLabs voice audio is licensed content under the ElevenLabs platform ToS and is not redistributed.
Related films
- BUNNY MANDALA — the predecessor's Sanskrit-mantra meditation, same
og_glenda_bunnysignoff voice with a different language - LFG ORBIT — Plan 9 and OG Bobby drive a Tesla into orbit
- BUNNY IN THE CLOUD — Plan 9 finds millions of bunnies running the AWS cosmos