Repository navigation
Content-aware Insta360 reveals + GUI wrapper. v0.2 hardcoded yaw targets,
so reveals had a coin-flip chance of pointing at the DJ booth versus a wall.
v0.3 scores Insta360 ERP footage frame-by-frame for motion + brightness and
points camera moves at the actual content.
Added
bin/score-360.py— content-aware Insta360 yaw scoring. Samples
source frames at 1 fps in grayscale, slices into 8 horizontal yaw segments
(45° each), and emits per-segment motion + brightness scores to
sphere_score.json. Single-pipe ffmpeg → numpy, near-constant memory.lib/sphere.py:best_yaw_at— pure helper that queriessphere_score
at a given source-local time and returns the yaw with highest weighted
motion + brightness. ReturnsNoneon all-zero windows so callers fall
back to move defaults. ERP-circular smoothing pools seam-adjacent
segments so subjects straddling 337.5/22.5° aren't dropped.start_yawparameter onorbit,crowd_reveal,bpm_sync_orbit,
breakdown_drift— content-aware anchoring. Defaultstart_yaw=0
preserves v0.2 behavior byte-identically.start_yaw+ shortest-path delta ondrop_impact— a target yaw of
337.5° now whips -22.5° (the short way) instead of spinning 337.5°.- Enhanced
dj-edit-mac.commandwith launch menu (New / Re-edit recent /
Quick test / Demo / Doctor), style picker (signature / aggressive / clean),
reference picker (anyma / fisher / rinse), and a "quick test" mode that
renders only the highest-intensity drop (~3 min) before committing to a
full 30-50 min render. Recent projects saved at~/.dj-edit-recent. dj-edit score-360subcommand (placeholder shipped in v0.2.1, now backed
by real implementation).
Fixed — codex round 1 (HIGH severity)
build-edl.pywas queryingsphere_scorewith master-timeline time but
frames are source-local. Multi-Insta360 setups also always read
source_index=0. Now passessource_t=src_inand
source_path=finfo["path"]so each clip resolves to its own source at the
right time.drop_impactwhipped the long way around whentarget_yaw > 180°.
Now computes a signed shortest-path delta in [-180, 180] and animates
start_yaw + delta * progress.
Fixed — codex round 1 (MEDIUM severity)
score-360.pystderr=PIPE could deadlock on long sources where ffmpeg
emits decode warnings faster than Python reads stdout. Switched to
DEVNULLand added-nostdin -hide_banner -nostats.sphere.best_yaw_atreturned arbitrary yaw=22.5° on all-zero/black
windows. Now returnsNoneand the caller falls back to the move's
default yaw.score-360.pynow emitssource_path(project-relative) alongside
basename, so multi-source matching inbuild-edl.pyworks.
Upgrade
brew upgrade dj-edit