Jump to content
  • entries
    4
  • comments
    49
  • views
    2,309

About this blog

Personal blog including Advanced Voice Control Systems profiles for VoiceAttack, and other projects.

Entries in this blog

=VG= SemlerPDX

 

AVCS_CORE_Title_QUARTER.png

Profile for  VoiceAttack
by =VG= SemlerPDX

 

Description:

AVCS CORE is the new framework for any VoiceAttack profile I release in future, and provides awesome tools to any VoiceAttack user.  It can be used alone and by itself, or as a base to build a VoiceAttack profile around, including its functions in your own creations.  The Quick Command Creator cannot possibly replace the very easy and very powerful voice commands we can create through VoiceAttack in the standard fashion, but allow users to quickly create simple keypress commands for a phrase, or even advanced multi-step macros that can use a limited selection of common VoiceAttack actions.  The very fun Voice Authorization System lets us create passphrases that we can gate a QCC Command behind, for example, "Execute self destruct mode", 'command code required!', "Picard 4 7 Alpha Tango", 'confirmed'.

I've even created a special home page and forum section here at the VG website, and a channel in the VG Discord, to provide Help & Support for the many users of my profiles - with voice controlled bug reporting to make it easy to let me know when I need to fix something.



As I plan to release more and more VoiceAttack profiles for various games, I needed a framework to standardize my methods, and to help keep profiles used by other people up to date and in proper working order.  I never quite expected such a large user base, and with that I've decided to offer much more direct support through in-profile options menus and help & support options that tailor themselves to whatever AVCS4 profile is active.  By checking for just 8 bytes of an update number on the VG website when loading, AVCS CORE can provide a pop-up choice for users to view the latest changelog, apply the latest patch (or open the website to download a new major update version), or just postpone until later.  I've even included an option to turn off minor patch update prompts, and to roll back to the last version if desired!




The purpose of this profile is to function as the backbone of any AVCS4 game profiles I release, such as the current AVCS4 Falcon BMS Radios profile, and provide users with a host of profile and update controls.  When AVCS CORE is first loaded by VoiceAttack, it will initialize itself and any other AVCS4 Profile that is switched to, bringing its full list of commands into the end game profile.  This includes the Quick Command Creator and Voice Authorization System, with new commands or codes saved to the Active Profile's save file.  Any other AVCS4 Profile that gets switched to will clear and re-load its own QCC Commands or VAS Passphrases (if any), working out of it's own save file as well.

Included is the AVCS CORE profile package that includes the AVCS CORE Profile designed for VoiceAttack, as well as the optional AVCS CORE Framework blank Template Profile for VoiceAttack profile builders.  To keep AVCS CORE startup fast for any AVCS4 Profiles, commands cannot be added directly to the CORE Profile, so the Template is available, and can include all of the functionality of AVCS CORE by including the CORE profile commands through its profile options.  This profile will have its own save file and config files folder in the VoiceAttack Apps folder along side other AVCS Profiles data.  Since AVCS CORE needs to load before any other AVCS4 Profile (including the AVCS4 Template Profile), it will be updated the least, and has been tested the most over the past 7 months of development.  I will continue to support all AVCS4 Profiles through AVCS CORE and its powerful profile control options.



Say goodbye to the keyboard, and enjoy the immersion! Cheers!
 

Features:

AVCS_CORE_Info1.pngAVCS_CORE_Info2.pngAVCS_CORE_Info3.png
*The optional Push-To-Talk mode is disabled by default.  Say, "Turn On Push To Talk Mode" to enable
**Follow Instructions inside profile to set Push-To-Talk buttons to keys or joystick buttons if desired




kYtxqur.png

Download: (Click Here)

I will be running a Public Beta Test for AVCS CORE and AVCS4 Falcon BMS Radios (1.3.91b), and users are encouraged to try out both, or just AVCS CORE and its included Template Profile, if desired.
Please use the voice command "Open Help and Support Menu" to communicate any bug reports.  These help menus can be expanded without new profile versions, so suggestions are welcome.
Thank you for checking out AVCS CORE for VoiceAttack!

Tips for this profile:

spoilerIMG2415905122018.PNG
  • *On first import, you should say, "Initialize Profile" - after first time, this is automatic.  Any attempt to use commands before this will trigger auto-initialization.
  • If you get errors from my profile, Launch VoiceAttack and open Options (wrench icon in lower right):
  •   -Under last tab on top, System/Advance, check box next to "Use Nested Tokens" as in image 1 below
  •   -Unless absolutely required, during testing it's recommended to uncheck "Allow command segment info for composite commands"
     
  • Open the profile - if not already done, group commands by category and consolidate multi-part commands as in image 2 & 3 below
  • Click on the Description tab at the top to help sort commands further (see image 4)
  • Read a semicolon ";" as the word "or" and look at long commands as having many options like saying "2;Two;Too;To;Wingman"  (read as "2 -or- Two -or- Too -or- To -or- Wingman")

image 1image 2image 3image 4

 

 

Commands Reference:

 

CommRef-AVCS4-CORE-25.png

 

 

Quote

v0.91b Major Profile Update (beta)

Due to some initial issues right off the bat, it seems the concept of having some AVCS CORE functions outside the profile itself as part of an App for VoiceAttack would have included a bit more work, but more importantly increased the profile package size from around 1MB to over 25MB, and it's just not worth it.  The idea was specifically for things like my Save File Sort function that orders the lines of the save file into a readable alphanumeric sorting, where AVCS4 module specific entries were properly grouped together (like saved Quick Commands or VAS Passphrases), and any new AVCS4 profile such as Elite Dangerous could introduce new sorting rules by simply including a new version of the AVCS_CORE App for VoiceAttack in it's profile package.  This would have removed the need to update the base AVCS CORE profile that all AVCS4 game profiles rely upon anytime I wanted to modify those game-specific functions.

I've done away with the app completely now, and recreated the simple functions like sort and initialize as inline functions for VoiceAttack.  This requires everyone to download a new version of AVCS CORE and the AVCS4 Falcon BMS Radios (beta) profile if currently used.

Thanks for your patience during the beta test rounds here, the end goal for AVCS CORE is to be a stable un-changing profile that can handle profile management for any new AVCS4 game profile I create in the future without needing updates itself, and I think we're well on our way to that.  Cheers!

Please be sure to download the AVCS4 Falcon BMS v1.3.91b Profile (if used), this updated changed the AVCS CORE function commands inside AVCS4 BMS, too...

 


BETA Release AVCS CORE v0.91 Changelog Aug-22-2020

	! USER NOTICE!
	-This is a major profile update, users of v0.90b must download the new v0.91 beta test profile
		-(AVCS CORE profile version 0.90b will be retired in 30 days)

Fixes/Improvements:
 -AVCS_CORE App removed in place of internal systems - was too slow, and had compatibility issues


___ (previous version changelogs) ___

spoilerIMG2415905122018.PNG

 

Quote


BETA Release v0.90 Changelog Aug2020

New Commands:
 -AVCS CORE Commands Included into AVCS4 User Template Profiles so users can add commands, adding to CORE increases its load time
 -"Create a new Voice Authorization Phrase" and other included commands in Voice Authorization System
 -VAS can allow QCC commands to be locked behind a required authorization phrase as set by users, in up to 10 weighted levels
 -Integerated Bug Reporting and debugging options for easy troubleshooting
 -Versioning allows for Mutiple prior versions (reinitialization required) for easy profile version rollback if desired
 -Included UPDATE command to allow users to import previous saved user settings and saved Quick Commands from previous version of profile
 -Full profile control through command, "Open CORE Options Menu"
 -Better user support through command, "Open Help and Support Menu"  (will expand in time)
 -User settings save file control through command, "Open Save File Menu"  (includes save file backup and restore system)
 -...and much more (see posts at avcs homepage)

Fixes/Improvements:
 -Set First Use to present user with Get Choice box for Profile Update Notifications and Preferred Profile (auto-switch) choice
 -Setting 'CurrentBackupIndex' and 'SaveFileBackupCount' to 'Not Set' inside F_SFS_LOAD_ALL  (was getting corrupted in save file)
 -Separated 'new_profiles.txt' file from AVCS4 profiles and AVCS CORE profiles to handle two imports before first time run/initialization of either
 -Added Duplicate Profile check, informs user of non-functional AVCS profiles (if ending in 'dash number' such as '-1')
 -Edited Preferred Profile command to allow for any user profile to be set to be auto-switched to after AVCS CORE finishes initializing
 -Included VoiceAttack Profile Builders Template profiles for use of AVCS CORE as a standalone profile framework for any game

___

BETA Release v0.80 Changelog July2020

New Commands:
 -"Add a new Voice Command" and others in new Quick Command Creator system
 - QCC can be used to create Simple Keypress Commands or Advanced Multi-Step Macros with a limted selection of common VoiceAttack actions
 -"Edit Keypress Timings" to open options menu to set custom timings

Fixes/Improvements:
 -AVCS CORE Profile and Updates Management systems allow version control and user notification of updates (minor or major)
 -Full Profile Update Control added with user choice, only downloads if allowed by user (only checks 8 bytes of a version number before that)
 -Profile Updates set to allow choice for majority of fixes/changes to occur without new VoiceAttack Profile download/import  *called "LIVE UPDATES"
 -Physical Profile Updates set to allow previous versions to remain installed without conflict, and also import/uninstall previous version files  *called "MAJOR UPDATES"
 -Fixed integer/decimal recognition in Save File system "LOAD_ALL" command
 -Set most profile variables to config files in VA Apps Folder (edit with "Open Advanced Core Options" command)
 -Set most commands to Text Variables, read from config files

 

 

 

=VG= SemlerPDX

 

AVCS4_BMS_Title_QUARTER.png

Profile for  VoiceAttack
by =VG= SemlerPDX

 

Description:

These commands use VoiceAttack to translate the in-game on-screen radio menus from AWACS through Tanker into natural and intelligent voice command phrases that will fire keypress macros to help keep hands on the throttle and stick, and maintain immersion.  As an additional option, these commands can be locked behind a push-to-talk mode bound to your UHF/VHF transmit buttons in-game, allowing any other VoiceAttack command unrestricted access if needed, while still restricting these BMS radio command macros.  Finally, this single advanced control profile is extremely easy to edit or integrate into other profiles.

At VETERANS-GAMING, we fly with friends or AI Pilots, or a mix of both on our 24/7 Public Korean Campaign in Falcon BMS. We may go out with an AI wingman only to have a friend take their place mid-flight.  For this reason and others, I created this VoiceAttack profile based around restricting when the computer can execute keypress macros that match voice phrases, having to first check if that pilot was set to a human pilot and therefore disregard commands for that pilot.

Thanks to user requests during the beta, there is now an optional mode to reverse the Human Pilots system, to assume all pilots are humans unless told otherwise, and also a system to choose a different keyboard layout than QWERTY.  I have also added an optional Audio Feedback Mode to play a short radio cue sound when a command is successfully recognized.


Included is a single profile that handles every callsign and radio command variation in Falcon BMS, with instructions on how to add any custom callsigns to the single profile. The focus of this profile is only on the in-game Radio Menus, and creating an immersive interaction layer through VoiceAttack that is easy to manage and update, or integrate into other Voice Control systems for Falcon BMS.  My goal was an intuitive system, so there is no user manual - only a few infographics and quick reference pic of all the radio commands.  I personally keep that final pic on my tablet for reference when flying, to find radio commands I seldom used in the past when they were more difficult to access while busy with HOTAS in the pit.


Say goodbye to the keyboard, and enjoy the immersion! Cheers!
 

Features:

GTB-BMS-Info1c_QUARTER.gifGTB-BMS-Info2c_QUARTER.gifGTB-BMS-Info3c_QUARTER.gif
*Push-To-Talk mode disabled by default.  Say, "Turn On Push To Talk Mode" to enable
**Follow Instructions inside profile to set Push-To-Talk buttons to match BMS UHF/VHF keys

 

Download: (Click Here)

 

Tips for this profile:

spoilerIMG2415905122018.PNG
  • *On first import, you should say, "Initialize Profile" - after first time, this is automatic.  Any attempt to use commands before this will trigger auto-initialization.
  • If you get errors from my profile, Launch VoiceAttack and open Options (wrench icon in lower right):
  •   -Under last tab on top, System/Advance, check box next to "Use Nested Tokens" as in image 1 below
  •   -Unless absolutely required, during testing it's recommended to uncheck "Allow command segment info for composite commands"
     
  • Open the profile - if not already done, group commands by category and consolidate multi-part commands as in image 2 & 3 below
  • Click on the Description tab at the top to help sort commands further (see image 4)
  • Read a semicolon ";" as the word "or" and look at long commands as having many options like saying "2;Two;Too;To;Wingman"  (read as "2 -or- Two -or- Too -or- To -or- Wingman")

image 1image 2image 3image 4

 

 

Commands Reference:

 

OptionsCommands_QUARTER.png

HumansListCommands_QUARTER.png
*Replace the word "Human" with "Computer" when All-Humans Mode is ON
Normally, this profile assumes all pilots are Computers, use All-Humans Mode to invert this
 

RadioMenusReference_FULL_v1.2.png

 

Quote

v1.3.91b Major Profile Update (beta)

Since the Beta Test for AVCS CORE has progressed, and changed the way it runs, AVCS4 BMS must be updated as well.  This will not be the norm, I don't expect many AVCS CORE updates, it is a fixed set of functions.  You can download and import both the new versions of AVCS CORE and AVCS4 Falcon BMS at the same time - just switch to the AVCS CORE 0.91 profile first to trigger the new version setup.

Regarding the changes to AVCS CORE, and how they effect AVCS4 Falcon BMS:
Due to some initial issues right off the bat, it seems the concept of having some AVCS CORE functions outside the profile itself as part of an App for VoiceAttack would have included a bit more work, but more importantly increased the profile package size from around 1MB to over 25MB, and it's just not worth it.  The idea was specifically for things like my Save File Sort function that orders the lines of the save file into a readable alphanumeric sorting, where AVCS4 module specific entries were properly grouped together (like saved Quick Commands or VAS Passphrases), and any new AVCS4 profile such as Elite Dangerous could introduce new sorting rules by simply including a new version of the AVCS_CORE App for VoiceAttack in it's profile package.  This would have removed the need to update the base AVCS CORE profile that all AVCS4 game profiles rely upon anytime I wanted to modify those game-specific functions.

I've done away with the app completely now, and recreated the simple functions like sort and initialize as inline functions for VoiceAttack.  This requires everyone to download a new version of AVCS CORE and the AVCS4 Falcon BMS Radios (beta) profile if currently used.

Thanks for your patience during the beta test rounds here, the end goal for AVCS CORE is to be a stable un-changing profile that can handle profile management for any new AVCS4 game profile I create in the future without needing updates itself, and I think we're well on our way to that.  Cheers!

Please be sure to download the AVCS CORE v0.91b Profile (required), this updated changed the entire initialization methods in AVCS CORE function commands and AVCS4 BMS, too!

 


BETA Release AVCS4 BMS v1.3.91 Changelog Aug-22-2020

	! USER NOTICE!
	-This is a major profile update, users of v1.3.90b must download the new v1.3.91 beta test profile and AVCS CORE v0.91b
		-(AVCS4 BMS profile version 1.3.90b will be retired in 30 days)

Fixes/Improvements:
 -AVCS_CORE App removed in place of internal systems - was too slow, and had compatibility issues

 

 

On 8/12/2020 at 10:15 PM, =VG= SemlerPDX said:

v1.3.90b Full Overhaul & AVCS CORE Integration Update (beta)

I'm very proud to finally offer the next version of AVCS4 BMS because it includes an entire set of profile control and support from my new AVCS CORE Framework Profile for VoiceAttack.  While AVCS4 BMS has not functionally changed much from what users have come to expect, AVCS CORE adds entirely new features that remove any previous need to manually edit any commands in the traditional sense to modify any configuration settings or otherwise.

The only significant new command added directly to AVCS4 BMS is "Edit the Callsigns List" (and phrase variations of it).  This opens a simple Get Choice menu to offer options to add/change/edit/remove any callsigns recognized by the profile.

After that, most everything comes from the required AVCS CORE Profile Framework that will load before AVCS4 BMS, adding commands and features, as well as allowing auto-profile switching by setting AVCS4 BMS as a "Preferred Profile" in the CORE Options Menu (say, "Open Core Options", poke around, have fun!)



Please be sure to download the AVCS CORE 0.90b Profile from this download section as well, it is now a requirement for any AVCS4 game profile I release, such as the upcoming Elite Dangerous profile, and more...


BETA Release v1.3.90 Changelog Aug2020

New Commands:
 -AVCS CORE Commands Included into AVCS4 BMS Profile to lessen profile switching to CORE when it was needed
 -"Create a new Voice Authorization Phrase" and other included commands from Voice Authorization System
 -VAS can allow QCC commands to be locked behind a required authorization phrase as set by users, in up to 10 weighted levels
 -Integerated Bug Reporting and debugging options from AVCS CORE for easy troubleshooting
 -Versioning allows for Mutiple prior versions (reinitialization required) for easy profile version rollback if desired
 -Included UPDATE command to allow users to import previous saved user settings and saved Quick Commands from previous version of profile
 -Full profile control through command, "Open CORE Options Menu"
 -Better user support through command, "Open Help and Support Menu"  (will expand in time)
 -User settings save file control through command, "Open Save File Menu"  (includes save file backup and restore system)
 -...and much more (see posts at avcs homepage)

Fixes/Improvements:
 -Set First Use to present user with Get Choice box for Default Keyboard Layout (QWERTY/AZERTY/etc..)
 -Setting 'CurrentBackupIndex' and 'SaveFileBackupCount' to 'Not Set' inside F_SFS_LOAD_ALL  (was getting corrupted in save file)
 -Separated 'new_profiles.txt' file from AVCS4 profiles and AVCS CORE profiles to handle two imports before first time run/initialization of either
 -Added Duplicate Profile check from AVCS CORE, informs user of non-functional AVCS profiles (if ending in 'dash number' such as '-1')
 -Edited Preferred Profile command to allow for any user profile to be set to be auto-switched to after AVCS CORE finishes initializing

___

BETA Release v1.3.80 Changelog Mar2020

New Commands:
 -"Add/Edit Callsigns List" commands to add or remove callsigns recognized
 -"Add a new Voice Command" and others included from Quick Command Creator system
 - QCC can be used to create additional phrasings, just set action to execute another command (by name)
 -"Edit Keypress Timings" to open options menu to set custom timings

Fixes/Improvements:
 -AVCS CORE Profile and Updates Management integeration (see AVCS CORE changelog)
 -Full Profile Update Control added with user choice, only downloads if allowed by user (only checks 8 bytes of a version number before that)
 -Profile Updates set to allow choice for majority of fixes/changes to occur without new VoiceAttack Profile download/import  *called "LIVE UPDATES"
 -Physical Profile Updates set to allow previous versions to remain installed without conflict, and also import/uninstall previous version files  *called "MAJOR UPDATES"
 -Fixed typo in command "Raygun" -- corrected from "Ragun"  (first fix via new live updates system)
 -Created 'Add New Callsigns' system using Get-Choice boxes
 -Set most profile variables to config files in VA Apps Folder (edit with "Open Advanced Core Options" command)
 -Set most commands to Text Variables, read from config files

 

 

On 1/2/2020 at 10:11 PM, =VG= SemlerPDX said:

v1.3 Patch has been released for BMS 4.34.1 (U1)

Just a simple hotfix for a bug found by Wheelchock, the standard "Ready for Departure" command was getting overwritten by the variable for the new "Carrier Ready for Departure" command added for the new U1 update for BMS. As a result, this command will call an Abort by attempting the same input key as the carrier departure. Basically, everyone does need this hotfix, can't be avoided.

Anyone can easily fix this themselve inside their own profile, if you already have v1.2, and you don't want to bother importing this new version - just open the command labeled,
"KEYPRESS_Variables →→→((ADJUST AI COMMS LISTS & KEYS USED BY THIS PROFILE HERE))←←←" and scroll down to the ATC Variables section, under the Carrier Page section,
you can change the #7 variable from "Set Text [KEY_ATC_ReadyForDeparture] to '7'" to "Set Text [KEY_ATC_CarrierReadyForDeparture] to '7'", and apply changes.

Otherwise, just download this new version...


Patch Release v1.3 Changelog Jan2020

Fixes/Improvements:
 -Fixed issue with variable conflict for "Ready for Departure" - was pulling new variable from "Carrier Ready for Departure"

 

On 12/28/2019 at 3:53 PM, =VG= SemlerPDX said:

v1.2 Update has been released for BMS 4.34.1 (U1)

Falcon BMS 4.34 has just released Update 1, and with it has come some serious improvements and additional features.  For this profile, and the in-game Radio Menus in general, all that has changed is an addition of a "Ready for Departure" call as the 7th choice on Page 6 of the ATC Radio Menu.  I have added that command to the profile, but as it does conflict with the default "Ready for Departure" command, this Carrier specific command will need to be preceded by the word "Carrier" as a forced prefix word (see note in the large Command Reference pic).

Example use:  "This is Joker 7-1, Carrier Ready for Departure"

I've also added a bit of polish to the Audio Feedback system, allowing it to recognize the word "feedback" as two words, "feed back", to help us avoid repeating ourselves to get the commands to fire, as well as a null check on the Stereo Audio Feedback output channel, so it can recover if this saved setting is lost.  I've also updated the minimum version of VoiceAttack, so please be sure to update your VA program.
We've tested this version, just minor additions, and everything seems great - but let me know if any issues pop up!  Happy New Year!


Patch Release v1.2 Changelog Dec2019
New Commands:
 -"Carrier Ready for Departure" : for ATC Page 6, new 7th item added for 4.34 (U1) update

Fixes/Improvements:
 -Added additional recognition words for turning on/off Audio Feedback Mode - "feedback" can now be recognized as "feed back"
 -Added Null Check on Audio Feedback Stereo Output Channel setting, if saved setting lost, will force user input on profile load
 -Updated minimum VoiceAttack version to latest release (v1.8.3) for compatibility

 

On 11/3/2019 at 10:31 AM, =VG= SemlerPDX said:

v1.1 Patch has been released

A small bug has been identified and removed.  This issue prevented the entire Human Pilots Registry system to function and should have been caught before the final release version.  All apologies to everyone who has been trying to use this new voice program.  In addition to this, I've decided to not use a wildcard to catch the name of the BMS program to send keypresses to, and have gone for the "Falcon BMS.exe" method.  Still, this will not catch every user, and players will need to test to be sure commands go through initially, and refer to VoiceAttack troubleshooting (and those tips we've highlighted already) to get commands to fire in the correct window.  I'm happy to help new users, and the community has been helpful as well.  Any questions, feel free to ask!


Patch Release v1.1 Changelog Nov2019

Fixes/Improvements:
 -Changed common Send To default from *Falcon BMS* to "Falcon BMS.exe" to avoid conflict with open PDF's, etc. with Falcon BMS in name
 -Fixed Human/Computer Pilots Registry system - last minute addition of a mode check was to blame, has been removed for now

 Again, any issues feel free to let me know! :hi:

 

 

On 10/29/2019 at 5:50 PM, =VG= SemlerPDX said:

FINAL RELEASE TO v1.0

Please download updated final version!  Link below and updated in the main post above!  You don't have to remove the old 0.99 beta profile, but it is recommended to not use both at the same time or variables may get messed up.  Thanks to everyone for helping to finish up final testing!

SitRep:

I've finished with all final additions and proposed changes, and all known bugs and issues have been resolved.  We've tested quite extensively to try to break things, and it seems fairly stable.  The final version can be found in our download section, please rate and comment if you like and share this link if you can (click here).  There is now an Audio Feedback Mode that can be turned on or off at any time.  It plays a short sound when a command is successfully recognized, to save time and help avoid the frustration of not knowing if we have to repeat a command.

I've given the option to have the Audio Feedback sound effect to output through stereo left, right, or center channel(s), and this is set when you turn the mode on.  It is a radio cue up type sound, but a bit distinct compared to the ones in BMS to help differentiate feedback.  All three sound files are very tiny, and are included in a VoiceAttack Profile Package for easy importing into VA, and will be placed in folder in the VoiceAttack program folder under Sounds automatically when the profile is imported.

Finally, there is a single Variable Pause in the KEYPRESS_Variables command that controls the time between a keypress and release for every action in the profile.  Default is 50ms, and if a user has any issue with the keypress macros firing buttons too fast for their computer, this number can be increased slightly to slow down the system and fix any issues.


Huge thanks to everyone who helped out with comments, feedback, bug reports, and testing - I'm very happy with how well this profile has been developed, and I have a feeling it will be a solid tool for years to come!  I'll support any changes for future BMS versions, and will try to respond to any questions about this profile.
 

Here's a copy of the changelog:


Final Release v1.0 Changelog Oct2019
New Commands:
 -Turn On/Off Audio Feedback Mode : Provides sound feedback upon successful recognition of a command (per user request)
 -Added a non-functional command to help recognize many variations of "Yes" words for the voice confirmations in profile

Fixes/Improvements:
 -New Variable Pause between any keypress/release for adjustment of the time any key is held down, in keypress_variable command. Default is 50ms
 -New Audio Feedback Mode has custom SFX included, and gives user option of stereo left, right, or center playback for easier distinction
 -New Speech notification on startup for Audio Feedback Mode (if enabled)
 -Speech notifications on startup for PTT mode and All-Humans mode (if enabled) have been greatly shortened.
 -Fixed issues with being able to set Humans in Computer Pilots mode and vice versa

Any problems or new bugs, or brilliant ideas, feel free to drop some feedback!  Cheers! :drinks: 

 

 

On 7/17/2019 at 9:14 PM, =VG= SemlerPDX said:

BETA UPDATED TO v0.99 (final beta!)

Please download newest version!  Link updated in the main post above!  You don't have to remove the 0.98 beta profile, but it is recommended to not use both at the same time or variables may get messed up.  Thanks to everyone for helping to finish up final testing!


Per request, to speed up the interaction of adding/removing pilots from the exclusion lists, you can now say the entire Callsign + Flight Number + Wing Number when asked for the callsign. 

Example: 
"Set a Human Pilot"
"say the callsign"
"Cowboy 7 3"
"Cowboy 7 3 - is this correct?"
"Yes"
...
(bypassing the need to individually set Flight Number and then Wing Number!)

This will jump to the confirmation at the end of the command and greatly reduces the time spent interacting with the voice control system configuration.   During my testing, I found there must be a clear separation between the Flight Number and Wing Number when spoken, to avoid "Cowboy 7 3" getting recognized as "Cowboy 73", and your own results may vary.  Please test and let me know.  The old system is still in place, and you can even just say the Callsign + Flight number, and it will notice and skip to the Set Wing Number segment of the script.  The entire idea was to allow a lot of options to recognize how we speak, and the only catch is that we need to enunciate and keep succinct breaks between words for this style of input.  Further beta testing in this final 0.99 phase should help judge if this will work or if it needs adjustment.


Additionally, there are now VoiceAttack command log notifications whenever the profile loads showing the current profile settings, and also voice notifications if either PTT mode or the new All-Humans mode are On. 
 

Here's a copy of the changelog:


Beta v0.99 Changelog Jul2019
New Commands:
 -Change Default Keyboard Layout allows choices between QWERTY, QWERTZ, & AZERTY (per user request)
 -Turn On/Off All-Humans Mode : Reverse mode assumes all pilots are humans, add Computer Pilots individually as needed (per user request)
 -Copy of all Add/Remove Human Pilots commands for Computer Pilots & All-Humans Mode

Fixes/Improvements:
 -Can state an entire callsign plus flight & wing numbers when asked for Callsign (per user request to speed up the voice system interaction of adding/removing human pilots)
 -VoiceAttack log entries displays profile information on startup (current keyboard layout, push-to-talk mode on/off state, All-Humans mode on/off state) (per user request)
 -Speech notifications on startup for PTT mode and All-Humans mode if they are enabled (see above)
 -Forced profile initialization if not initialized on any command use (per bug report: on first download/import of profile, trying to use any command fails until voiceattack restarted)

 

 

 

 

=VG= SemlerPDX


zPztEG1.jpg

 I have a touch screen monitor below my main one when I fly in flight simulators like Falcon BMS or DCS or Microsoft Flight Simulator.  It's great for the MFD buttons, as opposed to the actual wired USB Thrustmaster MFD's physically attached to the screen like I used to have, and I can use the monitor for other things, too.  But one thing I would love to have attached to the screen would be the Course and Heading knobs of the HSI (horizontal situation indicator) .

It would need to be removable so I can store it when not in use. 

I've heard about a micro-suction tape that can stick to anything smooth and flat without leaving a residue or losing stickiness, so this is a good excuse to buy some and play around with sticking things to my monitors.
 

← On the left is the (green) Arduino Micro board I used to test the concept with a rotary encoder on a breakout board, where I wrote the initial sketch with the Joystick and Encoder libraries.  Later, because I didn't want to sacrifice my Arduino Micro to this controller, I bought a 3 pack of these much smaller Sparkfun Pro Micro clones for fifteen bucks (blue one in the middle).  That one is gonna stay there for future tests and such, they'll be the heart of many projects in the future since they cost so little and include so much!

 


 

My DIY USB Game Controller - Rotary Encoders as Course & Heading Knobs for Falcon BMS / DCS / FSX
*parts list with links at bottom


The initial goals I had for this project were:h5w7NMM.jpg

  • Two Rotary Encoders with Push Buttons recognized as USB Game Controller in Windows
  • Thin and flat, without taking up too much viewing space on the monitor
  • Can stick and restick to the monitor with micro-suction tape
  • USB connector can be removed so it can be boxed (NetDot magnetic)
  • Fine control for one-degree per detent and Fast Speeds for turning quickly
  • Encased in semi-rigid form like shrink wrap so it won't scratch the monitor
  • Total cost for one single unit less than $10

 

 

 

 

 

 


4Y01eI2.jpg 

 

First, I affixed the Rotary Encoders and the Pro Micro clone to an 8cm x 2cm prototype PCB with a couple header pins bent outwards and crimped down, and with the two blue solid copper switch wires soldered in place from the top. I also ran the 10k Ohm resistors for the switches now.

 

These are for the push buttons built into the rotary encoders, and although they only have two pegs on the actual component, they require three wires from the controller board (ground, 5 volt power, and the blue switch wire going to the Pro Micro). All this added plenty of structure. There is no wiggle or play, I'm not gonna try to break it, but it is very rigid now.

 

 

 

 

H89ZiWv.jpg 

 

Here's a close look at the first stage of soldering. (okay, don't look too close) I don't have the highest quality tools or solder, or even a lot of skill and experience at this, but it's good enough -- and good enough should always be good enough for a DIY project for personal use.  If I wanted to, I could order a custom circuit board if I was going to make a bunch of these, but I'm happy as it is.

 

It is so cheap to buy some of this stuff, if you messed up, you can always just buy another.  Those Pro Micro controller boards cost about as much as a value meal at a fast food joint, so you can literally afford to make mistakes as you learn even if you're on a very tight budget like I am.  

 

 

 


ru0rmph.jpg

 

 

A homemade carbon filter fume extractor, a simple soldering iron with a power switch and a temperature controller, some handy dandy helping hands and that brass soldering tip cleaner make little projects like this very easy, and all these items together costs less than the Logitech mouse to it's right. Good enough to play.

 

If anyone reading this has any idea to get into working with things like this, my advice is to jump right in, get the most basic stuff you can get, not the cheapest, but things with good reviews from some good online store like Amazon, Sparkfun, Adafruit, etc.

 

 

 

 

 

Pinxa02.jpg

 

Soldering the top side here, used one of the helping hands to hold a string of solder from the spool. When I'm dealing with tiny bits that are between 0.5mm-2mm, anything that helps is appreciated. One slip and this 225C soldering iron would burn through any one of those tiny chips or components on the board. I find myself holding my breath and doing one or two, then letting go for a sec. I had to redo a few, and I always wait for it to cool down so I don't transfer too much heat to this poor little board.

 

I had a few bits of solid copper wire with colored insulators, from a breadboard jumpers kit, so I cut some to length, but used others as is. This resulted in an odd looking crossover of the Orange and Yellow wires, but they are not taller than the micro USB port on the other side of the board and that's fine.

 

 

 

 

 


xzlxtFJ.jpg   fzzbWnc.jpgOnce I was all done, I tested every connection for continuity and unintentional bridges, and it all checked out, so I encased it in shrink wrap.  By some sort of miracle, it works, it looks decent, and I think that will do just great!  I connected it to the computer and uploaded the sketch, which I had to modify slightly since I used a few different pins for the push buttons on the rotary encoders, now at pins 15 and 6 instead of 6 and 7.

I am thoroughly hooked on these NetDot magnetic adapters.  When I looked at the reviews for Pro Micro boards, one of the only issues I saw that I'd be concerned with is accidentally popping the micro-USB port off the Pro Mini board if dropped or yanked too hard.  A magnetic connector completely eliminates this issue, as well as the standard wear and tear issues that plugging and unplugging creates over time.  And they're as cheap as regular braided USB cables, too.  Why not?

 

 


Ocsopzo.jpg   dzvZVUh.jpg   CustomHSIgamecontrollerProperties.PNG

Here it is connected to the touchscreen monitor. It is far more satisfying to have tactile dials for these knobs than trying to make little circles on the screen with my finger over the touchscreen dials. The micro-suction tape keeps it in place and actually has some grab when trying to pull it off the screen. I've started using a peeling action but I doubt the screen would ever have problems.  I might get a 3D printed case someday and maybe even a 90 degree angle connector so the cord goes back behind the monitor naturally instead of downwards, but for now, it's done and working great.

Turning the dial with the most basic rotary encoder sketch from that Arduino library results in a "one degree per detent" meaning one turn is one click, and one click is one degree. No matter how fast you turn it, with 20 detents per 360 degrees with these encoders, it would take FOREVER to turn the dial from heading 000 to 180!!

I wrote two separate jump speeds to detect how fast the dial is being turned, one jumps 18 degrees per click, and the other 30 per click. Now, it's easy to twist the dial fast to get it spinning fast on screen, while also being able to dial in one degree at a time when needed.  All in all, it was a fun project and it's made me think seriously about getting a 3D printer someday to make little plastic cases for things like this.
 

Here's the code if someone wants to use it (or modify it to make it better):
Rotary Encoders HSI Course and Heading Knobs.ino for Arduino IDE
https://pastebin.com/drUnCfKN

spoilerIMG2415905122018.PNG
/* Simple HSI Knobs Sketch for Falcon BMS / DCS / FSX
 *  for Arduino Micro/Leonardo / Sparkfun Pro Micro or equiv. clones
 * by SemlerPDX June2019
 * VETERANS-GAMING.COM
 *  
 *  Pins:
 *  Rotary Encoder 1 - (OUTA-OUTB-SW) = Arduino Pins (0,1,15)
 *  Rotary Encoder 2 - (OUTA-OUTB-SW) = Arduino Pins (2,3,6)
 *  
 *  Encoder Library
 * http://www.pjrc.com/teensy/td_libs_Encoder.html
 * 
 *  Joystick Library 
 * by Matthew Heironimus
 * https://github.com/MHeironimus/ArduinoJoystickLibrary
 */

#define ENCODER_USE_INTERRUPTS
#define ENCODER_OPTIMIZE_INTERRUPTS
#include <Encoder.h>
#include <Joystick.h>

//Tell the Encoder Library which pins have encoders
Encoder axisXRotation(0, 1);
Encoder axisYRotation(2, 3);

//Rotary Encoder Push Button Pins
int buttonArray[2] = {15, 6};

//Rotary Encoder Interrupt Pins
int EncoderPin0 = 0;
int EncoderPin1 = 1;
int EncoderPin2 = 2;
int EncoderPin3 = 3;

//Delay Time between loops
int debounceDelay = 260;

//Variables to compare current to old values
int oldX = 0;
int oldY = 0;
int RxAxis_Value = 1;
int RyAxis_Value = 1;

//Intervals for Jump/Warp Speed Rotations
int JumpSpeed = 18;
int WarpSpeed = 30;

//Set generic joystick with id 42 with 2 buttons and 2 axes
Joystick_ Joystick(0x42, 
  0x04, 2, 0,
  false, false, false, true, true, false,
  false, false, false, false, false);  


void setup() { 

  //Set Encoder Pins as Pullups
  pinMode(EncoderPin0, INPUT_PULLUP);
  pinMode(EncoderPin1, INPUT_PULLUP);
  pinMode(EncoderPin2, INPUT_PULLUP);
  pinMode(EncoderPin3, INPUT_PULLUP);

  //Loop through buttons and set them as Pullups
  for(int x = 0; x < sizeof(buttonArray); x++) {
    pinMode(buttonArray[x], INPUT_PULLUP);
  }

  //Set Range of custom Axes
  Joystick.setRxAxisRange(0, 359);
  Joystick.setRyAxisRange(0, 359);
  
  // Initialize Joystick Library
  Joystick.begin(false);

}


void loop() {

  // Loop through button pin values & set to Joystick
  for (int x = 0; x < sizeof(buttonArray); x++) {
    byte currentButtonState = !digitalRead(buttonArray[x]);
    Joystick.setButton(x, currentButtonState);
  }


  // Read "Heading" X Axis Rotation Encoder Knob
  int newX = axisXRotation.read();
  if (newX > oldX) {
    //Determine speed of increment & set output
    int difX = newX - oldX;
    RxAxis_Value = speedVal(difX, RxAxis_Value, 1);
    Joystick.setRxAxis(RxAxis_Value);
    axisXRotation.write(newX);
    oldX = newX;

  }else if (newX < oldX) {
    //Determine speed of decrement & set output
    int difX = oldX - newX;
    RxAxis_Value = speedVal(difX, RxAxis_Value, 0);
    Joystick.setRxAxis(RxAxis_Value);
    axisXRotation.write(newX);
    oldX = newX;
  }


  // Read "Course" Y Axis Rotation Encoder Knob
  int newY = axisYRotation.read();
  if (newY > oldY) {
    //Determine speed of increment & set output
    int difY = newY - oldY;
    RyAxis_Value = speedVal(difY, RyAxis_Value, 1);
    Joystick.setRyAxis(RyAxis_Value);
    axisYRotation.write(newY);
    oldY = newY;

  }else if (newY < oldY) {
    //Determine speed of decrement & set output
    int difY = oldY - newY;
    RyAxis_Value = speedVal(difY, RyAxis_Value, 0);
    Joystick.setRyAxis(RyAxis_Value);
    axisYRotation.write(newY);
    oldY = newY;
  }


  //Send Joystick info through USB
  Joystick.sendState();
  delay(debounceDelay);
}


//Function to set Rotation value adjusted for the turning speed
int speedVal(int dif, int val, int dir){
  if (dif >= WarpSpeed) {
    if (dir == 1) {
      val = val + WarpSpeed;
    }else{
      val = val - WarpSpeed;
    }
  }else if (dif >= JumpSpeed) {
    if (dir == 1) {
      val = val + JumpSpeed;
    }else{
      val = val - JumpSpeed;
    }
  }else{
    if (dir == 1) {
      val = val + 1;
    }else{
      val = val - 1;
    }
  }
  //Correct Rotation within 360 deg.
  if (val < 0) {
    val = val + 360;
  }else if (val >= 360) {        
    val = val - 360;
  }
  return val;
}

 

 


Here's a cost breakdown:

Pro Micro  (clone of Sparkfun Pro Micro board sold by KeeYees) (3 pack)  -  $15.99
https://www.amazon.com/gp/product/B07FXCTVQP/
$5.33 per board

PCB Prototype Board Kit  -  $15.99
https://www.amazon.com/gp/product/B07CK3RCKS/ 
$0.25 (just a guestimate - it's one part out of a huge kit)

360 Degree Rotary Encoders (5 pack w/knob caps)  -  $8.89
https://www.amazon.com/gp/product/B07DM2YMT4/
$3.56 for 2 dials

Microsuction Tape (25cm X 30cm Sheet)  -  $14.95
https://www.amazon.com/gp/product/B00M7FC1K8/
$0.12 (just a guestimate - used 1.5cm x 6cm strip of a huge sheet)

NetDot 5ft Braided Magnetic Tip USB Micro Cable (3 pack)  -  $13.90
https://www.amazon.com/gp/product/B074TB8XTL/
$4.64 for 1 cord

(Not taking into account things like double sided sticky tape, solder, wires, or shrink wrap tubing segments used because they cost less than a few pennies)

Total:
$13.65 (USD)

_________________________________

I spent a fair bit more money than I initially expected to (almost $55!), but much of that went towards components or materials that I'll be able to use for several projects in the future.  At about $14 bucks, it is twice what I thought it would be per unit, so that will help me to better gauge other ideas.  It seemed like it would be cheap as dirt, using many parts I already owned, but it all adds up - they don't sell less than a sheet of micro-suction tape, and buying control boards in bulk is the only wise way to do it (if you can call 3 units "bulk", that is).


In conclusion, it was great to have an idea, play around with some proof of concepts, and then make it into a reality within a few days.  Single game controllers today.... one day, a full cockpit of switches!  Not sure what my next project will be, but among other ideas, I've considered making a custom control board for Kerbal Space Program, or maybe some kind of wireless gear that can connect to a computer and translate into RF to control some DIY RC cars or whatever with my Xbox controller already attached to my PC.  Eventually, I want to get into wireless stuff, and even RC, but I might start with button boards that use USB cables just like this one. 

If anyone has any questions on this project, feel free to ask.


Thanks for reading! 

=VG= SemlerPDX


qLBxVFn.jpg

 I bought a Logitech G933 wireless headset last year and I'd like to make my TrackIR TrackClip Pro into a wireless unit as well.  I need to be able to remove it from the G933 when not in use, TrackClip Pro's break if you look at them too hard, so taking it off is a primary requirement.  I'll want to be able to recharge it with the same cord the G933 uses, too.  I'm not a pro at this stuff, so any thing that works well and doesn't cost too much will be just fine with me.

I know that if I ramp up the voltage from one single 3.7V battery, I can achieve 5V @ 1A for the 3 LED's on the TrackClip, and should retain a duration of more than 4 hours (overly hopeful estimate).  I'll need to do some testing, if I have to, I'll use the second 3.7V battery like in the image here just for longer time between charges.

 

 

 

 

 

 

My DIY TrackIR "Wireless Rechargeable" Track Clip Pro mod
*parts list with links at bottom
 

The initial goals I had once I began were:hI7g3Yf.jpg

  • Tiny form-factor, less than 5cm long, less than 2.5cm wide & tall
  • Can power TrackClip for between 4-8 hours continuously
  • Tiny on-off slider switch
  • Rechargeable via micro-A USB female plugin
  • Output to TrackClip via USB (type A) female outlet plug (as in picture above)
  • Encased in semi-rigid form like shrink wrap, adapted plastic case, or custom 3D printed plastic case
  • Velcro strap to easily mount on headphones
  • Total cost for one single powerpack unit less than $10 USD  

 


fnvI6Vr.jpg 

 

 

 

Soldering leads to the TP4056 (03962A) Charging Board with Protection.  This is the brains of this unit, and will make sure the rechargeable 3.7V battery will not discharge past 2.5V and will not recharge over 4.2V.  It acts as the buffer between the battery and the voltage booster.

 

 

 

 

 

 

rHLDhRw.jpg 

 

Here is the 03962A Charging Board and battery holder wired to the MT3608 DC to DC Step Up Boost Converter.  I did this for initial testing and to set the trim-pot (blue square box with round brass peg) on the boost converter from the 18V setting it shipped with to the 5V that I need.  It will take the 3.7 Volt battery and step up its voltage to something usable by the TrackClip Pro without the need for a second battery.

 

 

 

 

 


hKiHu6f.jpg

 

 

Trying to keep the size small, mounting the breakout boards close together makes it about the size of a stick of gum, plus the AAA sized battery.  I put a USB female plug in for size reference along with the Bic lighter.  The 10440 is a 3.7 Volt Lithium Ion rechargeable battery in a AAA size.  According to a features sheet on a batteries info website, "Lighter weight and higher energy density than any other rechargeable battery".  I'll be ramping up it's voltage to a full 5V.

 

 

 

 

 

 


c25gjkN.jpgI used a portion of shrink wrap tubing around the 03962A Charging Board on the left, and MT3608 Boost Converter on the right is hot glued to the battery holder and to the 03962A in the middle.

Through the shrink wrap I cut holes for the LED indicator lights on the charging board.  The tiny switch has a pin through the breakout board and is soldered in place, with another pin bent and wrapped around the edge of the board, and soldered to it's wire (I didn't have red shrink wrap, but the thicker top right wire is the load line, and is red under there).  Even with all of that, I just don't trust tiny switches to stay in place and solder is not structural, so it got a healthy dose from the hot glue gun.  As you can see, I've used the highly skilled technique known as "just glob it on".

 

 

 

 

 

 


OjjV4BX.jpg   UNQlfmT.jpgI've cut the cord on the Track Clip Pro, spliced the wires to the Boost Converter, and used shrink wrap tubing to contain the entire unit.  I've left a bit of the wire jacket hanging below the wires and hot glued in place, and then shrink wrapped under a little tension. This causes a slight bend in the wire, shown in these pics and it helps the unit bend the newly magnetic end inwards to the screw under this panel.

A NetDot micro-USB magnetic adapter makes connecting a charging cable easy, and gives one end of my battery pack a strong magnet to work with. The NetDot magnetic charging adapter is so strong it is very well stuck to the screw on the corner of the G933 headset under the panel.  It doesn't come off and swing around when I move my head around, and that's all that really matters to me.  Function before looks.

 

 


8J2MzkV.jpgsJ8UdQ7.jpg

It's finally finished and working great!  I expect it will last for a few years before I'll want to carve off the outer shrink wrap and replace the 10440 battery, and seal it back up with a new shrink wrap tube (and some new cut-outs for the switch and lights).

Here's a cost breakdown:

NetDot Magnetic Bi-Directional microUSB Plug Adapters
https://www.amazon.com/NetDot-Generation-Magnetic-Adapter-Compatible/dp/B076QC2RQT/
$4 (per male/female adapter pair)

TP4056 (03962A) Charging Board with Protection
MT3608 DC to DC Step Up Boost Converter
(in a pack with 3 of each board, plus 5 battery holders)
https://www.amazon.com/dp/B07NHHCNNQ
$1.00 per breakout board

The battery holder I used was actually the AAA type:
https://www.amazon.com/gp/product/B07C2XT5C5
$0.58 (one)

3.7V 10440 AAA Lithium Ion Rechargeable Battery (x4 @11.69 - w/Charger $19.09)*(note: these are NOT AAA batteries! They must be charged with a special charger, and shouldn't be used for normal AAA battery powered devices!)
https://www.amazon.com/10440-Rechargeable-Lithium-Battery-350mah/dp/B010ABNW5S/
(or)
https://www.amazon.com/10440-Lithium-Rechargeable-Battery-Charger/dp/B06X9TZ1CG/
$2.92 / battery

Tiny switch with nice long legs (they come in a pack of a hundred for six bucks):
https://www.amazon.com/Cylewet-Vertical-Switch-Arduino-CYT1016/dp/B01N7NCW8N/
$0.06 (one)

(Not taking into account things like hot glue sticks, solder, tape, or shrink wrap tubing segments used because they cost less than a few pennies)

Total:
$9.56 (USD)

_________________________________

Looking back to the start, I've met my goals or caused some to become redundant (like velcro) and the cost for this single battery unit was less than $10, though I do have enough parts to make 2 more, I'm happy to put those in my Arduino projects bins and eat the costs there.

This thing cost me about ten bucks, it works well, and I also have another $26 in extra parts (NetDot's and 3.7V batteries, battery holders, charging and boost breakout boards...).  I learned a bit about larger shrink wrap tubing, it only shrinks so far.  And I think it was all worth it.  Had a flight earlier, with 8 minutes to taxi, I just got up out of my PC chair from a hot pit, and walked over to the fridge to get a soda all without taking off my headset or TrackClip Pro, strolling around while listening in to the Tower and waiting for my clearance to taxi.  It was a feeling of true freedom!

If anyone has any questions on this mod, I'd be happy to help if I can. 

See you at Angels 20!

×