MV temp sensitivity shifts muzzle velocity with powder temperature (≈0.5–1.5 fps/°F for stable powders; 0 to ignore).
Paste a measured absolute Cd-vs-Mach curve (Lapua radar, Hornady 4DOF, AB export). In CDM mode drag uses this curve ÷ sectional density — the BC field is ignored. Seed from the current G7 BC to get an editable starting curve.
Turn each effect off to isolate it. Angle of fire applies the look angle; Direction of fire applies azimuth (feeds the vertical Coriolis term).
Dial values assume a scope tracking in true units (10 mil/rev typical). Wind column is the full solution for the entered wind, read L/R into the wind. Elevation · Windage. Rows turn amber near transonic and red below the speed of sound — treat those as unreliable.
Crossing angle: 90° = full-value crosser, 0° = moving straight at/away. Speed uses the load & environment set on the Solver tab. Time it on a stage: mph ≈ gap_ft ÷ seconds × 0.682.
mph ≈ gap_ft ÷ seconds × 0.682
Lead = (target speed × sin angle) × time-of-flight, expressed angularly. Hold into the direction of travel. "Trap/ambush" shooters hold a fixed lead and break the shot as the target reaches it; "tracking" shooters maintain the lead through the swing.
Everything here is editable any time — set approximate values now, refine on the line. A match → stages → targets. Export saves a JSON file; Import loads one.
A 400, B 600, plate 850
Each target has its own range + direction of fire (set on the map via Build from map, or edit inline). Set your Dialed elevation (or dial for a target) and every other target shows its hold: U = hold over / aim high (far — use the tree), D = hold under / aim low (near — upper stadia). The reticle below plots the exact mark to place on each target. Stage wind = one call rotated to each bearing; Per-target = wind per target. Views: Solution (dial/hold/wind/lead) · Ballistics (vel/Mach/TOF/max-ord) · Target (shape/size/mover/shots).
Ordered engagements: position → target → shots, each with its live dial/hold/wind. Tap a shot dot to cycle hit (green) → miss (red) → clear; stage points = hits. Timer runs the stage vs par. Generate from COF builds it from the position notes; edit/add/reorder any row. Scoreboard below totals the match.
Hit rate by distance, target shape and position — only engagements you’ve scored count. Called wind is snapshotted when you start the stage timer; enter the actual wind afterward to track your calls (Δ = your error).
The ◉ reference sits at the crosshair (your dialed elevation). Each other target is plotted at the exact mark to place on it: near/over-dialed targets land in the upper stadia, far targets drop into the tree; horizontal = wind hold. Drawn in mil to match your K540i SKMR4+.
Lay out on map opens the range full screen: pick Target, Position or Prop and click the map to drop each one; drag to adjust, click a point to name it. Edit location sets where the range is. Add position/target adds one point by search or coordinates. Load any saved point as S/T to compute a shot. (The Shooter/Target pins below are only for a one-off shot.)
Live weather from Open-Meteo — NOAA HRRR where available (US), global model elsewhere. Needs an internet connection on the viewing device.
Plug in a paid source for fresher, higher-res imagery. Keys stay in this browser and go only to that provider.
Applying sets temperature, station pressure, humidity, wind speed and (relative to your direction of fire) wind clock, plus latitude. Confirm against your Kestrel on the line — model data is a regional estimate.
This is a single standalone shot (not a stage). Place a Shooter and a Target pin — range & bearing compute instantly; look angle from terrain (Open-Meteo). Edit the range to your laser reading if the map is off; the solution recomputes. Apply to solver sets direction of fire + look angle on the Solver tab.
Save target pins to the venue, pick a firing position, then Build. Range/bearing/incline come from the map; dial/wind/TOF from the current load & conditions, with the wind rotated to each target's bearing.
Not connected.
Connect, then lase — services + raw notification bytes stream here.
Lase fills the armed target (⊹ on a target row, or “Lase targets” on the Match tab) with range + angle + azimuth, marks it ranged (LRF), and advances to the next target. BLE needs HTTPS + Chrome, and the Geovid must not be connected to the Leica Ballistics app at the same time (one connection). On connect the app sends the Leica handshake automatically; if lases don’t arrive, hit Re-send handshake under Advanced.
All three in one frame, relative to your direction of fire (azimuth on the Solver tab). Arrow downrange: the Calypso's 0° points at the target (reading is relative to fire). Compass: the Calypso reports a magnetic bearing (true-north declination not applied).
Mirage runs with the wind: runs right → wind from the left; boil (vertical shimmer) = no crosswind. This is a crosswind read — the Xwind column above compares it directly to the Calypso & HRRR. Automatic video analysis (optical-flow run detection) is the next step.
Web Bluetooth requirements: a secure context (HTTPS or localhost) and Chrome / Edge on desktop, or Chrome on Android. It is not available in iOS Safari — on iPhone/iPad these devices connect through the native app (CoreBluetooth). Over plain http:// the Connect button is inert; use the HTTPS address.
http://
Point the Calypso's reference arrow downrange so its 0° aligns with your line of fire; the app maps the reading to a wind clock from there.
Enter the elevation you actually dialed to center hits at known distances, in calm conditions. A near/mid point trues muzzle velocity; a far point (ideally past ~80% of the way to transonic) trues the drag — a BC scale for G1/G7, or a Cd-curve scale (DSF) in CDM mode. Uses the current load.
Truing adjusts the model to your rifle's real behavior. It solves MV on the near point, then a drag scale on the far point, iterating to settle the coupling. Applying overwrites muzzle velocity and either scales BC (G1/G7) or bakes the drag scale into the Cd curve (CDM).
Your own lases, hits, notes and stages of your own are kept; a target whose range the director changed needs lasing again.
Every shooter is scored in Open; results are also given for each division, category and class chosen here. The tripod procedure goes in every brief unless a stage has its own (3.1.15).
Opens the book in a new tab, ready to print or save as PDF. A blind stage's targets stay out of the competitors' book. The officers' book adds each stage's range officer notes and a paper score sheet (3.1.5).
The book as a file other ballistic apps can import: every stage, its targets and faces, and the distance from each position to each target (Open Match Book Format 1.0). Publish the competitors' edition; the officers' edition adds the range officer notes and a blind stage's targets.
Send this to shooters who use Kompete on iPhone or iPad. Each new version is taken in over their own copy of the match: their lases, hits and notes stay, a target whose range you changed is marked to lase again, and they see what changed. Your own lases and notes are never in it.
The match's range is the canvas: every firing position (green), target location (orange) and prop (blue), each stage's fire in its own colour with its number at the firing position. Build a stage by choosing its firing position and then its targets in order of fire — on the map or from the lists.
A step is a position, the targets in order with the rounds on each, and how they are engaged. Write targets as A B C (one round each) or A×2 B C×3. The stage's round count and points always come from the steps (3.5.6).
A B C
A×2 B C×3
Kompete writes each section from the stage. Reword any of it; when the stage changes afterwards, a section you reworded is marked so you can check it still agrees.
Scores are records that only ever add: send this file to the director (or take in each officer's file on the director's device) and every device's scores are put together. The iPhone and iPad app reads and writes the same file.
Ties: the Skills Stage's points, then its time (3.7.1). PRS points: score ÷ winner's × 100 (7.1.5a).
Every correction, ruling, reshoot and safety call — to review within 24 hours, before the results go to the PRS (3.1.12).