Super Fencing System
Wireless Fencing Video Replay!
Free
Super Fencing System (SFS) is a video replay app (système de vidéo-arbitrage) designed for fencing training and refereeing.
SFS incorporates a sophisticated wireless replay system into an easy-to-use app format. As SFS only requires an iPad or iPhone, the financial and technical restrictions that have traditionally limited fencing video replay to a select number of clubs and large tournaments is eliminated.
With SFS, every fencer can enjoy the benefits of video replay!
Features:
• Wirelessly connect to scoring machines via Wi-Fi or Bluetooth
• Record fencing bout with external (UVC) or device camera
• Automatically generate and view fencing replays
• Filter replays by foil, épée, sabre, touch, timer halt, timer start, timer halt & touch, and touch type (red, green, white)
• Controls for playback rate, zoom, looping, frame advance, pan, and replay duration
• Configure capture device, resolution, sound recording, and frame rate
• Scoreboard overlay shows weapon, score, time, running status, period, lamps, priority, cards, and p-cards
• Save individual replay clips or concatenated full bout videos, with scoreboard overlay baked-in, to device photo library
• Manual replay trigger options
• Repeater mode for displaying machine lights in a large scoreboard format
• Self-scoring with EnPointe Display Set via weapon-lamé grounding
• Self-start via fencer pose detection
Compatible Scoring Machine Protocols:
• CYRANO (UDP)
• Skewered (BLE)
• RS422-FPA (UDP)
• RS422-FPA (DE-9) [Requires SFS-Link-FPA BLE Adapter]
• EnPointe (BLE)
• Favero (BLE)
• Favero Serial (RJ11) [Requires SFS-Link BLE Adapter]
Compatible Fencing Scoring Machines:
• Atlas
• EnPointe Display Set
• Skewered Scoring Box (SKF-B1)
• Favero FA-01
• Favero FA-05
• Favero FA-07
• Favero FA-15
• Second Intention Software and Design VSM
• Allstar FMA21
• Allstar FMA03
• Inspiration Point SM-Top
• Absolute Fencing Gear 'World Series'
• Escrime Technologies / St. George SG31
• Escrime Technologies / St. George SG21
• Escrime Technologies / St. George SG12
more - Internal changes to settings storage method to better comply with Swift norms (UserDefaults.standard, didSet blocks…).
- Fixed reversed Skewered cards.
- Tweaks to folder menu.
- Added optional alternative location for Replay View button.
- Added optional manual score control while using EnPointe Display Set. This new “±” button only appears in Live View when the Display Set is connected.
- Changed replay note behavior. Now, applying a search filter for replay notes restricts all replays to those filtered for. An exclamation icon, and red color, for the replay list button indicates if the replays are being filtered by note contents.
- The filter text now persists per-session in the replay viewer and recorder.
- Added ‘X’ button to remove all text from the filter text field.
- Fixed rare issue where LOADING screen would not disappear if invalid replay change (via chevrons) occurred.
- When using self-start, the ’start’ is now recorded to the machine log.
- Fixed background thread issue with EnPointe & Skewered.
- Skewered connection menu now sorts by box name first, then BLE id second.
- Fixed Skewered minimum compatible firmware note.
- Added toggle for using weapon-lamé grounding to trigger self-start, for EnPointe Display Set.
- Prevented subclassing for some classes. This may fix rare cases of unintended inheritance.
- Removed instances of indirect behavior from mixing two access patterns (.shared and @ObservedObject).
9.16.0 05/25/2025
- Added support for the Skewered Fencing Scoring Box (SKF-B1) BLE protocol!
- Added automatic timeout to EnPointe Display Set (and Skewered Box) which disconnects if the machine has been unresponsive for over 2 seconds.
- Fixed bug where EnPointe or Skewered would fail to continually update machine information when connecting.
- For EnPointe and Skewered, in Repeater Mode BLE ad-data 're-checks’ are 3X faster. This will reduce slight delays which can be annoying for repeaters. Replay Mode is left as-is, to reduce UI stutter.
- Fixed broken Folder View screenshot button.
9.15.0 04/16/2025
- Added frame-save button to folder view, like in replay view.
- Added folder name to top of replay viewer in iOS, like with iPadOS.
- Tweaked time info to be on one line, to save vertical space.
- Folder name now displays in Live View.
- Fixed EnPointe Display Set BLE bug where lamp would turn off too soon.
- Entering a manual replay in Folder View now does not switch auto-replay off.
9.14.0 04/06/2025
- Complete overhaul of EnPointe Display Set BLE listening code! The freezing issue should now be eliminated.
- Added code to prevent rare AVPlayer-related crash.
- Fixed BLE status check sometimes publishing from a background thread.
- Frame advance buttons are now disabled during normal playback.
- Fixed bug where pressing play would play rather than pause, if the replay was already playing.
- The Live View PiP window location is now saved as a permanent app setting.
9.13.0 02/18/2025
- Fixed cache clearing being too aggressive, resulting in faulty replay clip exports.
- Added two additional export status messages to folder export menu (video saved successfully, or video failed with error message).
9.12.1 01/23/2025
- Fixed oodles of cached data from video export processes not being deleted upon completion.
- Fixed deleting a replay folder not first enumerating through the folder's contents and deleting all contained files, before deleting the folder itself.
- Fixed white background.
- Added advanced replay filter overall toggle, for clarity.
- Fixed auto-replay not turning off when selecting a replay with the replay list.
9.12.0 01/21/2025
- Fixed replay video 'panning' with gesture (panning is enabled after zooming in).
- Fixed PiP dragging.
- Updated various machine connection menu wording. VSM section has been renamed to 'RS422-FPA (UDP)', as that method of connection is also compatible with Atlas machines.
- Fixed crash when accessing folder view if folder contains videos, but no replays, when recording was stopped.
- Updated copyright.
- Default setting for Delete Videos Without Replays is now FALSE.
- Auto-Reply no longer turns off when switching from folder view to replay view.
- Reply view and folder view now have separate playback speed settings.
- Tweaked tabItem names.
9.11.0 01/13/2025
- Fixed possible race condition with machine data equivalency check. This may fix cases of duplicate, identical-state log entries being recorded.
- Fixed play button icon sometimes not changing to ‘=‘ when replays are playing.
- Fixed floating-point issue with replay loop / restart, where video replay-start seeking would be a minuscule amount of time before the recorded start time. This fixes the critical bug of replays refusing to play/loop without manual scrubbing.
- Fixed ‘halt’ log points not being centered at the moment of both lamps being ON in two-lamp replays, which resulted in incorrect replay labeling. This does not apply retroactively.
- Disconnecting failed EnPointe connection (to reconnect) will no longer reset scores.
- Added search field for replay list, to filter by replay note contents.
- Added ability to filter by hit type (red, green, white, and any combination).
- Added note button in Folder View, like in Replay View.
- Added replay note to Folder View, like in Replay View.
- Added folder name back to Folder View (for iPad only, due to space constraints).
- Fixed ‘tabview’ on iPad using non-compact version in iOS 18.
9.10.0 11/26/2024
- Added basic audio recording support for replays. Note: audio track does not currently save in exported replay clips or exported folders.
- Added microphone symbol to record button if audio recording is enabled.
- Added replay index number to replay info text. This number is based off of the current filtered replays, rather than all replays contained in the machine data log. It counts ‘up’ from the oldest replay in the log.
- Added “Seek To Pre-Halt Time In Folder View” setting.
- Added audio permissions request on boot.
- Fixed Swift 6 ‘Sendable’ closure issues.
- Fixed crash if recording device did not support video mirroring.
- Fixed possible cause of reported export-related crash.
- Fixed possible cause of reported replay viewer initialization crash from video date extraction.
- Fixed possible cause of not detecting certain formats for UVC capture devices.
- Fixed ‘Stop Recording When Watching Replays’ not working when Auto-Replay displays a replay.
- Fixed crash if video duration was NaN.
- Fixed video still playing during clip export process.
- Fixed video player ‘nil’-ing not working properly.
- Fixed video not automatically resuming if it was playing before entering note view.
- Replay player no longer displays until initial re-orientation detection completes.
- Note menu now allows for pressing Save Note without first pressing enter on the keyboard.
- Fixed VSM publishing changes from background thread when cancelling UDP socket (this also fixed a pseudo-crash that can occur).
- Spelling corrections.
- Moved machine data readouts to Replay Menu.
- Fixed camera rotate icon not being shifted to the left.
- Fixed camera rotate icon not having correct padding.
9.9.0 11/03/2024
- Fixed FatalError() crash if BLE state was an unexpected case in centralManagerDidUpdateState.
- Fixed main thread timers (e.g. auto-replay timer) not overriding BLE processes. This will fix the bug in 9.8.0 of auto-replay not ‘firing’ when machine states were changing.
9.8.1 09/17/2024
- Added folder rename button (pencil icon).
- Added additional alerts when attempting to create a duplicate folder name or invalid folder name.
- Added folder list video thumbnails.
- Fixed clip export exporting with overlay, even if overlay was disabled.
- Added additional debug to FPA messages.
- Added camera preview PiP. This is only available on iPadOS. A new PiP toggle button has been added, and the PiP can be dragged around. A second PiP button resets the drag (if you somehow dragged it off-screen).
- Fixed Message 2 and Message 3 decoding for RS422-FPA.
- Changed null bytes and space characters to display as logical negation (¬) for FPA message display. This makes it consistent with the FPA protocol documentation.
- Folder list now sorts alphabetically.
- Redid Auto-Replay behavior. Auto-Replay is now a persistent setting, and the situations where it will automatically turn off have been tweaked. The new behavior should be more intuitive.
- Concatenated video will now scale videos appropriately, if they have differing aspect ratios or resolutions. This currently only applies to Folder View, and not folder or clip export.
- Moved Folder View 5-sec jump controls to left side, so all ‘play’ controls are in the same area.
- Moved Folder View ‘time-box’ to the top, replacing unneeded folder name text.
- Disabled blocking behavior of scoreboard overlay. Now, buttons potentially hidden behind scoreboard elements (notably during vertical usage of an iOS device) are still clickable.
- Fixed replay deletion flag (and undelete) not saving if recording was not ongoing.
- Fixed bug with no-scoreboard export process.
9.8.0 09/15/2024
Fixed Skeleton Mode not drawing joint lines correctly for multiple visible fencers.
Fixed Skeleton Mode joints appearing too large on iOS devices.
9.7.2 09/09/2024
Fixed external device-specific rotation check checking for the wrong device type, causing incorrect rotation.
9.7.1 09/08/2024
- Added SKELETON MODE. When enabled, visible fencers will have their ‘skeleton’ (joints with connecting lines; ‘PosePoints’) displayed. This does not persist in recorded replays.
- Added SELF-START MODE. When enabled, if both fencers face the camera and raise their non-fencing hand directly over their heads (such that the hand is situated between the shoulders, essentially on top of the mask), a self-start ‘ready’ screen flash (yellow) will display and a ‘ready beep’ will play, and after a random wait, a ‘fence’ screen flash (white) will display and a ‘start beep’ will play. Note this has no effect on the machine data log.
- Added Self-Start minimum and maximum random wait sliders.
- Added ability to enter Repeater Mode without a machine connected (for Self-Start).
- Clip Export now automatically reverts scoreboard reversal during export if both video mirroring and scoreboard reversal are enabled.
- Wording tweaks to manual replay settings.
- EP self-scoring screen flashes now flash the appropriate color for the incremented score (red, green).
- EP self-scoring flashes now flash in Replay View along with Repeater Mode.
- Moved all app settings to one swift class for maintainability.
- Moved to a single custom alert view for DRYness.
- Undeprecated deprecated rotation code (isVideoOrientationSupported).
- Added support for portrait-upside-down orientation.
9.7.0 09/08/2024
- Added overlapping scrubbing protection.
- Added throttling for scrubbing, to fix view updates being requested multiple times per frame.
- Fixed rare crash when using start-in-folder-view button.
- Fixed repeater view ‘exit’ button being too small.
- Changed slider priority to .userInitiated. This may help with slider stutter until a proper solution is implemented.
9.6.1 09/03/2024
- Reduced EnPointe self-score grounding durations to 2 seconds (from 2.5).
- Added beeps to EnPointe self-scoring.
- Added screen flash to Repeater View when self-scoring occurs.
- Slightly increased EP BLE ad-data search frequency.
- Added additional protections to prevent manual replay buttons from activating if manual replays are disabled.
- Added guard to prevent concurrent log searches.
- Fixed capture device error message persisting infinitely.
- Fixed Repeater Mode showing ‘:’ when no timer data is present.
- Fixed EnPointe score reset occurring in conjunction with a score increment.
- Added EnPointe beep toggle in Advanced settings.
9.6.0 08/31/2024
- Fixed critical crash where app would identify replays that are ‘in’-video according to filename dates, but ‘out’ of video for actual file durations.
- Fixed ‘bad’ replay deletion code missing some replays.
- Fixed ‘bad’ replay deletion code not running at viewer startup.
- Added warning alert when attempting to insert a replay too close to video segment end.
9.5.1 08/30/2024
Added export progression and debug info to export menu.
Fixed crash when live view manual replay, with offset, attempts to find a nonexistent log entry.
Fixed crash when attempting to insert a manual replay in Folder View, when no replays yet exist in the folder.
Fixed auto-replay in replay view causing jumped-to replay to be frozen if recording is paused.
Fixed folder view manual replay insert having incorrect replay ‘ordering’ if replay is inserted before the first replay.
Fixed crash that can occur when updating scrubber tic positions.
Fixed auto-replay not applying for initial manual replays for otherwise empty machine logs.
Fixed replay notes being duplicated when note’d replay is adjacent in log to new manual replay entry.
Fixed manual replay offset selecting incorrect (-1) insertion index.
9.5.0 08/29/2024
- Added no-scoreboard toggle to folder export menu.
- Fixed folder export first-machine-log-entry not including log value before first frame date.
- Added speaker beep test in Advanced Settings.
- Fixed export with overlay causing empty frames to be appended if video end time is different from assumed end time.
- Changed URLs to HTTPS.
9.4.0 08/18/2024
- Fixed replay exporting failing to account for machine log states prior to clip date range.
- Fixed replay exporting failing to overlay scoreboard for frame 1.
9.3.3 08/07/2024
Fixed clip export screen disappearing before export completed.
9.3.2 08/06/2024
Fixed exporting videos not retaining the video’s orientation and gravity.
9.3.1 08/05/2024
- Added ’Export Videos’ menu, accessible in Folder Menu! Exporting saves an entire replay folder’s video contents as one concatenated video in your Photo Library, with the scoreboard ‘baked’ in to the video frames!
- Saving a replay clip now saves it with identical scoreboard ‘baking’.
9.3.0 08/05/2024
- Changed Display Set BLE behavior to experiment with hitching reduction.
- Tiny alignment tweak of app icon.
- Fixed replay note text entry field bug.
9.2.1 08/03/2024
- Fixed FA-15 Hit-Halt replays not appearing.
- Fixed replay notes only saving if recording is ongoing.
- Added hit ‘age’ automatic adjustment for EnPointe Display Set. Logged hit data will now synchronize based on the left and right hit age values contained in the BLE advertisement data.
- Added ability to keep score with EnPointe Display Box; simply ground your weapon to your lamé for 2.5 seconds to award your opponent a point! Reset the score by simultaneously grounding for 2.5 seconds.
- Put BLE advertisement data check code on background thread, to alleviate (some) heavy stuttering effect on scrubbing bar.
- Fixed a crash with EnPointe Display Set ‘disconnect’ (cancelling BLE advertisement check cycle).
- Small wording tweaks.
- Fixed scoreboard misalignment for iPads.
- Fixed VSM logging delay.
9.2.0 07/27/2024
- Internal changes to settings storage method to better comply with Swift norms (UserDefaults.standard, didSet blocks…).
- Fixed reversed Skewered cards.
- Tweaks to folder menu.
- Added optional alternative location for Replay View button.
- Added optional manual score control while using EnPointe Display Set. This new “±” button only appears in Live View when the Display Set is connected.
- Changed replay note behavior. Now, applying a search filter for replay notes restricts all replays to those filtered for. An exclamation icon, and red color, for the replay list button indicates if the replays are being filtered by note contents.
- The filter text now persists per-session in the replay viewer and recorder.
- Added ‘X’ button to remove all text from the filter text field.
- Fixed rare issue where LOADING screen would not disappear if invalid replay change (via chevrons) occurred.
- When using self-start, the ’start’ is now recorded to the machine log.
- Fixed background thread issue with EnPointe & Skewered.
- Skewered connection menu now sorts by box name first, then BLE id second.
- Fixed Skewered minimum compatible firmware note.
- Added toggle for using weapon-lamé grounding to trigger self-start, for EnPointe Display Set.
- Prevented subclassing for some classes. This may fix rare cases of unintended inheritance.
- Removed instances of indirect behavior from mixing two access patterns (.shared and @ObservedObject).
more Version 9.16.0 05/25/2025
Data Not Collected The developer does not collect any data from this app.