v0.14 · 2026-06-23
self-contained — no Python
** Major: OnMic no longer needs Python at all. **
- Analyzer fully ported to JavaScript (js/engine.js): WAV decode
(16/24/32-bit int + 32-bit float, multichannel, windowed), clip/
offset timeline reconstruction, RMS, level normalization, dominance/
overlap, smoothing — verified to match the old Python output.
- Mix/isolated channel detection ported to JS too (no detect_channels.py).
- AI voice detection (silero) now runs IN THE PANEL via ONNX Runtime
Web — no Python, no PyTorch. Fixed the silero v5 call to feed the
required 64-sample context (576-sample input) + scalar sr; max
speech prob went 0.002 → ~1.0. Auto-boosts quiet mics to a normal
speech level (with soft-limiting) before inference. Falls back to an
energy+zero-crossing voice filter if the model is ever unavailable.
- Panel runs everything internally; the Python spawn is gone.
- AI model + runtime are fetched once (fetch_vendor) and bundled, so
end users still get a single one-click install.
- Distribution is now Python-free: "Install OnMic.command" just allows
the panel and copies it in (no venv/pip). The panel writes its working
files to ~/Library/Application Support/OnMic when no dev project folder
is set. build_dmg.command bundles the self-contained panel + AI.v0.13 · 2026-06-22
v0.13 — 2026-06-22
- Proper extension icon: OnMic mic-with-on-air-light mark shown in
Premiere's Window > Extensions menu and the panel tab. Normal /
RollOver / Dark variants at 1x + 2x (retina) in /icons.v0.12 · 2026-06-22
named "OnMic"
- Product name: the tool is now "OnMic" (was "Multicam Switcher").
New logo (mic + on-air light) and wordmark in the panel header;
Window > Extensions menu item renamed to "OnMic".
- Visual redesign: card-grouped sections, settings-list rows with
hairline dividers and aligned controls, matched widths for the
profile dropdown / save box, Premiere-blue accent (was purple),
gradient progress bar, polished buttons + focus states.
- Standard cutting method re-tuned to a calmer pro baseline
(Ignore Cuts 2.0s, Delay Cuts 0.15s); Fast 0.8s/0.08s,
Relaxed 4.0s/0.25s — grounded in talking-head/podcast norms.v0.11 · 2026-06-22
v0.11 — 2026-06-22
- Better default cutting settings. Standard now matches the common
podcast-editor baseline: Delay Cuts 0.1s (was 0.25s), Ignore Cuts
Less Than 1.0s (was 2.0s). Fast = 0.05s / 0.7s, Relaxed = 0.25s /
2.5s. Snappier, more natural default pacing.
- Renamed the "Preview mapping only" button to
"Preview the cuts (nothing changes yet)" for clarity.v0.1 · 2026-06-22
first working version
The whole pipeline works end to end: analyze audio straight from the
Premiere timeline, decide who is talking, and apply non-destructive
camera switches — all from a dockable panel.
Analyzer (analyze.py):
- RMS energy + silero VAD (auto-falls back to RMS if torch missing).
- Dominance / overlap detection; smoothing state machine
(min/max shot, switch delay, lead offset, blip rejection).
- Reconstructs the EDITED timeline from each mic's clips (handles
head/tail trims and internal cuts), bounded to the real length.
- Per-channel level normalization so quiet mics aren't ignored.
- Gapless cuts.json output + console timeline + [diag] talk-time
and [progress] lines.
- Validation gate (unique names, cameras reference real speakers,
every speaker on a camera, etc.).
Channel detection (detect_channels.py):
- Flags stereo/mono MIX channels (near-identical) and suggests the
isolated mic channels, so a poly WAV's mix tracks are skipped.
Probe (probe_audio.py):
- Per-channel loudness meter + peak/median, with start/duration args.
Injector (ExtendScript via the panel host + standalone injector.jsx):
- enable_disable mode (QE razor split + TrackItem.disabled) and a
flatten fallback. Audio tracks untouched. Validation + confirm gate.
Panel (CEP extension, professional-style layout):
- Profiles: save / load / delete named setups (counts, names, camera
tags, cutting style). Stored locally, persist across restarts.
- Layout Info: Cutting Method, Wide-Shot Frequency, Speaker #, Camera #.
- Advanced: Delay Cuts, Ignore Cuts Less Than, Output mode.
- Speaker Names A1..An (audio tracks) + Tag Speakers V1..Vn (cameras).
- Reads audio + video tracks from the active sequence automatically;
channels chosen automatically (mix skipped). Re-reads before every
run, plus a self-correcting re-read shortly after Premiere startup.
- One-click "Create Multi-Cam Edit" or "Preview mapping only", with a
progress bar and Stop button.
- Default speaker names are distinct (Speaker 1..N) instead of the
source filename.
- Dominance margin raised (Standard 9 dB) to reduce false cuts from
mic bleed.
Install:
- setup_mac.command (Python env), install_panel_mac.command (panel).
====================================================================