Skip to content

Robertsmania/RobertsmaniaReplay

Repository files navigation

RobertsmaniaReplay - iRacing Replay System

This project presents a plugin for VoiceAttack which integrates with the iRacing SDK to monitor race events and build a list of event markers to be used for replay review.

The iRacing telemetry data is monitored constantly and markers are recorded when any driver has an offtrack incident, overtake, undertake, or radio broadcast. The race start and driver finishes are also entered as markers.

The replay marker data can be reviewed and filtered by car and/or marker type. This makes it easy to go through the replay seeing all the events that were recorded for a specific car, all the events of a particular marker type for any car, or any marker type for any car.

For example:

  • "Filter markers by the current car" Then stepping forward or backward through the next/previous markers will keep the focus on the current car. This alone is an improvement over the native iRacing next/previous incident review.

  • "Filter markers by overtakes" Then only overtake markers will be presented, and still focus will be on the current car.

  • "Clear the marker filters" Return to the default state where all marker types for all cars will be presented.

The provided profile has commands that can be used with speech, but is also intended to work with a gamepad/controller so the use of speech recognition is not required.

Here's a video overview:

Robertsmania Replay - iRacing Replay Overview

Controller

This is the controller configuration I use, and what is in the provided VoiceAttack profile. The goal is to make it easy to use the controller to review the replay data. If you are not using voice commands, you will still need to interact with the standard iRacing UI to change cameras. Also note that NUMLOCK on your keyboard will interfere with some of the controls, if things do not appear to be working try toggling NUMLOCK.

Robertsmania Replay Controller Configuration

The analog stick and trigger inputs are not assigned. You might experiment with mapping those to control the iRacing camera position/orientation to be able to fly the camera around as well. I've tried this with some success but your mileage may vary.

Of course you do not have to use a controller at all. You can bind keyboard/mouse/speech to any command and configure your system however you like.

Profile Commands

These are the high level commands in the provided profile:

Spoken Command Button Category ▾
Car ahead
Joystick 1 Button 10
A1 Replay Controller
Car behind
Joystick 1 Button 9
A1 Replay Controller
Cycle Marker [Type] Filter
Joystick 1 Button 2
A1 Replay Controller
End of recording
A1 Replay Controller
Fast forward
Joystick 1 POV 2
A1 Replay Controller
Frame backward
A1 Replay Controller
Frame forward
A1 Replay Controller
Next camera
A1 Replay Controller
Next iRacing incident
A1 Replay Controller
Next lap
Joystick 1 Button 6
A1 Replay Controller
Next marker
Joystick 1 Button 3
A1 Replay Controller
Play Pause
Joystick 1 POV 1
A1 Replay Controller
Previous camera
A1 Replay Controller
Previous iRacing incident
A1 Replay Controller
Previous lap
Joystick 1 Button 5
A1 Replay Controller
Previous marker
Joystick 1 Button 1
A1 Replay Controller
Race Start
Joystick 1 Button 7
A1 Replay Controller
Rewind
Joystick 1 POV 4
A1 Replay Controller
Show my car
Joystick 1 Button 9 + Joystick 1 Button 10
A1 Replay Controller
Slow motion
Joystick 1 POV 3
A1 Replay Controller
Toggle Car [Marker] Filter
Joystick 1 Button 4
A1 Replay Controller
Clear [the;] Marker Car [Filter;]
A2 Markers
Clear [the;] Marker [Filters; filter]
Joystick 1 Button 8
A2 Markers
Clear [the;] Marker Type [Filter;]
A2 Markers
Filter markers [by; for; with;] car number
A2 Markers
Filter Markers [by; for; with;] Incidents
A2 Markers
Filter Markers [by; for; with;] manual
A2 Markers
Filter markers [by; for; with;] [my car; me]
A2 Markers
Filter Markers [by; for; with;] Overtakes
A2 Markers
Filter Markers [by; for; with;] Radio [broadcasts; salt; chatter; talk; transmissions;]
A2 Markers
Filter markers [by; for; with;] [the;] [current; this] [car; driver]
A2 Markers
Filter Markers [by; for; with;] Undertakes
A2 Markers
[Marker summary; Summarize markers]
A2 Markers
Set [a; new;] marker
A2 Markers
[change; set;] [camera;] [to;] blimp [camera;]
A3 Cameras
[change; set;] [camera;] [to;] chase [camera;]
A3 Cameras
[change; set;] [camera;] [to;] cockpit [camera;]
A3 Cameras
[change; set;] [camera;] [to;] far chase [camera;]
A3 Cameras
[change; set;] [camera;] [to;] gearbox [camera;]
A3 Cameras
[change; set;] [camera;] [to;] gyro [camera;]
A3 Cameras
[change; set;] [camera;] [to;] left front [suspension;] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] left rear [suspension;] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] nose [camera;]
A3 Cameras
[change; set;] [camera;] [to;] pit lane 2 [camera;]
A3 Cameras
[change; set;] [camera;] [to;] pit lane [camera;]
A3 Cameras
[change; set;] [camera;] [to;] rear chase [camera;]
A3 Cameras
[change; set;] [camera;] [to;] right front [suspension;] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] right rear [suspension;] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] [rollbar; roll bar] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] scenic [camera;]
A3 Cameras
[change; set;] [camera;] [to;] [the;] chopper [camera;]
A3 Cameras
[change; set;] [camera;] [to;] [tv 1; tv1] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] [tv 2; tv2] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] [tv 3; tv3] [camera;]
A3 Cameras
[change; set;] [camera;] [to;] TV mixed [camera;]
A3 Cameras
[change; set;] [camera;] [to;] TV static [camera;]
A3 Cameras
[jump; go; switch; watch; return; show] [to;] [the;] [race;] [start; beginning]
A4 Focus
[jump;go;switch;watch;return;show] [to;] [whats happening;] [live;real time;now;the present moment]
A4 Focus
[show; watch] most exciting
A4 Focus
Watch car number
A4 Focus
Watch car position
A4 Focus
Watch [my car; me]
A4 Focus
Watch [the;] car ahead
A4 Focus
Watch [the;] car behind
A4 Focus
Toggle [say soething; say nothing; speech]
A5 Speech
Toggle [say;] announcements
A5 Speech
Print Cameras
B1 Debug
Print Drivers
B1 Debug
Print Info
B1 Debug
Toggle num lock
C1 iRacing Keypress
[Initialize; reset; re-initialize] [Pit Girl;] [plugin; data;]
Robertsmania Replay Plugin Commands

This is a basic set of commands that demonstrates the features of the plugin. Feel free to create your own, modify these or start from scratch.

Speech

The provided profile does have the commands setup for speech recognition and it will have the system confirm things like camera changes with speech synthesis.

There are two boolean variables set on initialization that control the speech synthesis. Both of those get set to true by default, but you can easily change that in the Initialize command.

  • SayAnything - Controls whether anything is said. If this is true, the system will speak. If it is false it will not say anything.
  • SayAnnouncements - Secondary value to determine whether announcements like "Kris Roberts had an Overtake" are made when replay markers are played (but if SayAnything is false, then SayAnnouncements has no effect).

In the default logic for [Next Marker] and [Previous Marker] announcements are made when there is no marker car filter and no marker type filter - it announces the driver and the marker type. If the marker car filter is set but the maker types are on wildcard, it will announce the marker type. If the marker type filter is set, it does not announce anything since that seems like it would get annoying to just call out driver names. Feel free to modify the logic for speech to suit your taste.

Listening - the way I use the system, I have VoiceAttack set to not listen by default. That makes it so I can talk on stream about whatever and have no fear that it will accidently execute commands if I say words that would otherwise trigger actions. In the profile options I specify "Pit Girl" on the Profile General tab as the value to "Override listening if my spoken command begins with:". I encourage you to consider using a different name or identifier for your system.

Plugin Commands

The plugin provides these commands to be used within a VoiceAttack profile:

RobertsmaniaReplay commands:

Print_Info
Print_Cameras
Print_Drivers
Set_Camera | {TXT:~~NewCamera}
Get_Camera | {TXT:~~HoldCamera}!
Watch_MyCar
Watch_MostExciting
Watch_CarNumber | {TXT:~~CarNumber}
Watch_CarPosition | {TXT:~~CarPosition}
Check_CarNumber | {TXT:~~CarNumber}!
Check_CarPosition | {TXT:~~CarPosition} {TXT:~~CarNumber}!
Jump_ToLive
Jump_ToBeginning
Marker_Add
PlayMarker_Next | {TXT:MarkerCarFilter} {TXT:MarkerTypeFilter} {INT:~~ReplayBufferSecs}
                | {TXT:~~MarkerDriver}! {TXT:~~MarkerType}!
PlayMarker_Previous | {TXT:MarkerCarFilter} {TXT:MarkerTypeFilter} {INT:~~ReplayBufferSecs}
                    | {TXT:~~MarkerDriver}! {TXT:~~MarkerType}!
PlayMarker_Last
PlayMarker_First
SeekMarker_First
iRacingIncident_Next
iRacingIncident_Previous
Marker_Count | {INT:~~MarkerCount}!
Marker_Summary | {TXT:~~MarkerSummary}! {TXT:~~MostOvertakesCarNum}! 
                 {TXT:~~MostIncidentsCarNum}! {TXT:~~MostBroadcastsCarNum}!
                 {INT:~~IncidentMarkerCount}! {INT:~~OvertakeMarkerCount}!
                 {INT:~~RadioMarkerCount}! {INT:~~ManualMarkerCount}!
                 {INT:~~UndertakeMarkerCount}!
Marker_Summary_CarNumber | {TXT:~~CarNumber} {INT:~~CarNumberMarkerCount}!
                           {INT:~~CarNumberIncidentMarkerCount}! {INT:~~CarNumberOvertakeMarkerCount}!
                           {INT:~~CarNumberRadioMarkerCount}! {INT:~~CarNumberManualMarkerCount}!
                           {INT:~~CarNumberUndertakeMarkerCount}!

Suggested Use

Start VoiceAttack with the RobertsmaniaReplay profile/plugin setup.

Join an iRacing session.

Participate.

Use the features of the profile/plugin to review the markers of events that happened in the race:

  • Go to the start of the race
  • Set the Marker Car Filter to follow your car
  • Cycle through the race markers showing all the events recorded for your car
  • Go back to the start
  • Clear the Marker Filters
  • Set the Marker Type Filter to something specific like Overtakes
  • Cycle through the markers seeing all the overtakes in the session
  • Or whatever you like...

Leave that session and join another. Repeat.

Enjoy.

Installation

You must own a license for VoiceAttack to be able to use this (or any other) plugin: https://voiceattack.com/purchase.aspx.

Download the RobertsmaniaReplay.vax file from the Releases Page on this repository.

In the VoiceAttack options, disable plugin support if it is currently enabled and restart VoiceAttack.

Import the RobertsmaniaReplayReplay.vax. This will install the plugin and sample profile.

Enable plugin support in the VoiceAttack options. Restart VoiceAttack.

Select the RobertsmaniaReplayReplay profile. The plugin should be initialized and the commands in the profile are available.

If you are new to VoiceAttack, be sure to run through the training to get the windows speech recognition to recognize your voice.

Check out "Train your speech engine" and the other helpful tips: VoiceAttack Tips and How-To - https://voiceattack.com/howto.aspx