Double elimination
Winners and losers brackets; out after two losses. Grand final with reset, or a chase-the-ace series.
- Winners Round 2 — Race 1
- Losers Round 3
- Chase the Ace — Race 2
Race directors
Everything that runs the day from the desk: calls in one voice, an AI commentator, stream graphics, brackets and marshalling, all working from the same timing.
Race calls
Laps, holeshots, results and "next up" — spoken by dd-pits instead of FPVTrackside's own speech, in your club's own wording.
Calls are read from FPVTrackside's own Sounds.xml, so the phrasing and on/off switches you set there carry over. dd-pits finds FPVTrackside's files itself, and an audit flags settings that disagree.
dd-pits sets FPVTrackside's speech volume to match, so you never hear both — or neither. No voice set up? FPVTrackside keeps speaking and dd-pits stays out of the audio.
dd-pits listens for FPVTrackside's live events as well as polling it. Voice packs of pre-generated clips make common calls play instantly.
Hurry Up, Announce Race and the other calls FPVTrackside binds to keyboard shortcuts — trigger them from the laptop or any phone at the field.
Tell the voice how to say a tricky callsign without changing how it's spelled anywhere else.
When the operator moves to the next race, anything still waiting to be said about the last one is dropped.
Commentary booth
Play-by-play and colour written from the live timing data. Commentary and race calls share one audio bus, so a lap call always cuts in instead of waiting behind colour.
Mix and match. /setup/models checks the machine and installs the local models for you.
Clone a voice from a recording you upload, or record one straight in the browser. Qwen can also design a voice from a description.
Personality, humour, energy, language and accent. Solo or a two-person duo — and you choose which phases and moments it talks about.
Play it through the laptop's speakers, or add /booth.wav to OBS. Connect the OBS websocket and dd-pits delays the video automatically to stay in sync.
The /booth page shows the session's AI spend and the recent on-air lines.
A Windows race PC can borrow a Mac's GPU over the LAN with -model-host and -model-url.
Run the writer and the voice locally on a Mac and the whole booth works with no network at all.
On stream · 22 overlays
Every overlay follows the meeting on its own and sits transparently over any scene. Open the gallery in dd-pits, customise any of them (titles, colours, which heat, how many pilots), watch the preview update, and press Add to OBS. It lands in the scene you're on. Or copy the URL into a Browser source.
Manually in OBS: Sources → + → Browser → paste the overlay URL, width 1920, height 1080.
New Brackets
Seed the pilots, pick a format, and dd-pits draws the whole bracket. Every race lands on your timer — RotorHazard or FPVTrackside — the moment its line-up is known, and every result moves the bracket on by itself. You just fly.
Pilots come in ranked by best consecutive laps. Drag to adjust, add late entries, choose the format.
Each race becomes a RotorHazard heat or an FPVTrackside race, with the pilots seated, as soon as its line-up is known.
Finish a race and the bracket advances: winners up, losers down, finalists seated, the champion crowned.
Winners and losers brackets; out after two losses. Grand final with reset, or a chase-the-ace series.
The qualifier sheet, race for race. Ends in a final that ranks the top four who go through.
A qualifier per bracket. The lowest bracket flies first and its top finishers move up into the next.
The lowest seeds race first; the top finishers climb into each next race against higher seeds.
Brackets by seed, several rounds each, ranked on a points table you set. Drop-worst optional.
The engine is the same one behind the Stages in bob9's FPVTrackside and the AUFPV platform, so a bracket comes out identical in all three.
RotorHazard 4.0 or later
dd_pits into src/server/plugins.Back FPVTrackside
localhost:8088.Marshalling · RotorHazard timers
dd-pits reads each pilot's signal from your RotorHazard timer, finds the enter and exit lines for you, and points at the laps that look wrong, with the fix one tap away. Corrections go back through RotorHazard's own marshal save, so results, brackets and FPVTrackside all follow.
Auto-detect measures the background and the passes and picks the enter and exit lines that give steady, believable laps, then tells you how sure it is and why.
Double counts, stray signals, missed passes (with the weak peak where it probably was), passes only just over the line, and too few laps for the race.
Every pilot on one time axis. A weak bump that lines up with another pilot's strong pass is called out as their signal bleeding across, not a lap.
Drag the lines and the laps recalculate as you go, by RotorHazard's own rule. Tap a pass to drop it, tap the trace to add one. From the laptop or a phone at the field.
Corrections save through RotorHazard's own marshal save, and Use these lines from now on sets the node for the races to come.
When FPVTrackside times with a RotorHazard, dd-pits finds the timer in FPVTrackside's settings and marshals from its signal. Corrections land back in FPVTrackside.
After the race
Paste a YouTube stream address and place one heat on the timeline. Every heat gets a ▶ Watch link, and dd-pits builds a chapter list to paste into the video description.
Streamed with nobody on the mic? Generate commentary for finished heats, and the Watch player plays it over the muted video — in sync as you scrub.
See it all working together.