VoiceAttack

Profiles, Commands and Plugins => Plugin Uploads => Topic started by: Robertsmania on August 29, 2023, 11:37:35 PM

Title: Robertsmania Replay - iRacing Replay Plugin
Post by: Robertsmania on August 29, 2023, 11:37:35 PM
Robertsmania Replay - iRacing Replay System

https://github.com/Robertsmania/RobertsmaniaReplay (https://github.com/Robertsmania/RobertsmaniaReplay)

This project presents a plugin for VoiceAttack that 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:

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.

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.

(https://www.robertsmania.com/rmreplay/RobertsmaniaReplayControllerConfig_01.png)

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 CommandButtonCategory
Car aheadJoystick 1 Button 10A1 Replay Controller
Car behindJoystick 1 Button 9A1 Replay Controller
Cycle Marker [Type] FilterJoystick 1 Button 2A1 Replay Controller
End of recordingA1 Replay Controller
Fast forwardJoystick 1 POV 2A1 Replay Controller
Frame backwardA1 Replay Controller
Frame forwardA1 Replay Controller
Next cameraA1 Replay Controller
Next iRacing incidentA1 Replay Controller
Next lapJoystick 1 Button 6A1 Replay Controller
Next markerJoystick 1 Button 3A1 Replay Controller
Play PauseJoystick 1 POV 1A1 Replay Controller
Previous cameraA1 Replay Controller
Previous iRacing incidentA1 Replay Controller
Previous lapJoystick 1 Button 5A1 Replay Controller
Previous markerJoystick 1 Button 1A1 Replay Controller
Race StartJoystick 1 Button 7A1 Replay Controller
RewindJoystick 1 POV 4A1 Replay Controller
Show my carJoystick 1 Button 9 + Button 10A1 Replay Controller
Slow motionJoystick 1 POV 3A1 Replay Controller
Toggle Car [Marker] FilterJoystick 1 Button 4A1 Replay Controller
Clear [the;] Marker Car [Filter;]A2 Markers
Clear [the;] Marker [Filters; filter]Joystick 1 Button 8A2 Markers
Clear [the;] Marker Type [Filter;]A2 Markers
Filter markers [by; for; with;] car numberA2 Markers
Filter Markers [by; for; with;] IncidentsA2 Markers
Filter Markers [by; for; with;] manualA2 Markers
Filter markers [by; for; with;] [my car; me]A2 Markers
Filter Markers [by; for; with;] OvertakesA2 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;] UndertakesA2 Markers
[Marker summary; Summarize markers]A2 Markers
Set [a; new;] markerA2 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 excitingA4 Focus
Watch car numberA4 Focus
Watch car positionA4 Focus
Watch [my car; me]A4 Focus
Watch [the;] car aheadA4 Focus
Watch [the;] car behindA4 Focus
Toggle [say soething; say nothing; speech]A5 Speech
Toggle [say;] announcementsA5 Speech
Print CamerasB1 Debug
Print DriversB1 Debug
Print InfoB1 Debug
Toggle num lockC1 iRacing Keypress
[Initialize; reset; re-initialize] [Pit Girl;] [plugin; data;]RobertsmaniaReplay 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 esaily change that in the Initialize command.


In the default logic of [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:

Code: [Select]
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:

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 (https://voiceattack.com/purchase.aspx)

Download the RobertsmaniaReplayReplay.vax file from the GitHub releases page: https://github.com/Robertsmania/RobertsmaniaReplay/releases (https://github.com/Robertsmania/RobertsmaniaReplay/releases)

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

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

Enable plugin support in the VoiceAttack options.  Restart VoiceAttack.

Select the RobertsmaniaReplay 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 (https://voiceattack.com/howto.aspx)
Title: Re: iRacing Replay - PitGirl Plugin
Post by: Robertsmania on September 01, 2023, 11:24:18 PM
Here's a video demonstrating the plugin in action!

https://youtu.be/C0pFp6Jwkww (https://youtu.be/C0pFp6Jwkww)
(https://www.robertsmania.com/pitgirl/PitGirl_Replay_Overview_01.PNG)