Voice Attack - Conditional commands

Hi Everyone,

Not sure if everyone who uses Voice Attack (and if you don't why not), but the latest release (1.5.6) introduces some advanced features.
Of particular interest are Conditions (or variables) and Condition Blocks.

In older versions, if you had a 'Lights On' and a 'Lights Off' command. It didn't matter which you said as the Light action in ED is a toggle.
So, if the lights are off, and you say 'Lights Off' it would actually turn them on.

With the new version, we can now set a condition - Let's call it LIGHTS and give it a value of 0. We will use a value of 0 to determine that the lights are off, and a value of 1 to determine that the lights are on.
So, when we say 'Lights Off', the condition block will check the value of LIGHTS and only 'press L' if the lights are current on i.e. LIGHTS=1

This same logic can be used for Landing Gear, Flight Assist, Cargo Scoops... and any other action that is a toggle.

There is far more that can be done with this as Condition Blocks can be nested, Conditions can be set automatically to, for example, a random value.

I've created a small profile that can be downloaded from my OneDrive here: http://1drv.ms/1DnzNiq

Please feel free to play with it. I have an 'initialise system' command which should be run/said when you first start up ED and are on the landing pad. This ensures that the conditions are set to the correct default values i.e. Landing gear down, Lights off, Flight Assist on, Cargo Scoops raised.

Remember, you will need Voice Attack 1.5.6 for this functionality to work.

This link is to a full profile that I use: http://1drv.ms/1v0kIP2

Happy flying

Commander Erasmus
 
Last edited:
This is a really cool function.
It's based on the premises that it always works, or that nothing else affects it though.
Like for example, if you forget you have the cargo scoop deployed, and land, it will automatically retract. This won't be caught by voice attack, so now you're in the wrong position, so when voice attack thinks it's opening it will close it, and vice verse. It's not really a problem because the actual outcome will be the same, but it would be an annoyance to me as I'm using sound file feedback as well.

Anyway, I think the possibility for confirmations in this version of voice attack was far greater though.
You set up a command that's just waiting for your input. then you make a deny/confirm that ties into the wait.
Then you bind them all together with the main command asking you to confirm, runs the wait (aborts after a set number of seconds you set), and if another command is executed before it times out, you end the block there, knowing what you answered and can take action on that.
I set up a command to eject all cargo. Ask for confirmation, and then eject it or not.
The same with my "End session" command. It opens the menu, goes down to Quite and press enter. Then it asks you to confirm or not. If you say yes, confirm, absolutely et.c. it presses yes, otherwise it presses Esc twice and you're back in the game.
I guess you can make really complicated and complex voice attack maneuvers with that type of command.
 
This is a really cool function.
It's based on the premises that it always works, or that nothing else affects it though.
Like for example, if you forget you have the cargo scoop deployed, and land, it will automatically retract.

I've 'fixed' this by having a 'start up'/'reset' command which resets all variables back to their original state (which is based on your ship being in landed in a docking bay).
 
Thanks for sharing! However there is one reason for which I probably will never use the conditions in the way you describe. I want to be free to use either voice commands or button presses for certain actions. If I toggle the lights with the button, VA will not be aware of it, and the whole thing will be inverted unless I press the physical button again. This is trouble I don't need if I'm ever in an emergency (like "oops, I forgot to lower the landing gear and I'm 5m above ground"). It's up to me not to break immersion by saying "gear down" when they are already down.

However I'm sure there are very interesting possibilities with conditions, like creating a short dialogue tree, or a confirmation for certain actions, etc... But I haven't tried the latest version of VA yet, I've read the update logs explaining the conditions, tokens and stuff, and it seems a bit complicated to use!

If someone here has any experience with these new functions, I'd be glad to learn more about them!
 
However I'm sure there are very interesting possibilities with conditions, like creating a short dialogue tree, or a confirmation for certain actions, etc... But I haven't tried the latest version of VA yet, I've read the update logs explaining the conditions, tokens and stuff, and it seems a bit complicated to use!

If someone here has any experience with these new functions, I'd be glad to learn more about them!

I'm working on a VA sound pack that includes a bit of dialogue trees. Right now for instance when I say 'Goodnight' she'll respond with either of 5 responses. This is how it looks:
YJgGVr2.png
 
Thanks for sharing! However there is one reason for which I probably will never use the conditions in the way you describe. I want to be free to use either voice commands or button presses for certain actions. If I toggle the lights with the button, VA will not be aware of it, and the whole thing will be inverted unless I press the physical button again. This is trouble I don't need if I'm ever in an emergency (like "oops, I forgot to lower the landing gear and I'm 5m above ground"). It's up to me not to break immersion by saying "gear down" when they are already down.

However I'm sure there are very interesting possibilities with conditions, like creating a short dialogue tree, or a confirmation for certain actions, etc... But I haven't tried the latest version of VA yet, I've read the update logs explaining the conditions, tokens and stuff, and it seems a bit complicated to use!

If someone here has any experience with these new functions, I'd be glad to learn more about them!

Thats not actually true.....

If you set up the keybindings as separate commands

I call the command ((Lights))-Key Binding (the brackets stop VA recognising it as a voice command.

I do the above for all my key binds, that way if something changes i just have to change the binds here instead of every voice command i create.

Then just use execute command ((lights))-Key Binding to do the keypress

Then in your Lights voice command

Begin Condition - lights-status = 0
execute command ((Lights))-Key Binding
set condition lights-status = 1
say lights on
End Condition and exit if condition is met
Begin Condition - lights-status = 1
execute command ((Lights))-Key Binding
set condition lights-status = 0
say lights off
End Condition and exit if condition is met

then click the check box next to - "When i Press" and the assign the key Binding you have for lights
make sure the "Do not allow key binding to pass through" is checked.

now if you press the lights button in game, elite does not receive the key press but voice attack detects its pressed and runs the command, and passes the key press through to elite.

This syncs up keyboard commands with voice commands, so now you can choose whether to do it via keyboard or with VA and nothing goes out of sync. (It also has the added advantage of playing or saying lights on/Off in ED when you do the keypress)

I have quite an advanced profile for jumping directly to a specific tab in either the left or right panels, and you can use the keyboard to switch between tabs and the left/right panels.
Whether you use VA for the command or keyboard it all stays in sync, (the only drawback which i have not found a bullet proof solution to yet is when the last 2 tabs in the left panel get disabled.

But its no big deal just say reset panels and it all starts working again.

You can get my profile here, either to use, or just to see how i have things set up.
 
Last edited:
Fellow Commanders,

I'm glad you're finding this useful.
Dizzy B - I've not long finished setting up a 'Key Binding' command for each key for exactly the reasons you've given. However, I wasn't aware of being able to sync the actual key-press through to VA. I'll be updating my profile later. If anyone's interested, I'll share that base profile too - Saves a lot of work :)
Thats not actually true.....

If you set up the keybindings as separate commands

I call the command ((Lights))-Key Binding (the brackets stop VA recognising it as a voice command.

I do the above for all my key binds, that way if something changes i just have to change the binds here instead of every voice command i create.

Then just use execute command ((lights))-Key Binding to do the keypress

Then in your Lights voice command

Begin Condition - lights-status = 0
execute command ((Lights))-Key Binding
set condition lights-status = 1
say lights on
End Condition and exit if condition is met
Begin Condition - lights-status = 1
execute command ((Lights))-Key Binding
set condition lights-status = 0
say lights off
End Condition and exit if condition is met

then click the check box next to - "When i Press" and the assign the key Binding you have for lights
make sure the "Do not allow key binding to pass through" is checked.

now if you press the lights button in game, elite does not receive the key press but voice attack detects its pressed and runs the command, and passes the key press through to elite.

This syncs up keyboard commands with voice commands, so now you can choose whether to do it via keyboard or with VA and nothing goes out of sync. (It also has the added advantage of playing or saying lights on/Off in ED when you do the keypress)

I have quite an advanced profile for jumping directly to a specific tab in either the left or right panels, and you can use the keyboard to switch between tabs and the left/right panels.
Whether you use VA for the command or keyboard it all stays in sync, (the only drawback which i have not found a bullet proof solution to yet is when the last 2 tabs in the left panel get disabled.

But its no big deal just say reset panels and it all starts working again.

You can get my profile here, either to use, or just to see how i have things set up.

Maxx Peck - I've also done similar dialogue trees, but taken it a little further. I use VA to create 3 random numbers. The first is used to determine what phrase is used "Hello, Commander", "Yes, Commander", etc.
The second is then used for a follow up statement, but is only used if the value is greater than 6 "How Can I help you", Sorry, I was sleeping", etc. And finally the third which is only used if the value is greater than 9 - It allows for some quite random, variable length statements.

I'm working on a VA sound pack that includes a bit of dialogue trees. Right now for instance when I say 'Goodnight' she'll respond with either of 5 responses. This is how it looks:
YJgGVr2.png

Happy Flying Commanders.
 
Here's a link to my current profile:
http://1drv.ms/1DnzNiq

I've included the logic that Dizzy recommended that also catches the key press too so that things stay in sync.
The only thing is, when launching ED and starting in the landing bay, you must say "Initialise System" - This sets the variables to there default values.

Rather than using TTS, I use the HCS VoicePack available from http://elitedangerousvoicepack.com./ - It only cost me £3.50 and is a highly recommended purchase.

Happy Flying Commanders
 
This is a really cool function.
Like for example, if you forget you have the cargo scoop deployed, and land, it will automatically retract. This won't be caught by voice attack, so now you're in the wrong position, so when voice attack thinks it's opening it will close it, and vice verse. It's not really a problem because the actual outcome will be the same, but it would be an annoyance to me as I'm using sound file feedback as well.

Arkemiffo - I wasn't aware that this happened when you landed, however, easily worked around - I have a command that I always use which is 'Prepare to Dock'. This will call the "Lower Landing Gear" and "Lights On" commands. Each of these contain the logic to work if applicable. All I need to do is add the "Raise Cargo Scoop" as part of the "Prepare to Dock" command and everything works smoothly.
 
Very interesting topic guys, I'll be trying all this stuff as soon as I can! I'll try to create sound files instead of simple TTS, so that I can apply effects on the voice to make it sound like the ship computer's. Ivona Amy is already pretty close so I'll use it as a base.
 
I use simple tts, cos i am lazy, its not as good as the sample packs that have been created, as theres no inflection in the voice.

It has no soul, but thats ok, it has the advantage that my system isn't full of wav files.
 
Is there a way for a condition value checkup or something to let your (onboard computer) do the next?

When I Say "Lights On"

If (light$) = 1 Then say "Lights already turned on"
Else
Set (Light$) value =1
Say " Turning Lights On"
Press "L"
End condition

Forget the syntaxis i just made it to be clear enough

If it's possible, how must you do it in VA?
 
Is there a way for a condition value checkup or something to let your (onboard computer) do the next?

When I Say "Lights On"

If (light$) = 1 Then say "Lights already turned on"
Else
Set (Light$) value =1
Say " Turning Lights On"
Press "L"
End condition

Forget the syntaxis i just made it to be clear enough

If it's possible, how must you do it in VA?

Yes, pretty much like you've got it. You have a variable for lights status, and you check it to see if the routine to press the lights key should be run. If it's zero, you set the lights variable to one, and turn the lights on. Do the opposite for lights off. The only drawback is there's no feedback from the game, so you could possibly get out of sync, but it's pretty rare for me to have that, especially for something as simple as lights. Some of the other complex menu ones don't like lag too much.
 
Is there a way for a condition value checkup or something to let your (onboard computer) do the next?

When I Say "Lights On"

If (light$) = 1 Then say "Lights already turned on"
Else
Set (Light$) value =1
Say " Turning Lights On"
Press "L"
End condition

Forget the syntaxis i just made it to be clear enough

If it's possible, how must you do it in VA?

You would need to have two commands Lights On and Lights Off
also a variable called lights-status which you would have in an initialize systems voice command
that command would set up any variables you have for example:
(note its best to set up all your key bindings to a command, then when you want to do that keypress just execute the key bind command

Command ((Lights)) - keybinding
press key l and hold for 0.2 seconds
------------------------------------

Command Initialise Systems
set condition lights-status = 0
------------------------------------

Command Lights On
Begin Condition - lights-status = 0
execute command ((Lights))-Key Binding
set condition lights-status = 1
say lights on
End Condition and exit if condition is met
Begin Condition - lights-status = 1
say lights already on
End Condition and exit if condition is met
------------------------------------------

Command Lights Off

Begin Condition - lights-status = 0
say lights already off
End Condition and exit if condition is met
Begin Condition - lights-status = 1
execute command ((Lights))-Key Binding
set condition lights-status = 0
say lights off
End Condition and exit if condition is met
------------------------------------------

If you want to keep the keyboard synced map your lights on and off commands to the binding for your lights key and make sure the checkbox for do not allow key to be passed through is checked.
 
Is there a way for a condition value checkup or something to let your (onboard computer) do the next?

When I Say "Lights On"

If (light$) = 1 Then say "Lights already turned on"
Else
Set (Light$) value =1
Say " Turning Lights On"
Press "L"
End condition

Forget the syntaxis i just made it to be clear enough

If it's possible, how must you do it in VA?

Hi BigBossLuke,

Dizzy has given some examples below, but both he & I have posted our profiles in this thread that you're free to download & take a look. We both do exactly what you're describing, just in slightly different ways.

Commander Erasmus
 
Here's a link to my current profile:
http://1drv.ms/1DnzNiq

I've included the logic that Dizzy recommended that also catches the key press too so that things stay in sync.
The only thing is, when launching ED and starting in the landing bay, you must say "Initialise System" - This sets the variables to there default values.

Rather than using TTS, I use the HCS VoicePack available from http://elitedangerousvoicepack.com./ - It only cost me £3.50 and is a highly recommended purchase.

Happy Flying Commanders
I'm using something similar, a voicepack of 700 commands recorded by a female voice artist. I think the one you're linking to is taking it even further. Certainly far better than the default TTS voices you get with Windows.

Anyone using VA I cannot recommend enough that you use voice samples instead of TTS for a far more involving experience. :)
 
You would need to have two commands Lights On and Lights Off
also a variable called lights-status which you would have in an initialize systems voice command
that command would set up any variables you have for example:
(note its best to set up all your key bindings to a command, then when you want to do that keypress just execute the key bind command
.

Almost there!

I guess (as in real life when flying an aircraft) you can match your VoiceAttack values with an initial (onboard checkup procedure), to assure your initial values are the same.

(ie. turn lights on, landing gear should be down, cargo scoop retracted, etc.)

I still have a question,
I'm not sure how to 'read' a variable's value at the beginning of the command.

Thanx for your time;)
 
Back
Top Bottom