User’s Guide · v0.3.0
Sub One
Shot timer for iPhone and Apple Watch
Set up your firearm, calibrate it on your watch, time a string, tag what you did and correct the count. Everything you need at the range, in the order you need it.
Download PDF (v0.3.0)Contents
| Chapter | What it covers |
|---|---|
| 1 Before you start | What you need and how the Phone and Watch divide the work |
| 2 Send your firearm to the watch | Add a gun on the phone and confirm it arrived |
| 3 Calibrate | Teach the app what this gun feels like on this watch |
| 4 Time a string | START, the beep, shooting, STOP, and the result screen |
| 5 Tag labels | Start position and the list of what you did |
| 6 Fix the shot count | When the detector got it wrong |
| 7 Trace Lab | Re-run detection on a recorded string |
| 8 Par drill, settings and headsets | Everything else on the watch |
| 9 Your data | Where it lives, the Watch tab, export |
| 10 Troubleshooting | Messages you may see and what to do |
| Quick reference | One page for the range |
Chapter 1
Before you start
Sub One times a shot string from the wrist. The Apple Watch listens to its accelerometer for the recoil of each shot, so it needs no microphone and sends audio commands via Bluetooth to your enabled hearing protection. The iPhone is where you access your firearms and history.
What you need
- An iPhone with the Sub One app installed.
- An Apple Watch paired to that phone.
- The watch app installs along with the phone app, which can take several minutes. If it doesn’t automatically install, It appears under Available Apps in the Watch app on the phone.
Who does what
| On the watch | On the iPhone |
|---|---|
| Calibrating a firearm. Starting a string. Seeing the result. Discarding a string and entering the real count with the Digital Crown. | Adding and editing firearms. Sending them to the watch. Reviewing sessions. Confirming or correcting the start position. Tagging what you did. Correcting a count. Export. |
Which watch you have changes one thing
Series 8, SE (2nd generation), Ultra and later sample the accelerometer at 800 Hz. Older watches sample at 100 Hz. The app uses whichever your watch offers and shows the rate on the watch home screen and on every result. You do not set it.
Chapter 2
Send your firearm to the watch
A firearm profile holds the gun’s details and, once calibrated, what it feels like at your wrist. It is created on the phone and used on the watch.
- On the phone, open the Firearms tab and tap +. Name the gun and fill in what you know. Save.
- A gun that has not been calibrated shows an orange warning triangle in the list. That is expected.
- Saving a firearm sends the list to the watch. You can also send it yourself: open the Watch tab and tap Send firearms to watch.
- Wait for the green Profiles received pill. It appears after the watch has written the list to disk, so it means the guns are really there.
- On the watch, tap the firearm name on the home screen. Your gun should be in the list, marked not calibrated.
Firearms are added and edited on the phone only. The watch list ends with a reminder of that.
Chapter 3
Calibrate
Calibration teaches the app what this gun feels like on this wrist. It is required before START will work, and it belongs to the pair of this firearm and this watch.
The watch home screen shows START greyed out and Calibration required until the gun has been calibrated on this watch. If you get a new watch, calibrate again on it. Calibrate is always available, so you can never be locked out.
Run a calibration
- On the watch, pick the firearm, then scroll down and tap Calibrate. Read the intro and tap Begin.
- The watch starts its workout session and sensor. You get four seconds to settle.
- Listen for beep, beep, BEEP. Fire exactly one shot after the long beep ends. The screen says FIRE and a 1.20 second window is open.
- Two rising tones mean the shot counted. Two falling tones mean it did not and the same shot is repeated.
- Repeat until you have five clean shots. You get up to twelve attempts.
- The result screen lists every attempt, the median peak, the floor and the energy. Tap Accept to save them to the gun.
| Rep result | Meaning and what to do |
|---|---|
| Good | Banked. |
| Nothing heard | No shot in the window. The rep is repeated. |
| Too early | The shot landed during the beep. Wait for the long beep to finish. |
| Two events | More than one event in the window. The rep is repeated. |
| No sensor data | The watch sent no motion data. It is not a missed shot, so do not re-shoot it. Two in a row stops the run and saves what it saw. |
End keeps what the run saw so far and saves it for review. Cancel discards the run. Neither changes the gun until you tap Accept on a finished run.
Chapter 4
Time a string
- On the watch home screen, check the firearm name under START. Tap START.
- Shooter ready: low tones count down your prep time. You set the length in Settings.
- Stand by: take your start position and hold still. The watch reads which way gravity points during the half second before the beep to work out your start position.
- A random delay, then the start signal. The clock starts at the signal.
- Shoot. The screen shows the running time, your shot count and the latest split.
- Tap STOP when you are done.
The result screen
| Item | What it is |
|---|---|
| Big time | Total time: start signal to your last detected shot. |
| Shots and Hz | How many shots were detected, and the rate the samples actually arrived at. |
| 1st / Best / Avg | First shot time, best split and average split. |
| Start | The start position the watch sensed. Display only on the watch. |
| Shot list | Every detected shot with its time and split. |
| Orange question mark | A shot that only just cleared the detector’s bar. If it is the last or first shot, the total or draw time rests on it. |
| Draw and total estimated | Shown when the start-signal delay is a class average and not something measured for your headset. Splits are not affected. |
| Samples were dropped | The watch lost some motion data during the string. Treat the times with care. |
Swipe left on any shot to delete it, for example a neighbour’s shot or a bumped bench. Then choose Save to keep the string, or Discard if the count is wrong (chapter 6).
Chapter 5
Tag labels
Labels turn a string into something you can learn from later. They are added on the phone after the fact and are never placed on the sensor data.
Start position
Open Sessions, tap the string, and look at the Capture block. The watch reads one of these:
| Label | Meaning |
|---|---|
| Hands above shoulders | Surrender position |
| Low ready | Gun at low ready |
| Hands below waist | Hands low, gun not up |
| Firearm on a surface | Gun resting on a table or barrel. |
| Other | Anything else |
If the watch read it right, leave it. Leaving it as sensed counts as confirmed. If it got it wrong, tap the right one. Both values are kept, and the pair is what teaches the watch. If it could not read the position it says Not read, and you can set it yourself.
String actions
Further down the string page, tap Edit string and build the list of what you did, in order.
- Pick the starting position.
- The editor offers only actions that can follow the last one. After Low ready; slide forward and slide back are offered as conditions of the low ready not next steps.
- Tap Fire a string and enter how many rounds. Use Dry fire for a trigger press with no round fired.
- Keep going: reload, malfunction, holster, draw, and so on. Undo last removes the latest one.
- Tap Save.
What the colors mean
Each action in the string list is a colored pill, so the order of a string can be read at a glance. The colors are fixed:
| Action | Color |
|---|---|
| Start | Blue |
| Slide forward | Teal |
| Slide back | Orange |
| Slide release, Rack slide | Yellow |
| Fire | Lime green |
| Dry fire | Mint |
| Reload | Purple |
| Malfunction | Red |
| Holster | Indigo |
| Draw | Cyan |
A few other colors on the phone carry meaning too. None of them is a grade of your shooting.
| Color | What it tells you |
|---|---|
| Yellow tinted row | In Sessions, the string was kept but is not one of your numbers, because you corrected its count. In a calibration list, the run had fewer than four clean shots. |
| Orange time | The big time on a string row is orange when the last shot only just cleared the detector’s bar. The recorded time rests on that shot, so treat the number with care. |
| Red capsule | Something went wrong while the watch was capturing the string. Treat that string with caution. |
| Orange warning triangle | On a firearm in the Firearms list: it has not been calibrated yet. |
| Orange shot count | In Trace Lab, the count from your slider settings differs from the count recorded for that string. |
Chapter 6
Fix the shot count
If the detector counted a handling noise as a shot, or missed a shot, tell the app. Your correction is the only ground truth it can get.
On the watch, right after a string
- On the result screen tap Discard.
- Choose a reason. Un-Needed deletes the string. Incorrect data tells the app the detector was wrong and allows for editing.
- With Incorrect data, turn the Digital Crown to the number of shots you fired. If you do not remember, tap Unknown. A wrong count is worse than none.
- When Complete, Tap Save.
On the phone, any time later
- Open the string in Sessions. Under Count, tap Correct this count.
- Set Shots fired with the stepper, or I’m not sure if unsure. Zero is a valid answer.
- When Complete, Tap Save.
A corrected string is kept out of your stats. The recorded data and both counts stay. If you change your mind, tap Actually, the count was right.
Chapter 7
Trace Lab
Trace Lab replays a string’s recorded sensor data through the same detector the watch ran, so you can see why a shot was counted or missed without going back to the range.
Open it from Sessions: tap a string, then Open in trace lab. The link only appears for strings that have a recording. Raw traces are on by default, and calibration always keeps one (chapter 8).
What you see
| Part | What it shows |
|---|---|
| Chart | The strength of the motion over the whole recording, with the sample count and rate above it. A lime line marks each shot found at the current settings. A dashed orange line marks the start signal. |
| Detection parameters | Four sliders, described below. The sliders start at your gun’s current settings for the watch that recorded the string. |
| Comparison | The count recorded live next to the count at the current slider settings. The count changes as you move a slider. |
| Re-detected | Each shot found: its number, its time from the start signal, its peak in g, and its margin (shown as x and a number). A margin in orange is close to the detector’s bar. When the gun has a learned recoil direction, the last figure is the angle off that direction in degrees, orange when large. Nothing is rejected on the angle. It is there to be looked at. |
The four sliders
| Slider | What it does |
|---|---|
| Peak floor (g) | The smallest peak that can count as a shot. Raise it to drop weak events. Lower it to find weak shots. |
| Energy floor (g·s) | The smallest total energy that can count. It works alongside the peak floor. |
| Sigma | How far above the background noise an event must stand out. Lower finds more, including noise. |
| Refractory (s) | The quiet time after a shot during which another event is not counted. It stops the ring-down after a shot from being counted twice. |
Using it
- Open a string where the count was wrong, such as one you corrected.
- Look at the chart. Check each lime line sits on a real shot.
- Move the sliders until the count matches what you know you fired.
- Look at what changed. A false shot that disappears at a modest floor is a good sign. A real shot that disappears means the floor is too high.
Saving your settings
Save these as the firearm’s profile writes the peak floor and energy floor into the calibration of the watch that recorded the string, and the refractory into the gun. Sigma is not saved. This changes how every future string on that gun and watch is detected. There is no undo. To go back, calibrate again (chapter 3).
Chapter 8
Par drill, settings and headsets
Par drill
Choose Par drill on the watch home screen for a timer with a par time and no shot detection. It records nothing. Use it for dry-fire practice.
Settings
| Setting | What it does |
|---|---|
| Range commands | The prep sequence. One low tone for each second of prep time, then Stand by, a random delay and the start signal. The last tone lands a second before the delay opens, so it cannot be mistaken for the go signal. |
| How you wear it | Tell the app which hand you shoot with and which side of your wrist the watch sits on. The watch already knows which wrist. Wearing it on the inside of the wrist changes what the sensors see, mostly at low ready. Strings record how you wore it. |
| Start signal | Shows how the beep leaves the watch (speaker or headset) and lets you measure a headset’s delay. See below. |
| Raw traces | On by default. Keeps the sensor recording for every string so it can be re-examined later. Turn it off to save space. Calibration always keeps one. |
Bluetooth headsets and electronic muffs
Bluetooth adds roughly 150 to 200 ms between the app playing the beep and you hearing it. The app compensates, but the figure is only as good as what it knows about your headset. To measure it, go to Settings, Start signal, and run Measure. A metronome ticks and you tap the watch in time.
- First measure your own tap bias on the watch speaker, with the headset disconnected. This is done once.
- Then measure each headset. The result is the difference from your baseline.
- If your taps are inconsistent (about 40 ms of spread or more) the screen tells you to run it again.
- If the headset connects in a narrow telephony mode the beep is quiet. Reconnect it as a media device.
Until a headset is measured, draw and total are marked estimated on the result. Splits are unaffected.
Chapter 9
Your data
Where it lives
Strings, firearms, calibrations and sensor recordings are kept in one folder. On a phone that has iCloud Drive available to the app, that folder is in Files, iCloud Drive, Sub One. It survives deleting and reinstalling the app, which matters because TestFlight builds expire.
To check, open the phone’s Watch tab. Under Stored, the Kept in row reads iCloud Drive or This iPhone. If it says This iPhone, iCloud is not available to the app, so your strings are deleted with the app. Check that iCloud Drive is on for Sub One in iPhone Settings.
The phone’s tabs
| Tab | What it holds |
|---|---|
| Sessions | Your strings and calibration runs. Tap a string for its shots, count, capture details, labels and sensor recording. |
| Firearms | Your guns. Add, edit and delete. Shows a warning for any gun that is not calibrated. |
| Watch | Link health (paired, installed, reachable), Send firearms to watch, what is stored and where, the version and build, and the Tutorial. |
Trace Lab
A string with a sensor recording can be re-examined in Trace Lab. See chapter 7.
Export
On the Sessions tab, tap the share icon at the top right to export your strings through the iOS share sheet. The files are JSON and CSV, named prime-factor- followed by a description. The file format is documented and versioned, so it can be read by other tools. The app has no server of its own and sends nothing to one.
Chapter 10
Troubleshooting
| You see | What to do |
|---|---|
| START is grey, Calibration required | The gun has no calibration on this watch. Tap Calibrate on the watch and finish a run. A calibration made on another watch does not count. |
| Calibrated on another watch | Calibrate again on this watch. Each watch keeps its own. |
| Firearm missing on the watch | Phone, Watch tab, Send firearms to watch. Wait for Profiles received. Open the watch app. |
| Watch did not confirm | Not necessarily lost. Open the watch app, check the list, send again if needed. |
| Calibration says Nothing heard every time | Fire after the long beep, not during it, and keep the gun in your normal shooting grip. |
| No sensor data | The watch sent no motion data. Do not re-shoot that rep. Check the watch has the app in front and a workout session can start. |
| Too many or too few shots counted | Delete false shots on the watch, correct the count, and recalibrate if it keeps happening. |
| Start position says Not read | The wrist was moving or no position matched. Hold still during Stand by. You can set it by hand on the phone. |
| Start position often wrong | Check How you wear it in Settings. Firearm on a surface is the hardest for the watch to sense. |
| Beep is faint or late | Check the headset is connected as a media device and run the Start signal measurement. |
| Watch app will not install | Wait up to 15 minutes with the watch unlocked and nearby. The app appears under Available Apps in the iPhone Watch app. |
| Strings gone after reinstall | Check the Kept in row on the Watch tab. If it said This iPhone, the strings were deleted with the app. |
Guide
Quick reference
Every session
- Phone: Watch tab shows a paired, installed, reachable watch.
- Phone: firearm sent and received.
- Watch: pick the gun. START is lit, so this gun is calibrated on this watch.
- Watch: START, stand by, shoot, STOP.
- Watch: check the shot list. Swipe away false shots.
- Watch: Save, or Discard and enter the true count.
- Phone: confirm the start position, tag the actions, correct anything wrong.
Calibration in one line
Five shots, one per cue, fired after the long beep. Rising tones count, falling tones repeat. At least four clean, then Accept.
Watch buttons
| Button | Result |
|---|---|
| START | Live-fire string. Needs calibration on this watch. |
| Par drill | Timer with par time. No shot detection. |
| Calibrate | Five prompted shots for the selected gun. |
| Settings | Range commands, wear, start signal, raw traces. |
| Swipe a shot | Delete that shot. |
| Discard | Un-Needed, or Incorrect data with the true count. |