From fb1d9f229ef4350af27b847cd7987fd38d124591 Mon Sep 17 00:00:00 2001
From: gator
Date: Mon, 7 Sep 2026 23:27:57 +0000
Subject: [PATCH] Hear the script before paying to film it
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Filming is $0.40 a shot. Speaking the same words is a few hundredths of a cent.
So the narrative — does it flow, is the joke in the right place, does it drag —
can now be judged for about one percent of the cost, using the opening stills
as placeholders and the pet's real voice.
It also replaces a guess with a measurement. Line length was estimated from a
word count and hoped to fit eight seconds; speaking it says exactly how long it
takes, and a line that runs over is flagged before anything is filmed rather
than after.
---
script.html | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 129 insertions(+), 1 deletion(-)
diff --git a/script.html b/script.html
index 30bd572..07862a8 100644
--- a/script.html
+++ b/script.html
@@ -371,7 +371,16 @@ function render(r) {
+ 'pet’s likeness. Cutaways sit across the joins so the cut is never on screen. '
+ 'All of it has been chosen for you — change anything you disagree with, or '
+ 'go straight to filming.
'
- + '
The shots
'
+ + '
Hear it first
'
+ + '
'
+ + '
Filming costs real money; speaking the '
+ + 'words costs about a hundredth of a cent. Run it through in your pet’s voice '
+ + 'over the opening stills first, and only film once the timing and the jokes land.
'
+ + ''
+ + ''
+ + ''
+ + '
'
+ + '
The shots
'
+ s.segments.map(function (x) { return shotHtml(x, false); }).join("")
+ own
+ film;
@@ -521,6 +530,7 @@ function wire(locked) {
};
});
bindPics();
+ bindPreviz();
bindFilm((DATA && DATA.project) || {});
bindPost();
if (locked) { bindBottom(); return; }
@@ -910,6 +920,124 @@ async function loadTakes() {
});
}
+// The run-through: each opening still held for exactly as long as its line
+// takes to say. No video is generated, so this costs nothing to watch again.
+var PZ = null, PZTIMER = null;
+
+function pzPaint(lines) {
+ var el = document.getElementById("pzout");
+ if (!el) return;
+ var segs = ((DATA && DATA.script && DATA.script.segments) || []);
+ var byIdx = {};
+ (lines || []).forEach(function (l) { byIdx[l.index] = l; });
+ PZ = segs.map(function (s) {
+ var l = byIdx[s.index] || {};
+ return { index: s.index, url: l.url || "", seconds: l.seconds || 0,
+ over: !!l.over, plate: s.plate_url || "", line: s.line || "" };
+ }).filter(function (x) { return x.url; });
+
+ if (!PZ.length) { el.innerHTML = ""; return; }
+ var total = PZ.reduce(function (a, b) { return a + (b.seconds || 0); }, 0);
+ var bought = segs.length * 8;
+ var over = PZ.filter(function (x) { return x.over; });
+
+ el.innerHTML = '
Spoken, this runs '
+ + total.toFixed(1) + ' seconds but only ' + bought + ' seconds are being '
+ + 'filmed. Something will be cut off. Shorten the words, or buy more length.
'
+ : '')
+ + (over.length
+ ? '
Shot' + (over.length > 1 ? 's ' : ' ')
+ + over.map(function (x) { return x.index; }).join(", ")
+ + ' will not fit in eight seconds: '
+ + over.map(function (x) { return x.index + " runs " + x.seconds.toFixed(1) + "s"; }).join(", ")
+ + '. Trim those lines before filming.