The loop Outputs Install Hosted GitHub Install
Splits from the footage you already have

The timer knows your stage time.
Your camera knows every shot.

Splitsmith reads the start beep and every shot out of the audio your head cam recorded, and turns them into splits you can audit shot by shot, coach against your own match, and line up next to your squad.

Open source MIT · any camera with a microphone · runs on your machine, nothing is uploaded · hosted by invitation

Splitsmith's match overview: twelve stages, each with footage, beep, shots, audit state, draw, average split and stage time
Beep timing
±15 ms
Located in the clip, then confirmed by you.
Shot detection
3 voters
Envelope onsets, CLAP similarity and a gradient-boosted classifier vote per shot.
Per shot
split · class
Draw, fire, transition, movement, reload, activation.
Licence
MIT
Runs on your machine. Hosted at my.splitsmith.app by invitation.
The loop

Prepare. Review. Analyse. Deliver.

One match, one folder of clips, four phases. The app keeps score of where every stage is and always knows what to do next.

Review · Audit

Every shot, on the waveform

The detector's candidates sit on the stage audio with their votes. Reject an echo, add a shot at the playhead, jump to the next flag. Confirm the beep first; the trim and detection chain from there.

The audit waveform with thirty shot markers, two flagged, and the current-shot line
Analyse · Splits

The shot table

Time from beep, split, interval class, tier against your baseline. Play the stage and the table follows.

Shot table: shot number, time, split and interval class chips
Analyse · Coach

Where the seconds went

One bar per stage sums your intervals by type against your own match. An interval over twice its type's median is an outlier, and it is named.

The time budget: movement 18.92 s, transitions 9.66 s, draw 1.97 s, fire 1.54 s, each with its share, count and delta against the match
Analyse · Compare

Your squad, aligned to the beep

Every shooter's run on one clock. Shot lanes, a leaderboard with the gap at each shooter's last shot, and audio from whoever you pick.

Leaderboard: Anna Jonsson 28.27 s, Mathias Axell 32.12 s, +3.85 s
Two shooters' shot lanes on one time axis, 32.12 s and 28.27 s
Deliver · Export

Pick a look, see it on your footage

Start from a preset or save your own, then choose the look from a gallery: title page, slates, the summary hold, the shot counter, each previewed on your own footage before you render. A stage that cannot export says why in one line and offers the fix. Out come a Final Cut timeline with a marker per shot, a rendered MP4 with the overlay burned in, a compare grid of the whole squad, or lossless trims. The MP4 can go straight to your YouTube channel.

The export page: the Look gallery with a tile per card and effect, and the rail previewing the stage slate over the shooter's own footage
Outputs

Keep it in the app, or take it out.

In the app

Coach and compare

Shot-by-shot playback with the video, the ruler and the table in sync. Per-shot notes and flags. The whole squad side by side.

  • On your own machine, or hosted at my.splitsmith.app by invitation
  • Desktop sync pushes a local match to a hosted account
  • Share a read-only link to a match or a stage
Final Cut Pro

A marker per shot

An FCPXML timeline with the stages back to back and a frame-aligned marker on every detected shot. Step through on M / Shift+M.

  • Per stage or the whole match
  • Transitions, slates and lower thirds
  • FCP 7 XML for Premiere and Resolve
Rendered MP4

Ready to post

A finished cut with the shot counter and splits burned in, a title page and a stage card, or every shooter in one beep-aligned grid.

  • Presets for the whole export, yours or the built-in four
  • The look from a gallery, previewed on your footage
  • Alpha overlay with the shot clock
  • Compare grid with a mixed squad track
  • Upload to YouTube from the app: chapters, captions and thumbnail, into a playlist, scheduled if you like
Install

Two minutes to your first stage.

01

Install and launchOne command with uv, one to open the app in your browser. The first boot fetches the detection models. Hosted at my.splitsmith.app is by invitation; a local install can sync a match up to it.

02

Drop your clipsFootage from any camera with a microphone: head, chest, gimbal or handheld. Each clip is matched to its stage by recording time.

03

Confirm the beep, audit the shotsThe app finds the beep, trims the stage and runs detection. You confirm what it found; the splits are yours.

Local install# Python 3.11+ and uv; the UI fetches ~440 MB of detection models on first boot
$ uv tool install splitsmith
$ splitsmith ui
One clip, no models# The envelope-only single-clip path: shots, report and FCPXML
$ splitsmith single --video stage3.mp4 --time 32.12 \
  --stage-name "B6 Rear" --stage-number 3 --output ./b6-rear
Containers# Server, worker and agent roles from one image
$ docker pull ghcr.io/mandakan/splitsmith:latest
$ docker compose -f docker-compose.yml -f docker-compose.ghcr.yml up -d
Hosted

my.splitsmith.app, by invitation.

The same app, hosted: upload from any device, sync a local match up, share read-only links, and let a coach or squadmate comment on your stages. Sign-in is a magic link and only invited emails get one. Leave yours and we will email an invite when there is room.

One email when there is an invite for you, nothing else.

Detection

Trained on audited stages, not on a demo reel.

Every release retrains the shot ensemble on a corpus of real beep-to-last-shot audio with hand-labelled shot times, across cameras and mounts. Every stage you audit is the same kind of data. Contributing your own audited stages to the corpus is on the roadmap; today the fixtures come from the maintainer and a handful of squadmates.

Interval classes
DrawFireTransitionMovementReloadActivation

A split under 1.0 s is a split, under 2.0 s a transition, longer is movement; the auto-classifier's cutoffs, and every class is yours to override per shot in Coach.

Reads
MP4MOVMKV.360any ffmpeg input