Release EDDI Scripts and EDDI enabled VA Commands Thread

I'm really loving EDDI, and have started tweaking scripts to add a little sass and personality to the voice. One problem I can't seem to figure out though: The 'Pause' function doesn't seem to be working correctly.

Specifically, for the 'Docking Granted' script, I really love how it tells me the pad is at "six o'clock near", but it's often a struggle to hear as the station's Flight Control is squawking out permission. I figured I'd mess with the amount of time the EDDI script pauses, to have EDDI start telling me the pad location after Flight Control has finished talking. However, nothing I seem to do with the value in the 'Pause' command seems to make any difference whatsoever.

I've got zero computer programming experience, so it's probably something simple I'm not doing right. Any help or advice that anyone could give me would be awesome.

I think the pause was changed in one of the latest EDDI builds so it is now 8000 milliseconds. Last week when flying my Anaconda and using the Docking Computer I noticed the same problem of Eddi telling me where the pad was before or during Flight Control telling me the pad number. I changed the pause to 10000 and it's working fine now. What value have you set it to ?
 
I've tried everything from the whatever the default setting was (on the default script) right up to 99999999. Even deleting the 'Pause' script gave no effective change in the time interval before the TTS started talking.

Have you disabled SSML in your text to speech settings? Pause is an SSML entity.
 
Can you copy and paste the script here so we can have a look ?

Just to be sure it wasn't something I was screwing up, I went back to the 'default' script for 'Docking Granted'.

I have not disabled SSML in my TTS, I'm not even sure of what that is, but I'm looking into what Google will teach me now. Where would I find out if it's been disabled or not?

{set station to StationDetails(event.station)}
{if station.model = "Coriolis Starport" || station.model = "Orbis Starport" || station.model = "Ocellus Starport" || station.model = "Unknown Starport":
{Pause(8000)}
Landing pad {event.landingpad} is at
{if event.landingpad = 1:
six o'clock near
|elif event.landingpad = 2:
six o'clock near
|elif event.landingpad = 3:
six o'clock far
|elif event.landingpad = 4:
six o'clock far
|elif event.landingpad = 5:
seven o'clock near
|elif event.landingpad = 6:
seven o'clock near
|elif event.landingpad = 7:
seven o'clock
|elif event.landingpad = 8:
seven o'clock far
|elif event.landingpad = 9:
eight o'clock near
|elif event.landingpad = 10:
eight o'clock far
|elif event.landingpad = 11:
nine o'clock near
|elif event.landingpad = 12:
nine o'clock near
|elif event.landingpad = 13:
nine o'clock
|elif event.landingpad = 14:
nine o'clock far
|elif event.landingpad = 15:
nine o'clock far
|elif event.landingpad = 16:
ten o'clock near
|elif event.landingpad = 17:
ten o'clock near
|elif event.landingpad = 18:
ten o'clock far
|elif event.landingpad = 19:
ten o'clock far
|elif event.landingpad = 20:
eleven o'clock near
|elif event.landingpad = 21:
eleven o'clock near
|elif event.landingpad = 22:
eleven o'clock
|elif event.landingpad = 23:
eleven o'clock far
|elif event.landingpad = 24:
twelve o'clock near
|elif event.landingpad = 25:
twelve o'clock far
|elif event.landingpad = 26:
one o'clock near
|elif event.landingpad = 27:
one o'clock near
|elif event.landingpad = 28:
one o'clock
|elif event.landingpad = 29:
one o'clock far
|elif event.landingpad = 30:
one o'clock far
|elif event.landingpad = 31:
two o'clock near
|elif event.landingpad = 32:
two o'clock near
|elif event.landingpad = 33:
two o'clock far
|elif event.landingpad = 34:
two o'clock far
|elif event.landingpad = 35:
three o'clock near
|elif event.landingpad = 36:
three o'clock near
|elif event.landingpad = 37:
three o'clock
|elif event.landingpad = 38:
three o'clock near
|elif event.landingpad = 39:
four o'clock near
|elif event.landingpad = 40:
four o'clock far
|elif event.landingpad = 41:
five o'clock near
|elif event.landingpad = 42:
five o'clock near
|elif event.landingpad = 43:
five o'clock
|elif event.landingpad = 44:
five o'clock far
|elif event.landingpad = 45:
five o'clock far
}
, as you enter with the green lights on your right.
}
 
Last edited:
Just to be sure it wasn't something I was screwing up, I went back to the 'default' script for 'Docking Granted'.

I have not disabled SSML in my TTS, I'm not even sure of what that is, but I'm looking into what Google will teach me now. Where would I find out if it's been disabled or not?

Here's where you can enable or disable SSML, the box at the bottom.

gvNOqo5.jpg
 
I've been trying to write a script for when I go exploring.

Basically want a few stats written to a text file or files

Trying to use EDDI jump event to do this (unless someone knows of a better easier way)

I want basically this:

Number of times I have jumped
Total distance travelled
Names of the last 5 systems I have jumped and the distance between them
Number of systems visted
Total fuel scooped & used

Thanks for any help on this as its been racking my brain most of the day and I just cant get my head around it.

Ta
 
I've been trying to write a script for when I go exploring.

Basically want a few stats written to a text file or files

Trying to use EDDI jump event to do this (unless someone knows of a better easier way)

I want basically this:

Number of times I have jumped
Total distance travelled
Names of the last 5 systems I have jumped and the distance between them
Number of systems visted
Total fuel scooped & used

Thanks for any help on this as its been racking my brain most of the day and I just cant get my head around it.

Ta

Well look no further. I was planning on releasing this VA profile today anyway. This profile has actions that write to a text file whenever anything runs in EDDI. I used jgm's documentation and created a VA command for every ((EDDI)) command available. They are under the EDDI Actions label.

Some of the stuff under the EDDI label is work in progress, I'll update the link as I finish it, but play around with it if you wanna!

First and foremost, you need a slightly updated VA for this to work. Check out this link:

http://voiceattack.com/smf/index.php?topic=637.0

In the second reply from Gary he provides a new voiceattack.exe file that enables appending to a text file. Download that exe and replace the one in c:\Program Files (x86)\Voice Attack.

Then, download my VA profile and import it: Right click me and save as

Now, lastly, edit the profile. There is a command in it called "ON PROFILE LOAD: Set log file info for EDDI Actions group". Edit this action, and then edit the two Set Text actions under the comment "Edit the next two entries to change the save location for the log". Change the Filename variable to whatever you want the logfile to be saved as, and change the Directory variable to the location you want the log saved. Be sure to include the backslash at the end of the path in the Directory variable or your logfile will be written to the previous folder.

The way I have it set up, the log gets renamed every day, you can change this if you want, I set it up like this so the file doesn't get too big.

The primary reason I created this is because when I am exploring or running trade, I like to mute both ED and VA and watch Neflix or Plex. I still wanted to utilize EDDI however. This allows me to see what EDDI is saying. What I do is I use Snaketail. It is a utility for doing live monitoring of log files in Windows, ala the Linux "tail -f" command. Whats nice is I can use it to view my EDDI log, plop it down on my third monitor, and EDDI still talks to me without sound! You can get Snaketail here.

Enjoy commanders, and let me know if you run into any problems!
 
Last edited:
Well look no further. I was planning on releasing this VA profile today anyway. This profile has actions that write to a text file whenever anything runs in EDDI. I used jgm's documentation and created a VA command for every ((EDDI)) command available. They are under the EDDI Actions label.

Some of the stuff under the EDDI label is work in progress, I'll update the link as I finish it, but play around with it if you wanna!

First and foremost, you need a slightly updated VA for this to work. Check out this link:

http://voiceattack.com/smf/index.php?topic=637.0

In the second reply from Gary he provides a new voiceattack.exe file that enables appending to a text file. Download that exe and replace the one in c:\Program Files (x86)\Voice Attack.

Then, download my VA profile and import it: Right click me and save as

Now, lastly, edit the profile. There is a command in it called "ON PROFILE LOAD: Set log file info for EDDI Actions group". Edit this action, and then edit the two Set Text actions under the comment "Edit the next two entries to change the save location for the log". Change the Filename variable to whatever you want the logfile to be saved as, and change the Directory variable to the location you want the log saved. Be sure to include the backslash at the end of the path in the Directory variable or your logfile will be written to the previous folder.

The way I have it set up, the log gets renamed every day, you can change this if you want, I set it up like this so the file doesn't get too big.

The primary reason I created this is because when I am exploring or running trade, I like to mute both ED and VA and watch Neflix or Plex. I still wanted to utilize EDDI however. This allows me to see what EDDI is saying. What I do is I use Snaketail. It is a utility for doing live monitoring of log files in Windows, ala the Linux "tail -f" command. Whats nice is I can use it to view my EDDI log, plop it down on my third monitor, and EDDI still talks to me without sound! You can get Snaketail here.

Enjoy commanders, and let me know if you run into any problems!

Oh man sorry I didn't get back to you sooner but DANG if this look like EXACTLY what I wanted. Would be cool if there was a way to limit the amount of lines to the text file as that would be perfect instead of the extra bits you seemed to have done to make sure the file doesn't get too big.

What I would like is that when writing the txt file it limits it to 5 lines (or how ever many you want) and puts the new data at the top instead o the bottom as "Appending to file" seems to do. Like I said I'm no programmer so I have no idea.

Also another thing I want to do is a calculation on the fuel variable. So instead of showing 22.324234T on the fuel used it shows me 22T or which ever is the most rounded up or down number for my last 5 jump scripts. I don't know how to do calculations in VA yet

Just about to head out to work or I would be working on this all day long :/

This is my current (((EDDI Jumped))) script in VA

Write TEXT to a file (Append txt file checked)
{TXT:EDDI jumped system} Fuel: {DEC:EDDI jumped fuelused}T ({DEC:Last jump})


btw I know currently the {DEC:Last jump} doesn't work currently
 
The primary reason I created this is because when I am exploring or running trade, I like to mute both ED and VA and watch Neflix or Plex. I still wanted to utilize EDDI however. This allows me to see what EDDI is saying. What I do is I use Snaketail. It is a utility for doing live monitoring of log files in Windows, ala the Linux "tail -f" command. Whats nice is I can use it to view my EDDI log, plop it down on my third monitor, and EDDI still talks to me without sound! You can get Snaketail here.

Enjoy commanders, and let me know if you run into any problems!

Propably asking a dumb question here:
Is it possible to temporarily disable the speech responder (ideally, on a 'per event' basis)?
I love EDDI, but when you're, say, A-B-A trading, it gets old fast...
I'd like to have a VA command for that rather than to disable/enable in config.
 
Propably asking a dumb question here:
Is it possible to temporarily disable the speech responder (ideally, on a 'per event' basis)?
I love EDDI, but when you're, say, A-B-A trading, it gets old fast...
I'd like to have a VA command for that rather than to disable/enable in config.

For when I'm doing those kinds of A-B-A trading I've made two VA commands:
'Eddi shut up' and 'Eddi wake up'
The first sets a boolean variable named SilentEddi to True and the second one sets it to False.

I also made a ((EDDI jumping)) command.
That calls the script 'Jumping' only when SilentEddi=False

In the speechresponder I've unchecked the 'Jumping' script.

Now when I'm travelling Eddi gives a jumping report until I say "Eddi shut up"

After I got this to work I made some variants like "Eddi keep it down", which makes Eddi only tell me the system I'm jumping too, and "Eddi first time only", which gives me the full report only when I visit a system for the first time, after that first visit it gives me less information.
To do this I made different scripts named 'Jumping Minimal' and 'Jumping first time only' and call those from my ((EDDI jumping)) command depending on the state of the EDDI... variables (SilentEddi, FirstEddi, MiniEddi)
 
For when I'm doing those kinds of A-B-A trading I've made two VA commands:
'Eddi shut up' and 'Eddi wake up'
The first sets a boolean variable named SilentEddi to True and the second one sets it to False.

I also made a ((EDDI jumping)) command.
That calls the script 'Jumping' only when SilentEddi=False

In the speechresponder I've unchecked the 'Jumping' script.

Now when I'm travelling Eddi gives a jumping report until I say "Eddi shut up"

After I got this to work I made some variants like "Eddi keep it down", which makes Eddi only tell me the system I'm jumping too, and "Eddi first time only", which gives me the full report only when I visit a system for the first time, after that first visit it gives me less information.
To do this I made different scripts named 'Jumping Minimal' and 'Jumping first time only' and call those from my ((EDDI jumping)) command depending on the state of the EDDI... variables (SilentEddi, FirstEddi, MiniEddi)

You sir, are a genius. I'll probably need a few beers to get that working myself, but i got the idea.
[big grin]

edit: working a charm, thx again!
 
Last edited:
Propably asking a dumb question here:
Is it possible to temporarily disable the speech responder (ideally, on a 'per event' basis)?
I love EDDI, but when you're, say, A-B-A trading, it gets old fast...
I'd like to have a VA command for that rather than to disable/enable in config.

punkerich has a cool idea using VA. What I usually do is just mute VA and ED in Windows. In Windows 7, 8, and 10, if you right click your speaker down by the clock and click "Open volume mixer", you can mute and adjust the volume on a per-program basis. I just mute VA and the ED client when I am going to be watching something on Netflix or Plex.
 
Oh man sorry I didn't get back to you sooner but DANG if this look like EXACTLY what I wanted. Would be cool if there was a way to limit the amount of lines to the text file as that would be perfect instead of the extra bits you seemed to have done to make sure the file doesn't get too big.

What I would like is that when writing the txt file it limits it to 5 lines (or how ever many you want) and puts the new data at the top instead o the bottom as "Appending to file" seems to do. Like I said I'm no programmer so I have no idea.

Also another thing I want to do is a calculation on the fuel variable. So instead of showing 22.324234T on the fuel used it shows me 22T or which ever is the most rounded up or down number for my last 5 jump scripts. I don't know how to do calculations in VA yet

Just about to head out to work or I would be working on this all day long :/

This is my current (((EDDI Jumped))) script in VA

Write TEXT to a file (Append txt file checked)
{TXT:EDDI jumped system} Fuel: {DEC:EDDI jumped fuelused}T ({DEC:Last jump})


btw I know currently the {DEC:Last jump} doesn't work currently

As for keeping a running tally, what you can do is set profile variables in VA. Set up an INT variable called RunningTally and click "Save to profile" at the bottom. This is like setting up a "global" variable in a programming language, that variable becomes available to all VA commands. This is actually how I set up the Filename and Directory variables in my profile so I could change just one when I wanted to move the file as opposed to changing all ~50 actions. Then you could do a conditional block against the RunningTally variable, if RunningTally is less than 5, append to the text file and add 1 to RunningTally, if RunningTally is greater than or equal to 5, overwrite the text file. You can get pretty convoluted in VA using variables [big grin]. I'll play around with it and see if I can make you an example profile to start with.

As for the rounding, what you have to do is pass the EDDI variable into a VA variable. For example, create a "Set a decimal value" action, name it FuelUsed. Then, choose the "Convert Text/Token" option and in the box, put {DEC:EDDI jumped fuelused}. Finally, check the "Round value to" box and choose your decimal places, 0 removing all decimals. It will look like this:

roundvariable.jpg


Then you would write this to your text file:

Code:
{TXT:EDDI jumped system} Fuel: {DEC:FuelUsed}T ({DEC:Last jump})

If you look at the action I set up for ((EDDI star scanned)) I used this technique a lot for the star values.

Thus endeth the lesson. Let me know if you have any issues!
 
Last edited:
For when I'm doing those kinds of A-B-A trading I've made two VA commands:
'Eddi shut up' and 'Eddi wake up'
The first sets a boolean variable named SilentEddi to True and the second one sets it to False.

I also made a ((EDDI jumping)) command.
That calls the script 'Jumping' only when SilentEddi=False

In the speechresponder I've unchecked the 'Jumping' script.

Now when I'm travelling Eddi gives a jumping report until I say "Eddi shut up"

After I got this to work I made some variants like "Eddi keep it down", which makes Eddi only tell me the system I'm jumping too, and "Eddi first time only", which gives me the full report only when I visit a system for the first time, after that first visit it gives me less information.
To do this I made different scripts named 'Jumping Minimal' and 'Jumping first time only' and call those from my ((EDDI jumping)) command depending on the state of the EDDI... variables (SilentEddi, FirstEddi, MiniEddi)

For the record, unchecking the speech responder event and calling from VA works fine for the 'Jumping' event because all the data used comes the FDev API. This method will not work for any Journal Log triggered event due to jgm passing an object to the Cottle template with pertinent event data at the time of the call. If you call the speech responder script, no object will be passed and the script will not function as intended.

The good news is that there's a fix on the way.
 
Last edited:
For the record, unchecking the speech responder event and calling from VA works fine for the 'Jumping' event because all the data used comes the FDev API. This method will not work for any Journal Log triggered event due to jgm passing an object to the Cottle template with pertinent event data at the time of the call. If you call the speech responder script, no object will be passed and the script will not function as intended.

The good news is that there's a fix on the way.

I don't think the problem you mention has to do with checking or unchecking the script. Using the ((EDDI event)) in VA triggers the script when the event occurs and so does checking the event in the speechresponder meaning the script is triggered twice simultaneously. To prevent this from happening you have to uncheck it so when the event occurs it's only triggered from VA. I'm not talking about using objects or variables, that are set in the script, in VA but only using VA to determine which script is triggered when the event occurs.
 
Hi Guys,

please excuse the Noob question. Ive got the Beta of voiceattack and I have EDDI. Ive connected all various logs etc and everything from the perspective of the speech responder functions perfectly. However what I want to do is use commands inside of Voiceattack, in particular ((EDDI docking granted)), ((EDDI shields up)) and ((EDDIE shields down)) to trigger actions within voiceattack. For example when docking is granted I want to be able use a voiceattack command to change my music through voiceattack.

When I use EDDI and voiceattack in game it seems that they are both working. When I request docking I get the speech responder giving me information on my landing pad, however, if I try and use the Voiceattack command it doesn't seem to be getting the trigger from EDDI, in fact none of the voiceattack commands seem to be working. I can however use the commands in the EDDI profile, just not receiving automatic updates to status of various systems. Anybody know what I'm doing wrong ? Ive been trying to figure this out for over a week and have read various blogs and forums, but I'm stuck.

Thanks in advance
 
I don't think the problem you mention has to do with checking or unchecking the script. Using the ((EDDI event)) in VA triggers the script when the event occurs and so does checking the event in the speechresponder meaning the script is triggered twice simultaneously. To prevent this from happening you have to uncheck it so when the event occurs it's only triggered from VA. I'm not talking about using objects or variables, that are set in the script, in VA but only using VA to determine which script is triggered when the event occurs.

I never said it did.

The speech responder calling an event triggered script and the Voice Attack responder calling an ((EDDI event)) occur individually in their respective threads.

I'm drawing attention to the fact if you call a speech responder script, which is triggered by a Journal Log event, from Voice Attack via the 'Execute eternal plugin' command (with context = speech), the object data which is passed to the script during an event will not be there.

For example, after a 'docking granted' event, you can not call the script again via Voice Attack and expect to hear the pad location again. Additionally, you can uncheck 'Docking granted' in the Speech Responder, and call it via ((EDDI docking granted)), but it wont work as intended because the object data is not there.
 
Last edited:
Top Bottom