AVCS4 Immersive Voice Control Radios for VoiceAttack
-
Appreciated. Thanks for testing. Will act on your advice.
PS. Working now. I used someone’s tip of hesitating before speaking the final words e.g. : “Challis/Sentry …… check in.”
-
I would like to add a large amount of alternate realistic phrase commands like jcenzano’s Keyspeech profiles. Is there a way to edit these outside of Voice Attack so I can add many of them? In the future, if the profile is updated, would that mass edit way be relatively quick to add or am I going to have to go line by line taking a lot of time?
-
I would like to add a large amount of alternate realistic phrase commands like jcenzano’s Keyspeech profiles. Is there a way to edit these outside of Voice Attack so I can add many of them? In the future, if the profile is updated, would that mass edit way be relatively quick to add or am I going to have to go line by line taking a lot of time?
If you create a single alternate realistic phrase command which calls an existing radio command phrase using the included Quick Command Creator system (QCC), then Yes - you could then open the save file, examine the construction of this type of command, duplicate and increment the data values, and work entirely in something like Notepad (or preferably Notepad++). I’m afraid I still have not yet completed instructional materials in the wiki I’ve developed for VG and AVCS profiles, but I can get you started on how this will operate & since you seem technically minded you’ll likely have no issues with this procedure - I’ll use some of this when I finally cement this all into a guide.
To start, you’d first follow the current example for creating at least one alternate phrase command on the VG Wiki page for AVCS4 BMS Radios: Wiki Page
Once done, say, “Open the Save File”, to see what was just created - it should look similar to this, if you followed the example exactly:
AVCS_BMS_KeyboardLayout=0 AVCS_BMS_TimeBetweenKeys=0.05 AVCS_BMS_TimeKeyIsHeldDown=0.05 AVCS_FIRST_RUN=9 AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Report on Final[(3)] AVCS_QCC_MACROS_1=*on final AVCS_SFS_CurrentBackupIndex=2 AVCS_SFS_SaveFileBackupCount=10
The important lines are the QCC Macro data and command variables:
AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Report on Final[(3)] AVCS_QCC_MACROS_1=*on final
If you wanted to manually create another one of these (in text format), you can duplicate these two lines in the save file by hand, and then increment the _1 to _2 (and the QCC#1 to QCC#2), and so on for additional commands up to a maximum of 225:
An incremented manually created example might look like this:
AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Report on Final[(3)] AVCS_QCC_DATA_MACROS_2=QCC#2[(1)]1[(2)]EXEC[(4)]traffic in sight[(3)] AVCS_QCC_MACROS_1=*on final AVCS_QCC_MACROS_2=*visual on traffic ```_(note: these examples show use of an asterisk "*" before the phrases, because these are wildcard phrases - see notes in the AVCS Wiki & VA Manual for details)_ **Final Notes** So you see how you can increment the variable name and then edit the portion of the data line which pertains to an existing command (it is not case sensitive), and of course, the new 'actual' spoken realistic command to call that existing command. Note that by doing this manually, it cannot warn you of any existing phrases which may be in use (or created by me already in the profile) so there could be some hiccups and testing your work would be wise. It won't harm anything if a phrase was the same as an existing command, but one or the other would not function - QCC will not allow duplicate phrases to be loaded to the VA profile. Also note that by using the voice command, **"Open the Save File"**, VoiceAttack will open the current profile save file in Notepad **and wait for you to close it** - once you do, if it has changed, the profile will reload to reflect any changes you may have made. For this reason, if manually creating _*many*_ commands by hand in text format, I would recommend using the command **"Open the Save File Folder"** instead, and then manually opening the save file in your preferred program to edit it. When you are done, save the text file and close it, then just say, **"Re-initialize Profile"** to get your new manually edited save file loaded into the AVCS profile. And because this physical save file can persist between versions of AVCS that I release, it is the very best way to heavily modify AVCS4 BMS Radios commands to this extent, and have them persist so you don't have to redo work later. You will find options in the Save File Menu to manage your save file and backups - you could use this to create a shadow copy of your save file outside the AVCS folders, in case you need to roll back (AVCS save file backups eventually get overwritten, so having an outside backup can help). Say, **"Open the Save File Menu"**, to view these options. Like many AVCS functions, it is profile context specific menu, so if you are "in" the BMS profile, it pertains to the BMS save files, if you are "in" the CORE profile (or the CORE Profile blank user template), it pertains to those save file(s). Happy someone (else) is utilizing the profile in this way, it's actually why I built in so many ways to work with or edit the profile(s) I create for VA. I use them too, and don't want to lose my work or commands if I had to update or even reinstall Windows or onto a new computer. Hope this helps - and if anyone has any questions, post up & I'll try to help! Cheers!
-
Hope this helps - and if anyone has any questions, post up & I’ll try to help! Cheers!
Awesome, that helps a lot, thanks! I figured there would be some kind of edit via Notepad/Notepad++ and that does look to be pretty flexible to update!
One other thing that I can’t figure out what I’m doing wrong is with this command, maybe it is due to it being in multiple menus through the flight member commands. I was trying to add Check your six to just “*check six” but every time I put in “Check Your Six” it says it’s an unrecognized command on Step 4.
-
Awesome, that helps a lot, thanks! I figured there would be some kind of edit via Notepad/Notepad++ and that does look to be pretty flexible to update!
One other thing that I can’t figure out what I’m doing wrong is with this command, maybe it is due to it being in multiple menus through the flight member commands. I was trying to add Check your six to just “*check six” but every time I put in “Check Your Six” it says it’s an unrecognized command on Step 4.
Commands such as “Check Your Six” are part of the Prefix + Suffix command sets. Therefore, it must be called as part of a full command (“Two Check Your Six”) for example.
I’m not sure the best way for you to add a multitude of alternate commands for such things since it would need to include a command for each flight member (Two, Three, also the whole Flight). No problem on a small scale, but on a large scale, this could be daunting.
You could alternatively go at it from the source, so long as what you change was part of/inside your save file and not one of the config files. For example, the actual ‘when I say’ phrase command for the suffix “check your six” is in config file 3, and the keys it presses is in config file 1 - you could examine these and create new variables in your save file (which is always loaded after profile configs) to make new special rules for yourself.
I unfortunately don’t have time to document all of this tonight but this is the variable and command phrase inside config 1 & 3 respectively - these correspond to the key that is pressed and this phrase as stated. Adding new ones in exactly the same manner would effectively create new voice commands which press a new “end” key, such as “6” after a string of “w” presses. But you’d want to add them, as stated, in your save file and not the configs themselves which may get overwritten with updates, etc.
↑ When the profile hears (for example) “TWO Check Your Six”, it takes the “Check Your Six” suffix, removes spaces to make it “CheckYourSix”, and adds it to “AVCS_BMS_KEY_” plus something like “WINGMAN_” based on “TWO” or “THREE” or “FLIGHT” as said in the original command call phrase
Then that info equals the key that was needed to be pressed in that part of the macro. Modifying the profile to this extent in this way is not exactly mainstream, but is possible for those who dare, and still likely less work that designing an entire system like this to push keypresses based on the words used in a radio command (not to mention the AVCS CORE goodies on top of it like QCC).I’d start by copying that ‘when I say’ variable containing all of those phrases to my save file (“AVCS_BMS_COMMANDS_AI COMMS 1 - Combat Management 1”) and then add my own commands inside of it, making sure each one (without spaces) equates to the corresponding key pressed by it’s original counterpart. If I wanted to hard-add in “Check Yall Six” for example, I’d insert that with a semicolon after of course, then copy the keys variables needed from config #1 to the save file, which I’d make equal to each way I’d want folks to call it (wingman, element, flight) so it functions just like existing commands… it may seem redundant, but it’s the easiest way… in my save file, after this example, I might have the lines:
AVCS_BMS_COMMANDS_AI COMMS 1 - Combat Management 1=Attack My Target;Buddy Spike;Raygun;Weapons Free;Weapons Hold;Check Your Six;Check Yall Six;Clear My Six;Attack Targets;Go Shooter;Go Cover AVCS_BMS_KEY_WINGMAN_CheckYallSix=6 AVCS_BMS_KEY_ELEMENT_CheckYallSix=6 AVCS_BMS_KEY_FLIGHT_CheckYallSix=6
This way they’d persist in save file, not interfere with existing callbacks or keys, and be loaded directly after the config files to include user changes.
Whatever you decide, I’m happy to answer questions along the way. I just happen to have my hands full this week with a server upgrade and migration for all the games we host (which are not BMS) at VG.
-
Overall, I feel like my adding of commands is going well. I’m still learning the most efficient way to select words after the “*” wildcard but then also have them unique so they don’t conflict with other similar commands. Long term, I know this will be key to the process.
“Check Six” is added for the wingman, element, and flight commands. I don’t see myself editing too many more of the other wingman/element/flight management commands so that solution should work. I just know that the “your” is one of those things that in the heat of the moment I could forget.
I’m coming across two issues though.
Issue 1. This is unique to the “Remove EPU Ground Safety Pin” which I have added a “*remove eepeeyou pin” but I get the following errors:
“6:06:14.241 Release by variable [~selection_key] not set. No keys released.”
“6:06:14.186 Key down by variable [~selection_key] not set. No keys pressed.”
The single time I’ve been able to get Voice Attack to recognize all of me actually saying “Remove EPU Ground Safety Pin”, that command works fine. I cannot see what is wrong in the save.txt so that is causing my additional phrase to issue that error:AVCS_QCC_DATA_MACROS_21=QCC#21[(1)]1[(2)]EXEC[(4)]Remove EPU Ground Safety Pin[(3)] ... AVCS_QCC_MACROS_21=*remove eepeeyou pin
Issue 2. This is the bigger one. I’m getting a lot of commands that are “Unrecognized catch-all” still. It seems that it’s only using the last few commands that I add for a Macro. Was there a limitation I missed for an editing session? For instance:
AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Request Air Refueling[(3)] ... AVCS_QCC_MACROS_1=*request fuel AVCS_QCC_MACROS_1=*request observation AVCS_QCC_MACROS_1=*request precontact AVCS_QCC_MACROS_1=*request prix contact AVCS_QCC_MACROS_1=*request rejoin ```Currently only "*request rejoin" is **not** coming up as a Unrecognized catch-all. It is not always just the last command that is being recognized but tends to be the last one or few on a macro:
AVCS_QCC_MACROS_3=*declare bulls
AVCS_QCC_MACROS_3=*declare bullseye
AVCS_QCC_MACROS_3=*declare contact
AVCS_QCC_MACROS_3=*declare contact bulls
AVCS_QCC_MACROS_3=*declare contact bullseye
AVCS_QCC_MACROS_3=*declare target
AVCS_QCC_MACROS_3=*declare target bulls
AVCS_QCC_MACROS_3=*declare target bullseyeIt will still do this on dissimilar commands:
AVCS_QCC_MACROS_6=*cannot comply
AVCS_QCC_MACROS_6=*negative
AVCS_QCC_MACROS_6=*request deniedI have had multiple restarts of Voice Attack and both the automatic re-initialization after closing the save.txt and using the "Re-initialize profile" voice command. Overall though, I am very impressed with your work SemlerPDX!!! For reference here is my full save.txt so far:
AVCS_AFM_Audio_On=True
AVCS_BMS_COMMANDS_AI COMMS 1 - Combat Management 1=Attack My Target;Buddy Spike;Raygun;Weapons Free;Weapons Hold;Check Your Six;Check Six;Clear My Six;Attack Targets;Go Shooter;Go Cover
AVCS_BMS_KEY_ELEMENT_CheckSix=6
AVCS_BMS_KEY_FLIGHT_CheckSix=6
AVCS_BMS_KEY_WINGMAN_CheckSix=6
AVCS_BMS_PTTBUTTON_1=STATE_JOYSTICK1BUTTON:29
AVCS_BMS_PTTBUTTON_2=STATE_JOYSTICK1BUTTON:31
AVCS_BMS_RadioButtons_ON=True
AVCS_FIRST_RUN=9
AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Request Air Refueling[(3)]
AVCS_QCC_DATA_MACROS_2=QCC#2[(1)]1[(2)]EXEC[(4)]Request Picture[(3)]
AVCS_QCC_DATA_MACROS_3=QCC#3[(1)]1[(2)]EXEC[(4)]Declare[(3)]
AVCS_QCC_DATA_MACROS_4=QCC#4[(1)]1[(2)]EXEC[(4)]request help[(3)]
AVCS_QCC_DATA_MACROS_5=QCC#5[(1)]1[(2)]EXEC[(4)]wilco[(3)]
AVCS_QCC_DATA_MACROS_6=QCC#6[(1)]1[(2)]EXEC[(4)]unable[(3)]
AVCS_QCC_DATA_MACROS_7=QCC#7[(1)]1[(2)]EXEC[(4)]check in[(3)]
AVCS_QCC_DATA_MACROS_8=QCC#8[(1)]1[(2)]EXEC[(4)]check out[(3)]
AVCS_QCC_DATA_MACROS_9=QCC#9[(1)]1[(2)]EXEC[(4)]request relief[(3)]
AVCS_QCC_DATA_MACROS_10=QCC#10[(1)]1[(2)]EXEC[(4)]Request Rescue Chopper[(3)]
AVCS_QCC_DATA_MACROS_11=QCC#11[(1)]1[(2)]EXEC[(4)]Vector To Nearest Air Threat[(3)]
AVCS_QCC_DATA_MACROS_12=QCC#12[(1)]1[(2)]EXEC[(4)]Vector To Target[(3)]
AVCS_QCC_DATA_MACROS_13=QCC#13[(1)]1[(2)]EXEC[(4)]Vector To Package[(3)]
AVCS_QCC_DATA_MACROS_14=QCC#14[(1)]1[(2)]EXEC[(4)]vector to tanker[(3)]
AVCS_QCC_DATA_MACROS_15=QCC#15[(1)]1[(2)]EXEC[(4)]vector to divert field[(3)]
AVCS_QCC_DATA_MACROS_16=QCC#16[(1)]1[(2)]EXEC[(4)]Vector To Home Plate[(3)]
AVCS_QCC_DATA_MACROS_17=QCC#17[(1)]1[(2)]EXEC[(4)]vector to carrier group[(3)]
AVCS_QCC_DATA_MACROS_18=QCC#18[(1)]1[(2)]EXEC[(4)]Back In Pre Contact Position[(3)]
AVCS_QCC_DATA_MACROS_19=QCC#19[(1)]1[(2)]EXEC[(4)]done refueling[(3)]
AVCS_QCC_DATA_MACROS_20=QCC#20[(1)]1[(2)]EXEC[(4)]Install EPU Ground Safety Pin[(3)]
AVCS_QCC_DATA_MACROS_21=QCC#21[(1)]1[(2)]EXEC[(4)]Remove EPU Ground Safety Pin[(3)]
AVCS_QCC_DATA_MACROS_22=QCC#22[(1)]1[(2)]EXEC[(4)]install chocks[(3)]
AVCS_QCC_DATA_MACROS_23=QCC#23[(1)]1[(2)]EXEC[(4)]remove chocks[(3)]
AVCS_QCC_MACROS_1=*request fuel
AVCS_QCC_MACROS_1=*request observation
AVCS_QCC_MACROS_1=*request precontact
AVCS_QCC_MACROS_1=*request prix contact
AVCS_QCC_MACROS_1=*request rejoin
AVCS_QCC_MACROS_2=*picture
AVCS_QCC_MACROS_2=*request picture
AVCS_QCC_MACROS_2=*say picture
AVCS_QCC_MACROS_3=*declare bulls
AVCS_QCC_MACROS_3=*declare bullseye
AVCS_QCC_MACROS_3=*declare contact
AVCS_QCC_MACROS_3=*declare contact bulls
AVCS_QCC_MACROS_3=*declare contact bullseye
AVCS_QCC_MACROS_3=*declare target
AVCS_QCC_MACROS_3=*declare target bulls
AVCS_QCC_MACROS_3=*declare target bullseye
AVCS_QCC_MACROS_4=*help needed
AVCS_QCC_MACROS_4=*i need fighter assistance
AVCS_QCC_MACROS_4=*i need fighter support
AVCS_QCC_MACROS_4=*request assistance
AVCS_QCC_MACROS_4=*request fighter assistance
AVCS_QCC_MACROS_4=*request fighter support
AVCS_QCC_MACROS_4=*request immediate fighter assistance
AVCS_QCC_MACROS_4=*request immediate fighter support
AVCS_QCC_MACROS_5=*a firm
AVCS_QCC_MACROS_5=*affirmative
AVCS_QCC_MACROS_5=*roger
AVCS_QCC_MACROS_5=*will comply
AVCS_QCC_MACROS_6=*cannot comply
AVCS_QCC_MACROS_6=*negative
AVCS_QCC_MACROS_6=*request denied
AVCS_QCC_MACROS_7=*checking in
AVCS_QCC_MACROS_7=*on station
AVCS_QCC_MACROS_8=*checking out
AVCS_QCC_MACROS_8=*is arteebee
AVCS_QCC_MACROS_8=*is RTB
AVCS_QCC_MACROS_8=*leaving station
AVCS_QCC_MACROS_8=*off station
AVCS_QCC_MACROS_9=*request arteebee
AVCS_QCC_MACROS_9=*request RTB
AVCS_QCC_MACROS_10=*airman down request chopper
AVCS_QCC_MACROS_10=*airman down request S A R
AVCS_QCC_MACROS_10=*airman down request SAR
AVCS_QCC_MACROS_10=*airman down send S A R
AVCS_QCC_MACROS_10=*airman down send SAR
AVCS_QCC_MACROS_10=*airman down send Search and rescue
AVCS_QCC_MACROS_10=*request S A R
AVCS_QCC_MACROS_10=*request SAR
AVCS_QCC_MACROS_10=*request Search and rescue
AVCS_QCC_MACROS_10=*send Search and rescue
AVCS_QCC_MACROS_11=*bogey dope
AVCS_QCC_MACROS_11=*is tumbleweed
AVCS_QCC_MACROS_11=*request bogey dope
AVCS_QCC_MACROS_11=*tumbleweed
AVCS_QCC_MACROS_11=*where is the nearest threat
AVCS_QCC_MACROS_12=*i need a target
AVCS_QCC_MACROS_12=*request vector to target
AVCS_QCC_MACROS_12=*vector to assigned target
AVCS_QCC_MACROS_12=*vector to planned target
AVCS_QCC_MACROS_13=*request package posit
AVCS_QCC_MACROS_14=*i need a tanker
AVCS_QCC_MACROS_14=*request tanker posit
AVCS_QCC_MACROS_14=*request vector to nearest tanker
AVCS_QCC_MACROS_14=*say tanker posit
AVCS_QCC_MACROS_15=*i need a divert field
AVCS_QCC_MACROS_15=*request vector to alternate
AVCS_QCC_MACROS_15=*request vector to divert field
AVCS_QCC_MACROS_16=*pigeons
AVCS_QCC_MACROS_17=*vector mother
AVCS_QCC_MACROS_18=*prix contact
AVCS_QCC_MACROS_18=*prix contact position
AVCS_QCC_MACROS_18=*stablized
AVCS_QCC_MACROS_18=*stablized and ready
AVCS_QCC_MACROS_19=*disconnect
AVCS_QCC_MACROS_19=*finished refuelling
AVCS_QCC_MACROS_19=*full
AVCS_QCC_MACROS_19=*reform
AVCS_QCC_MACROS_19=*reform left
AVCS_QCC_MACROS_19=*reform right
AVCS_QCC_MACROS_19=*request disconnect
AVCS_QCC_MACROS_19=*showing a full tank
AVCS_QCC_MACROS_19=*tank is full
AVCS_QCC_MACROS_19=*topped off
AVCS_QCC_MACROS_19=*topped off and ready to go
AVCS_QCC_MACROS_20=*install eepeeyou pin
AVCS_QCC_MACROS_21=*remove eepeeyou pin
AVCS_QCC_MACROS_22=*place chocks
AVCS_QCC_MACROS_23=*pull chocks
AVCS_SFS_CurrentBackupIndex=5
AVCS_SFS_SaveFileBackupCount=10
uAVCS_AFM_Audio_Channel=CENTER -
Overall, I feel like my adding of commands is going well. I’m still learning the most efficient way to select words after the “*” wildcard but then also have them unique so they don’t conflict with other similar commands. Long term, I know this will be key to the process.
“Check Six” is added for the wingman, element, and flight commands. I don’t see myself editing too many more of the other wingman/element/flight management commands so that solution should work. I just know that the “your” is one of those things that in the heat of the moment I could forget.
Great to hear! I agree, that one seems it could use a hard-set variant for all users. I’ll likely add “Check Six” as a proper option for everyone on the next patch, and I’ll keep an eye on your work here to see about others that may be good alternates to hard-set for everyone. When I was nose deep in the code, it was difficult to imagine all the ways these could be called or spoken - I don’t want to add too many more, but those which are glaringly obvious like “Check Six” are easy to approve for inclusion. In the end, I’ll never be able to cover all those things as you are trying to do, and having too many wildcard phrases overall could add to unintentional recognition when modes like Push to Talk are not used, which is why editing like this is possible for the individual users to personalize their AVCS4.
FYI:
*"request picture" is a proper primary command in this profile already, so there is no need to add it to your alternate command options:
Primary commands are those set and readily match the in-game radio menu lists, and required no alternates when I made the profile. They are also technically faster than any QCC commands we create, though in the millisecond scale so it is functionally the same as any primary command as we’d see it.I’m coming across two issues though.
Issue 1. This is unique to the “Remove EPU Ground Safety Pin” which I have added a “*remove eepeeyou pin” but I get the following errors:
“6:06:14.241 Release by variable [~selection_key] not set. No keys released.”
“6:06:14.186 Key down by variable [~selection_key] not set. No keys pressed.”
The single time I’ve been able to get Voice Attack to recognize all of me actually saying “Remove EPU Ground Safety Pin”, that command works fine. I cannot see what is wrong in the save.txt so that is causing my additional phrase to issue that error:AVCS_QCC_DATA_MACROS_21=QCC#21[(1)]1[(2)]EXEC[(4)]Remove EPU Ground Safety Pin[(3)] ... AVCS_QCC_MACROS_21=*remove eepeeyou pin
This is a proper bug that has not been discovered. I’ve prepared a patch update to resolve this, and this macro command should work as set next time you load AVCS4 BMS (and apply the patch update)
*(so I guess “Check Six” is coming now for all users )
Issue 2. This is the bigger one. I’m getting a lot of commands that are “Unrecognized catch-all” still. It seems that it’s only using the last few commands that I add for a Macro. Was there a limitation I missed for an editing session? For instance:
AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Request Air Refueling[(3)] ... AVCS_QCC_MACROS_1=*request fuel AVCS_QCC_MACROS_1=*request observation AVCS_QCC_MACROS_1=*request precontact AVCS_QCC_MACROS_1=*request prix contact AVCS_QCC_MACROS_1=*request rejoin ```Currently only "*request rejoin" is **not** coming up as a Unrecognized catch-all. It is not always just the last command that is being recognized but tends to be the last one or few on a macro:
AVCS_QCC_MACROS_3=*declare bulls
AVCS_QCC_MACROS_3=*declare bullseye
AVCS_QCC_MACROS_3=*declare contact
AVCS_QCC_MACROS_3=*declare contact bulls
AVCS_QCC_MACROS_3=*declare contact bullseye
AVCS_QCC_MACROS_3=*declare target
AVCS_QCC_MACROS_3=*declare target bulls
AVCS_QCC_MACROS_3=*declare target bullseyeIt will still do this on dissimilar commands:
AVCS_QCC_MACROS_6=*cannot comply
AVCS_QCC_MACROS_6=*negative
AVCS_QCC_MACROS_6=*request deniedI have had multiple restarts of Voice Attack and both the automatic re-initialization after closing the save.txt and using the "Re-initialize profile" voice command.
We’ve had a miscommunication, no worries…
Any new variable variant added to your save file must have a unique incremented number, else it would be ‘overwritten’ when read, and the value changed in program memory.Corrected for example:
AVCS_QCC_MACROS_6=*cannot comply;*negative;*request denied
This sort of formatting must be applied to all of your variables where you have listed them more than once - again, each time a new line was read, it was redefining what that variable meant to the profile, not adding new words to it…. Hope you understand how this works now. A variable can only equal one thing (starting at the equals symbol and ending at the start of the next new line/carriage return).
You’ll need to correct all of those in this similar manner - then they will work fine:
AVCS_QCC_MACROS_1=*request fuel;*request observation;*request precontact;*request prix contact;*request rejoin AVCS_QCC_MACROS_2=*picture;*request picture;*say picture AVCS_QCC_MACROS_3=*declare bulls;*declare bullseye;*declare contact;*declare contact bulls;*declare contact bullseye;*declare target;*declare target bulls;*declare target bullseye
More details, why/how:
The program reads these files top to bottom, if the top two lines read:MyVariable_1=pickles MyVariable_1=bananas ```…then in this example the program is going to have only 1 definition for "MyVariable_1", and it ain't gonna be 'pickles', or 'pickles' and 'bananas' - it's only gonna be 'bananas'. The program read it as "this variable word equals pickles" and directly after that "this variable word now equals bananas". For this QCC example, since these are the phrases for the 'When I say' portion of these commands, you can use a semicolon ";" to add alternate phrases to the same command. If you call up QCC (like normal, say, "Create a Voice Command") the pop-up windows have simple instructions which you are missing by doing this by hand, particularly those on the screen where you enter the phrase. This variable (and the space after the '=' sign) is equivalent to the "When I say" field when creating/editing a command in VoiceAttack in the normal manner. It supports square brackets for dynamics, allows wildcards (asterisks around, before, or after), and semicolons for many alternate phrase combinations in the same command. This would also be acceptable by VA 'when i say' structure rules, for example -
AVCS_QCC_MACROS_3=*declare [bulls;bullseye];*declare [contact;target] [bulls;bullseye;]
AVCS_QCC_MACROS_3=*declare bulls;*declare bullseye;*declare contact;*declare contact bulls;*declare contact bullseye;*declare target;*declare target bulls;*declare target bullseye
-
I’m coming across two issues though.
Issue 1. This is unique to the “Remove EPU Ground Safety Pin” which I have added a “*remove eepeeyou pin” but I get the following errors:
“6:06:14.241 Release by variable [~selection_key] not set. No keys released.”
“6:06:14.186 Key down by variable [~selection_key] not set. No keys pressed.”
The single time I’ve been able to get Voice Attack to recognize all of me actually saying “Remove EPU Ground Safety Pin”, that command works fine. I cannot see what is wrong in the save.txt so that is causing my additional phrase to issue that error:AVCS_QCC_DATA_MACROS_21=QCC#21[(1)]1[(2)]EXEC[(4)]Remove EPU Ground Safety Pin[(3)] ... AVCS_QCC_MACROS_21=*remove eepeeyou pin
This is a proper bug that has not been discovered. I’ve prepared the following patch update to resolve this:
Public Release AVCS4 BMS v1.40.3 Changelog July-28-2021 This is a simple Live Update patch fix, no new profile download is required - the following fix applies to this update: New Commands: -Added "Check Six" as New Alternate Syntax/Phrasing for "Check Your Six" suffix command (for 2/3/Flight) - thx to Snake122 Fixes/Improvements: -Fixed ATC Command(s) for "Remove EPU Ground Safety Pin" -- missing keyword Ground in variable holding key to press
Again, to be clear - this patch will be automatically applied to all users next time AVCS4 BMS Radios is loaded in VoiceAttack (follow pop-up prompts to apply this patch update).
(details on automatic patch updates and version numbers here: benchmarksims.org/forum/showthread/…/AVCS4…/#post574244 ) -
Semler mate i am hesitant to release may alternate Voicemacro profile as i admire your tenacity to making this right for the community i also admire you explanations and methods in the workings of your profile, i have the Voicemacro ready to go but i dont want you to lose credibility for the excellent work you have already achieved with this macro,(not saying mne is any better or worse) keep up the good work sir
-
Hi SemlerPDX, I’ve got a problem getting AVCS4 running and I couldn’t get the registration to work for Veterans-Gaming.com to contact you, so hope you won’t mind me posting here. I’m that software developer’s worst nightmare, got no idea what I’m doing and just follow instructions blindly! Here’s where I got to:
1. Downloaded AVCS CORE Framework Profile v1.0.zip for VoiceAttack and unzipped it
2. Downloaded AVCS4 Voice Control Radios for Falcon BMs.zip and unzipped it
3. Installed VoiceAttack from Steam
4. Opened VoiceAttack
5. Opens at MyProfile (empty)
6. Click Import in VoiceAttack
7. Select AVCS CORE 9v 1.0) Package (IMPORT THIS).vax
8. Package imported successfully with warning message, OK
9. VoiceAttack Profiles now lists My Profile, and AVCS CORE (v1.0): selecting the latter from drop down generates:11:38:25.247 AVCS ERROR! Try again later, check the AVCS Downloads for the most recent version, or contact SemlerPDX at veterans-gaming.com
11:38:25.246 AVCS ERROR! AVCS CORE Online Database is offline, and cannot install this profile - or this AVCS Profile Version has been replaced by an update.
11:38:24.910 Inline function execution exception: Exception has been thrown by the target of an invocation. Access to the path ‘C:\Windows\system32\10D60AC8C0E3D’ is denied.
11:38:24.273 …continuing initialization…
11:38:23.110 New AVCS4 Profile(s) Found! Adding Profile to List of Names and cleaning up new profiles file afterwards…10. The drop-down also contains AVCS4 USER PROFILE TEMPLATE (V1.0) (rename this - see readme command) with instructions about how to include core profile
commands in this profile, and says to me “Please rename this profile” - but I don’t know how to rename a profile!
11. I haven’t imported the …radios… file yet.So, and I apologise for taking up your time, could you sort me out? Is the clue in the line ‘AVCS CORE Online Database is offline’ and is that why I can’t get registered, server off-line maybe?
Alan -
Hi SemlerPDX, I’ve got a problem getting AVCS4 running and I couldn’t get the registration to work for Veterans-Gaming.com to contact you, so hope you won’t mind me posting here. I’m that software developer’s worst nightmare, got no idea what I’m doing and just follow instructions blindly!
…
So, and I apologise for taking up your time, could you sort me out? Is the clue in the line ‘AVCS CORE Online Database is offline’ and is that why I can’t get registered, server off-line maybe?
AlanNo worries, common user issue/bug… Easy to fix. VoiceAttack needs to be ‘Run as Administrator’ through VoiceAttack Options Menu so that AVCS can access its own files (and write to them) in the VoiceAttack programs folder, under the “Apps” folder. This is the designated location for VoiceAttack user created applications such as AVCS - its save file(s) and config files sit in here - yet Windows does not allow the program access to its own folder unless we elevate its permissions.
How to Run VoiceAttack as Admin:
Open VoiceAttack Options by clicking on the wrench/spanner icon in the main program window - select the last tab along the top, ‘System / Advanced’ - check the box circled below. Good to ensure that “Use Nested Tokens” is checked as shown, and “Allow command segment info for composite commands” is unchecked – click OK when done, restart VoiceAttack and switch to AVCS CORE and everything will work fine.
Most complex VA Profiles such as AVCS require this setting, it’s not just my profiles. In this case, AVCS checked the VG Website to see that AVCS CORE updates are online, then tried (and failed) to write the value “true” to the ‘avcs_core_status’ file which my program refers to when asking itself “Is AVCS CORE website online?”, rather than physically checking the website each time… just once per session is plenty.*Regarding the included Blank Template profile for AVCS - This is NOT required for using AVCS4 BMS Radios and the BMS Simulator, just FYI. It is an included add-on part of AVCS CORE, a profile builder’s template using my systems. Since you are brand new to VoiceAttack, you may want to just leave this on the side for now, unless you are prepared and interested in using voice control for things other than Falcon BMS. Once renamed, it becomes useable - just open the profile to edit it (small icon with the pencil), then change the name at the top left. Click “Apply” or “Done” at the bottom right to save changes. Follow instructions from AVCS: don’t start its new name with “AVCS” and do not end its new name with the word “CORE”.
More Details on the AVCS Template:
It is a means for VoiceAttack users to create their own voice commands in a profile template which uses and has access to all of the AVCS CORE profile features, like the save file system, with templates of actions users can copy into their own commands to add these features to new commands or systems. I use this blank template (renamed “.Malcolm AVCS Template”) for my general Windows stuff and other commands outside games. I added time/date commands, media center controls to play my music/videos on voice, open my frequent website bookmarks, and when I’m playing some random game and need a quick voice command like “Keep Running” or “Open the Map”, I can use QCC to quickly make a new voice command that presses a keyboard key like M or W without having to open the full VoiceAttack program editor and insert actions one-by-one. You can manually add new commands in the typical manner, through VoiceAttack editor, include other profiles, or copy/paste commands into this AVCS Template Profile. This cannot be done with AVCS CORE itself, so this Template is a means to use AVCS CORE as a standalone profile outside simulators or games, and build upon a user created work over time. -
Semler mate i am hesitant to release may alternate Voicemacro profile as i admire your tenacity to making this right for the community i also admire you explanations and methods in the workings of your profile, i have the Voicemacro ready to go but i dont want you to lose credibility for the excellent work you have already achieved with this macro,(not saying mne is any better or worse) keep up the good work sir
Please don’t hold up your own projects on account of me. It’s great to have options whatever program people use. Best wishes and good luck!
-
SemlerPDX, hello and thanks SO MUCH for your detailed answer to my dumb question! I’ll give this a go, I’m sure it’s going to work.
I’ve read all the pages of this thread and I am overwhelmed with admiration not only for your skill in making this software, for your generosity in making it available for free, and for the staggering amount of patience you’ve shown over 22 pages of this thread!
Best wishes from a rainy England
Alan
-
Update: success, it works, it’s like magic! SemlerPDX, thank you once again!
regards
Alan -
Just in case someone else needs something like my added commands, here they are from my save.txt:
AVCS_BMS_COMMANDS_AI COMMS 1 - Formation Management 1=Close Up;Switch Side;Shackle;Break Right;Break Left;Go Higher;Go Lower;Flex;Take The Lead;Kickout AVCS_BMS_KEY_ELEMENT_Shackle=2 AVCS_BMS_KEY_FLIGHT_Shackle=2 AVCS_BMS_KEY_WINGMAN_Shackle=2 AVCS_QCC_COMMAND_MAX=75 AVCS_QCC_DATA_MACROS_1=QCC#1[(1)]1[(2)]EXEC[(4)]Request Air Refueling[(3)] AVCS_QCC_DATA_MACROS_2=QCC#2[(1)]1[(2)]EXEC[(4)]Request Picture[(3)] AVCS_QCC_DATA_MACROS_3=QCC#3[(1)]1[(2)]EXEC[(4)]Declare[(3)] AVCS_QCC_DATA_MACROS_4=QCC#4[(1)]1[(2)]EXEC[(4)]request help[(3)] AVCS_QCC_DATA_MACROS_5=QCC#5[(1)]1[(2)]EXEC[(4)]wilco[(3)] AVCS_QCC_DATA_MACROS_6=QCC#6[(1)]1[(2)]EXEC[(4)]unable[(3)] AVCS_QCC_DATA_MACROS_7=QCC#7[(1)]1[(2)]EXEC[(4)]check in[(3)] AVCS_QCC_DATA_MACROS_8=QCC#8[(1)]1[(2)]EXEC[(4)]check out[(3)] AVCS_QCC_DATA_MACROS_9=QCC#9[(1)]1[(2)]EXEC[(4)]request relief[(3)] AVCS_QCC_DATA_MACROS_10=QCC#10[(1)]1[(2)]EXEC[(4)]Request Rescue Chopper[(3)] AVCS_QCC_DATA_MACROS_11=QCC#11[(1)]1[(2)]EXEC[(4)]Vector To Nearest Air Threat[(3)] AVCS_QCC_DATA_MACROS_12=QCC#12[(1)]1[(2)]EXEC[(4)]Vector To Target[(3)] AVCS_QCC_DATA_MACROS_13=QCC#13[(1)]1[(2)]EXEC[(4)]Vector To Package[(3)] AVCS_QCC_DATA_MACROS_14=QCC#14[(1)]1[(2)]EXEC[(4)]vector to tanker[(3)] AVCS_QCC_DATA_MACROS_15=QCC#15[(1)]1[(2)]EXEC[(4)]vector to divert field[(3)] AVCS_QCC_DATA_MACROS_16=QCC#16[(1)]1[(2)]EXEC[(4)]Vector To Home Plate[(3)] AVCS_QCC_DATA_MACROS_17=QCC#17[(1)]1[(2)]EXEC[(4)]vector to carrier group[(3)] AVCS_QCC_DATA_MACROS_18=QCC#18[(1)]1[(2)]EXEC[(4)]Back In Pre Contact Position[(3)] AVCS_QCC_DATA_MACROS_19=QCC#19[(1)]1[(2)]EXEC[(4)]done refueling[(3)] AVCS_QCC_DATA_MACROS_20=QCC#20[(1)]1[(2)]EXEC[(4)]Install EPU Ground Safety Pin[(3)] AVCS_QCC_DATA_MACROS_21=QCC#21[(1)]1[(2)]EXEC[(4)]Remove EPU Ground Safety Pin[(3)] AVCS_QCC_DATA_MACROS_22=QCC#22[(1)]1[(2)]EXEC[(4)]install chocks[(3)] AVCS_QCC_DATA_MACROS_23=QCC#23[(1)]1[(2)]EXEC[(4)]remove chocks[(3)] AVCS_QCC_DATA_MACROS_24=QCC#24[(1)]1[(2)]EXEC[(4)]Request Taxi For Departure[(3)] AVCS_QCC_DATA_MACROS_25=QCC#25[(1)]1[(2)]EXEC[(4)]Request Taxi To Ramp[(3)] AVCS_QCC_DATA_MACROS_26=QCC#26[(1)]1[(2)]EXEC[(4)]Request Hotpit Refuel[(3)] AVCS_QCC_DATA_MACROS_27=QCC#27[(1)]1[(2)]EXEC[(4)]Ground Say Again[(3)] AVCS_QCC_DATA_MACROS_28=QCC#28[(1)]1[(2)]EXEC[(4)]Ready For Departure[(3)] AVCS_QCC_DATA_MACROS_29=QCC#29[(1)]1[(2)]EXEC[(4)]Request Landing[(3)] AVCS_QCC_DATA_MACROS_30=QCC#30[(1)]1[(2)]EXEC[(4)]report on final[(3)] AVCS_QCC_DATA_MACROS_31=QCC#31[(1)]1[(2)]EXEC[(4)]report overhead break[(3)] AVCS_QCC_DATA_MACROS_32=QCC#32[(1)]1[(2)]EXEC[(4)]Tower Declare Emergency[(3)] AVCS_QCC_DATA_MACROS_33=QCC#33[(1)]1[(2)]EXEC[(4)]tower abort[(3)] AVCS_QCC_DATA_MACROS_34=QCC#34[(1)]1[(2)]EXEC[(4)]Tower Say Again[(3)] AVCS_QCC_DATA_MACROS_35=QCC#35[(1)]1[(2)]EXEC[(4)]Request Vectors For Visual Approach[(3)] AVCS_QCC_DATA_MACROS_36=QCC#36[(1)]1[(2)]EXEC[(4)]Request Vectors For Instrument Approach[(3)] AVCS_QCC_DATA_MACROS_37=QCC#37[(1)]1[(2)]EXEC[(4)]Request Overhead Approach[(3)] AVCS_QCC_DATA_MACROS_38=QCC#38[(1)]1[(2)]EXEC[(4)]Request Unrestricted Approach[(3)] AVCS_QCC_DATA_MACROS_39=QCC#39[(1)]1[(2)]EXEC[(4)]Approach Declare Emergency[(3)] AVCS_QCC_DATA_MACROS_40=QCC#40[(1)]1[(2)]EXEC[(4)]approach abort[(3)] AVCS_QCC_DATA_MACROS_41=QCC#41[(1)]1[(2)]EXEC[(4)]traffic in sight[(3)] AVCS_QCC_DATA_MACROS_42=QCC#42[(1)]1[(2)]EXEC[(4)]Approach Say Again[(3)] AVCS_QCC_DATA_MACROS_43=QCC#43[(1)]1[(2)]EXEC[(4)]airborne[(3)] AVCS_QCC_DATA_MACROS_44=QCC#44[(1)]1[(2)]EXEC[(4)]Request QNH[(3)] AVCS_QCC_DATA_MACROS_45=QCC#45[(1)]1[(2)]EXEC[(4)]Request QFE[(3)] AVCS_QCC_DATA_MACROS_46=QCC#46[(1)]1[(2)]EXEC[(4)]Takeoff Runway[(3)] AVCS_QCC_DATA_MACROS_47=QCC#47[(1)]1[(2)]EXEC[(4)]Landing Runway[(3)] AVCS_QCC_DATA_MACROS_48=QCC#48[(1)]1[(2)]EXEC[(4)]request wind check[(3)] AVCS_QCC_DATA_MACROS_49=QCC#49[(1)]1[(2)]EXEC[(4)]Request Ground Abort 1[(3)] AVCS_QCC_DATA_MACROS_50=QCC#50[(1)]1[(2)]EXEC[(4)]Request Ground Abort 2[(3)] AVCS_QCC_DATA_MACROS_51=QCC#51[(1)]1[(2)]EXEC[(4)]Request Ground Abort 3[(3)] AVCS_QCC_DATA_MACROS_52=QCC#52[(1)]1[(2)]EXEC[(4)]Request Ground Abort 4[(3)] AVCS_QCC_MACROS_1=*request fuel;*request observation;*request precontact;*request prix contact;*request rejoin AVCS_QCC_MACROS_2=*picture;*say picture AVCS_QCC_MACROS_3=*declare bullseye;*declare contact;*declare contact bullseye;*declare target;*declare target bullseye AVCS_QCC_MACROS_4=*help needed;*fighter assistance;*fighter support AVCS_QCC_MACROS_5=*request granted AVCS_QCC_MACROS_6=*cannot comply;*request denied AVCS_QCC_MACROS_7=*checking in;*on station AVCS_QCC_MACROS_8=*checking out;*is are TB;*leaving station;*off station AVCS_QCC_MACROS_9=*request are TB AVCS_QCC_MACROS_10=*request chopper;*so are;*Search and rescue; AVCS_QCC_MACROS_11=*bogey dope;*tumbleweed;*where is the nearest threat AVCS_QCC_MACROS_12=*i need a target;*request vector to target;*vector to assigned target;*vector to planned target AVCS_QCC_MACROS_13=*request package posit AVCS_QCC_MACROS_14=*i need a tanker;*tanker posit;*request vector to nearest tanker; AVCS_QCC_MACROS_15=*i need a divert field;*request vector to alternate;*request vector to divert field AVCS_QCC_MACROS_16=*pigeons AVCS_QCC_MACROS_17=*vector mother AVCS_QCC_MACROS_18=*prix contact;*prix contact position;*stablized;*stablized and ready AVCS_QCC_MACROS_19=*disconnect;*finished refuelling;*request disconnect;*showing a full tank;*tank is full;*topped off;*topped off and ready to go AVCS_QCC_MACROS_20=*install eepeeyou pin AVCS_QCC_MACROS_21=*remove eepeeyou pin AVCS_QCC_MACROS_22=*place chocks AVCS_QCC_MACROS_23=*pull chocks AVCS_QCC_MACROS_24=*ready to taxi;*taxi to runway AVCS_QCC_MACROS_25=*taxi back to parking AVCS_QCC_MACROS_26=*ready for hotpit refuel AVCS_QCC_MACROS_27=*Ground repeat last AVCS_QCC_MACROS_28=*ready for takeoff;*request takeoff AVCS_QCC_MACROS_29=*inbound for landing; *inbound AVCS_QCC_MACROS_30=*on final;*base three green;*final three green AVCS_QCC_MACROS_31=*on the break;*breaking AVCS_QCC_MACROS_32=*declaring an emergency tower;*tower i'm an emergency aircraft AVCS_QCC_MACROS_33=*going around;*on the go;*missed approach AVCS_QCC_MACROS_34=*tower repeat last AVCS_QCC_MACROS_35=*request the visual AVCS_QCC_MACROS_36=*vectors for i.l.s. AVCS_QCC_MACROS_37=*request overhead pattern AVCS_QCC_MACROS_38=*approach own navigation;*request full I.L.S. approach;*request full TACAN approach AVCS_QCC_MACROS_39=*mayday mayday mayday;*declaring an emergency approach AVCS_QCC_MACROS_40=*aborting approach;*executing missed approach procedure AVCS_QCC_MACROS_41=*has a visual on the traffic AVCS_QCC_MACROS_42=*say again approach AVCS_QCC_MACROS_43=*on departure AVCS_QCC_MACROS_44=*altimeter setting AVCS_QCC_MACROS_45=*field elevation setting AVCS_QCC_MACROS_46=*departure runway AVCS_QCC_MACROS_47=*landing runway AVCS_QCC_MACROS_48=*wind check AVCS_QCC_MACROS_49=*one is ground aborting AVCS_QCC_MACROS_50=*two is ground aborting AVCS_QCC_MACROS_51=*three is ground aborting AVCS_QCC_MACROS_52=*four is ground aborting
This is still a bit of a work in progress for me too, but possibly a good starting point. Thanks again SemlerPDX for this great work!
-
Push to talk is enabled. VoiceAttack is recognizing my commands. But I’m not getting a response to my commands in the game. What could be causing this?
-
@jc1:
Push to talk is enabled. VoiceAttack is recognizing my commands. But I’m not getting a response to my commands in the game. What could be causing this?
Typical cause for this with BMS and all programs that send key commands is make sure you are running the program as Administrator. Try that first would be my recommendation.
-
Yes, I’m running as adminstrator. Seems that voiceattack recognizes my command before the game, but in game it’s as if the mic is not on. And Windows shows the mic is working.
-
@jc1:
Push to talk is enabled. VoiceAttack is recognizing my commands. But I’m not getting a response to my commands in the game. What could be causing this?
@jc1:
Yes, I’m running as adminstrator. Seems that voiceattack recognizes my command before the game, but in game it’s as if the mic is not on. And Windows shows the mic is working.
If VoiceAttack is recognizing commands outside the game, but not when BMS is active or fullscreen, then it could be related to microphone issues and not the profile or Push to talk system.
Can you see the microphone bar moving in the VoiceAttack window? Does it behave as if your microphone is muted when you are in game in BMS, but not when you are outside the game?
Sometimes this can be as simple as another program taking exclusive control of the recording device (IVC perhaps) and “stealing” it away from VoiceAttack once BMS has loaded up. If that is the case, it could be as simple as disabling exclusive control of your microphone in Windows Sound settings - under the Advanced tab of the Properties window for your device, uncheck the box circled and hit OK or Apply… give it a test and see if it worked, and if not, you may need to start troubleshooting:
(find your microphone under the ‘Recording’ tab along the top - then select it and click Properties and the Advanced tab)…if that doesn’t work:
Disable Push to Talk mode for a test, then call a proper radio command and see if it fires in-game. Alt-tab to the VoiceAttack window to see if it captured speech in the event log. Below the event log, VoiceAttack has an indicator which moves when speech is detected. If you set this program to “Always on top” in Options, you can see if this bar is moving when you speak while BMS is the active window.Are commands recognized in game when you have Push to Talk disabled?
Are you using the ‘global’ mode for Push to Talk, or the default mode?
Last questions … is the microphone icon showing a red marker like this indicating a ‘muted’ state:
…and if using “global” Push to Talk mode, is it swapping to ‘unmuted’ state when you push the PTT button(s) you have set like this:
-
This is what I get. Although there was a response in No PTT, even with the remark at the top of that picture, I couldn’t get any more responses in No PTT. In PTT mode, the commands were recognized but there was no response. In both cases the sound bar did move at the bottom of VoiceAttack. I don’t know what to make of it. I didn’t test global vs default because I’m not familiar with that. I hope this picture gives you some new ideas to help find out why there is no response to my voice commands. And thanks for all you’ve done.
The Windows mic test showed the mic working in 2D, as this picture shows.