VoiceMacro LLM Documentation

Introduction

Note: This documentation is intended exclusively for large language models (LLMs) to learn, generate, and interpret VoiceMacro macros. It is not intended for direct human use. All content, patterns, and examples are structured to maximize LLM understanding and macro generation accuracy.

About VoiceMacro

VoiceMacro is an advanced Speech Recognition enabled Macro Software developed by FSC-SOFT. It's a powerful automation tool that acts like a "Swiss Army Knife" for your PC, allowing you to control your computer, applications, and games through voice commands, keyboard shortcuts, mouse buttons, controllers, and various other triggers.

Current Version Information

Core Purpose & Philosophy

VoiceMacro is designed to provide comprehensive automation capabilities with a focus on accessibility and ease of use. It eliminates the need for complex programming while offering powerful features for:

Key Features Overview

Recent Features & Updates

Use Cases & Applications

Community & Support

LLM Usage Guidelines

When helping users create VoiceMacro macros, you MUST provide step-by-step UI navigation instructions including:

Example LLM Response Pattern:

User Request: "Create a macro to open Notepad"
LLM Response: "Here's how to create that macro:
1. In the main VoiceMacro window, click the 'Edit' button (or press Alt+E)
2. In the Profiles & Macros window, click 'Add New macro' (or press Alt+A)
3. In the Macro Editor, click the 'Other' menu (or press Alt+O)
4. Select 'Execute/open a file' from the menu
5. In the dialog that opens, click the '...' button next to 'File to Open'
6. Browse to and select 'notepad.exe', then click 'OK'
7. Back in the dialog, click 'OK' to save the action
8. In the Macro Editor, click 'OK' to save the macro"

Getting Started

Prompt: "Create a macro to open Notepad and type 'Hello'"
Macro: [Profile: Default]
Action 1: WindowToFront "Notepad"
Action 2: InsertText "Hello"

Getting Started for Complete Beginners

This section is specifically designed for total newbies who have never used VoiceMacro before. Follow these steps in order to get up and running quickly.

First Launch Experience

When you run VoiceMacro for the first time:

Essential Speech Recognition Setup

CRITICAL: Before using voice commands, you MUST train the Speech Recognition Engine!

Speech Recognition Best Practices

Understanding Profiles and Auto Profile Switching

VoiceMacro's data structure: Profiles > Macros > Actions

Creating Your First Macro: Step-by-Step Walkthrough

Follow these exact steps to create your first macro:

  1. Open VoiceMacro: Double-click VoiceMacro.exe to run it.
  2. Access Profiles: In the main window, click "Edit..." (or press Alt+E) to open the Profiles and macros window.
  3. Create Profile: Click "Add" to open the Add New Profile window.
  4. Profile Setup:
  5. Add Macro: In the Profiles window, click "Add new" (or press Alt+A) to open the Edit macro window.
  6. Macro Setup:
  7. Add Actions: Click "Keyboard", "Mouse", or "Pause" buttons, or use "Other..." menu for more actions.
  8. Save: Click "OK" to save your macro and profile.
  9. Test: Use the "Test" button to test your macro immediately.

Essential UI Navigation for Beginners

Beginner-Friendly Macro Examples

Example 1: Simple Text-to-Speech
Voice Command: "What time is it"
Actions:
Action 1: SpeakText "The time is {Time}"
UI Steps: Add macro → Check "Voice Command" → Click "Other" → "Speak text" → Enter "The time is {Time}" → OK
Example 2: Open Notepad
Voice Command: "Open notepad"
Actions:
Action 1: Open "notepad.exe"
UI Steps: Add macro → Check "Voice Command" → Click "Other" → "Execute/open a file" → Browse to notepad.exe → OK
Example 3: System Volume Control
Voice Command: "Mute system"
Actions:
Action 1: Key: Volume Mute
UI Steps: Add macro → Check "Voice Command" → Click "Keyboard" → Press Volume Mute key → OK

Common Beginner Mistakes to Avoid

Next Steps for Beginners

LLM Guidance for Beginner Questions

When helping complete beginners, always provide:

ActionForms: UI Windows and User Guidance for LLMs

This section describes each VoiceMacro ActionForm (UI window) so LLMs can guide users step-by-step through macro creation. For each form: purpose, how to open, UI layout, required inputs, and LLM guidance are provided.

Keyboard

Mouse

SetVariable

ShowOSD

Pause

PlaySound

SendVirtualKeys

SendToPlugin

GetKeyState

WindowToFront

WaitWindow

ResizeMoveWin

Close window

Change target window

ChangeWin

WaitForPixel

SpeakText

SpeechToText

ShowDialog

RunOtherMacro

ShowUI

SetState

WriteToLog

Kill Process

If/ElseIf

Loop Start/Loop End

InsertText

PixelFromScreen

UIWindow

SearchVariables

TestDialog

Goto

HideOSD

VMWindow

Start/Stop/Toggle Actions

Open

Switch profile

AddProfile

SetHotkey

Change window Title

ChangeEngine

Macro Structure

[Profile: Work]
Macro: OpenApp
Trigger: "Open application"
Action 1: Open "C:\app.exe"
Action 2: Pause (1.000 sec)

All Macro Actions

Below is a complete, up-to-date list of all available macro actions in VoiceMacro. Each action includes its name, description, parameters, and an example. Parameters marked green support variables (e.g., {Variable}).

NameDescriptionParametersExample
KeySimulates a keystroke with optional modifiers (press, hold, release).Action (Key/KeyDown/KeyUp), Key, ModifiersKey: lShift + A
MouseMoves mouse, clicks, scrolls, or restores position. Supports relative and absolute movement, and variables for coordinates.MoveTo (X,Y,Corner), Click (button/type), Clicks, Scroll, Return Pointer, RelativeMouse MoveTo: x100 y200 (TopLeft), Click left, Scroll up 1
PausePauses macro execution for a specified duration.Duration (seconds) {Delay}Pause (1.000 sec)
WindowToFrontFinds and activates a window by title. Can force window to front even if not allowed by Windows.WindowName {Win}WindowToFront "Notepad"
ListenStarts, stops, or toggles voice recognition listening.Action (Start/Stop/Toggle)Listen Start
ExecuteStarts, stops, or toggles macro execution.Action (Start/Stop/Toggle)Execute Start
AutoProfileStarts, stops, or toggles auto profile switching.Action (Start/Stop/Toggle)AutoProfile Start
ShortCutsEnables, disables, or toggles keyboard shortcuts.Action (Enable/Disable/Toggle)ShortCuts Enable
VMWindowMinimizes, restores, or toggles the VoiceMacro window.Action (Minimize/Restore/Toggle)VMWindow: Minimize
AbortAborts all running macros.NoneAbort
AbortAborts all macros from the current profile.NoneAbort
AbortAborts the current macro.NoneAbort
CloseWindowCloses a specified window.WindowNameCloseWindow "Notepad"
WaitWindowWaits for a window to appear or activate, with optional timeout.WindowName, Timeout (sec), AbortOnTimeoutWaitWindow "Notepad", Timeout: 5.000 sec
SchedulerStarts, stops, or toggles the scheduler.Action (Start/Stop/Toggle)Scheduler Start
IgnoreCommandsStarts, stops, or toggles ignoring voice commands.Action (Start/Stop/Toggle)IgnoreCommands Start
KillProcessTerminates a running process.ProcessNameKillProcess "notepad.exe"
ControllersEnables, disables, or toggles controller inputs.Action (Enable/Disable/Toggle)Controllers Enable
ChangeEngineChanges the speech recognition engine.EngineChangeEngine "Windows Speech"
Switch profileSwitches to a specified profile.ProfileNameSwitch profile "ProfileName"
RunOtherMacroExecutes another macro, optionally synchronously or with one instance.Profile/Macro, Variable, Sync, RunOnlyOneThreadRunOtherMacro: ProfileName/MacroName (Synchron)
StopSoundStops currently playing sound.NoneStopSound
ChgTargetWinChanges the target window for actions.TargetWindowChgTargetWin "Notepad"
SetWinTitleModifies the title of a target window.TitleSetWinTitle "New Title"
WindowResizes or moves a window.WindowTitle, Resize (WidthxHeight), Move (X,Y)Window: "Notepad", Resize (300x400), Move (100,200)
WindowChanges window style, transparency, topmost, or border.WindowTitle, SetStyle, SetTransparency, SetTopMost, SetBorderWindow: Maximize, Set TopMost, Window "Notepad"
BlockInputBlocks or unblocks keyboard and mouse input.Action (On/Off)BlockInput On
SpeechToTextConverts speech to text, with optional file and phrases.SpeechToTextFile, Phrases, WriteAllSpeechToText File: path/to/file, Phrases: 1, (Write all)
WriteToLogWrites text to the log view.TextWriteToLog: Hello
FileOpenExecutes or opens a specified file, with optional wait and window style (normal, hidden, minimized, maximized).FileName, WaitForExit, Arguments, WindowStyleFileOpen (WaitExit) C:\script.bat / Args: /run
PlaySoundPlays an audio file, optionally synchronously, with device/volume options.AudioFile, SoundDevice, Volume, Sync, PlayStart, PlayEndPlaySound: C:\sound.wav (Synchron)
SpeakTextSpeaks text using text-to-speech, optionally synchronously, with device/voice/volume/speed options.Text, SoundDevice, Volume, Speed, Voice, SyncSpeakText "Hello" (Synchron)
InsertTextInserts text at the cursor position, with options for keyboard or alternative method.Text, UseKeyboard, UseAlternativeInsertText "Hello" (Use Keyboard)
ClipboardCopies or pastes data to/from the clipboard.Action (Copy/Paste)Clipboard Copy
ShowDialogDisplays a dialog box for user input, with timeout and wait options.Title, Text, WaitForClose, UseTimeOut, TimeoutShowDialog WaitForClose, Title, Text
ShowOSDDisplays on-screen display text.OSDName, OSDTextElementsShowOSD Alert (Running...)
HideOSDHides the on-screen display.OSDNameHideOSD: Alert
LoopStarts or ends a loop for repeating actions. Loop count can be a variable.LoopCount {Count}Loop Start (5x)
(Comment)Adds a comment for documentation. This action is ignored during execution.Comment(Pause for user input)
ToggleSets a toggle state to On or Off.Action (On/Off)Toggle On
RotateRotates through toggle states.RotateIndexRotate (0)
ResetResets all toggle and rotate states for the macro/profile.NoneReset
RotateEndEnds a rotate sequence. Actions after this are always executed.NoneRotateEnd
OnTimeOutDefines actions to execute on timeout (e.g., in WaitForWindow/WaitForPixel).NoneOnTimeOut
EndOnTimeOutEnds the OnTimeOut block.NoneEndOnTimeOut
SetStateSets a specific toggle or rotate state for a macro/profile.Profile/Macro, ToggleSet, RotateSetSetState: ProfileName/MacroName >> Toggle: ON
WaitForPixelWaits for a specific pixel color at coordinates, with options for appearance/disappearance, color tolerance, radius, and timeout.Position (X,Y), Color (RGB), Timeout, Tolerance, Radius, Appearance/DisappearanceWaitForPixel x100,y200, Color: R=255 G=0 B=0, TimeOut: 5, Tolerance: 10
GetKeyStateRetrieves the state of a key or waits for a keypress. Can store toggle state in a variable.Key, GetToggle, VariableName, WaitForKeyGetKeyState (Toggle) Key: Space, Variable: _gState, WaitForKey
SendVirtualKeysSends virtual key codes to a window or globally.KeyCodes, TargetWindowSendVirtualKeys: VK_SPACE, TargetWindow: Notepad
ShowUIDisplays a custom UI (user interface) with specified text or controls.UITextShowUI: Hello
LabelInserts a label for Goto commands. Used for macro flow control.LabelLabel "Label1"
GotoJumps to a specified label. Used for macro flow control.GotoLabelGoto "Label1"
ExitMacroStops execution of the current macro.NoneExitMacro
ExitLoopExits the current loop prematurely.NoneExitLoop
ContinueSkips to the next loop iteration.NoneContinue
If or ElseIfAdds conditional logic with an If or ElseIf block. Supports variables, math, and string functions.ConditionIf Count > 0
ElseAdds an Else block to an If statement.NoneElse
EndIfEnds an If block.NoneEndIf
SendToPluginSends data to a plugin. Used for plugin integration (e.g., AskChatGPT).PluginName, Param1-3, SynchSendToPlugin AskChatGPT, Query (Synchron)
SetVariableSets or manipulates variables with values or functions. Supports advanced math/string operations.Name, ValueSetVariable MyVar = RANDOM 1-10

UI Hotkeys & Keyboard Shortcuts

VoiceMacro supports extensive keyboard navigation and hotkeys for both macro execution and UI control. Important: Hotkeys are context-dependent and only work when the relevant window or menu is active. The same hotkey combination may perform different actions depending on which window has focus.

Main Window Navigation

When the main VoiceMacro window is active:

Main Menu (Alt key)

When the main menu is open (press Alt to activate):

Profiles & Macros Window

When the Profiles & Macros window is active:

Context Menu (Right-click on macros)

When the context menu is open (right-click on a macro):

Macro Editor (AddMacro Window)

When the Macro Editor window is active:

Other Actions Menu (Alt+O)

When the "Other" menu is open in the Macro Editor:

Statements & Conditions Submenu (Alt+S)
Toggle/Rotate Submenu (Alt+T)
If/Else/EndIf Submenu (Alt+I)
Control VoiceMacro Submenu (Alt+C)
Advanced Submenu (Alt+A)
Window Manipulation Submenu (Alt+W)
Block Input Submenu (Alt+B)
Copy to/Paste from Clipboard Submenu (Alt+C)
Abort Submenu (Alt+A)

Window Manipulation Submenu (Alt+W)

When the "Window manipulation" submenu is open:

Action Forms & Dialogs

Standard navigation for all dialogs and action forms:

Special hotkeys:

Variables & Functions

Variables allow dynamic content in macros. They are enclosed in curly braces {VariableName} and can be set or manipulated using the SetVariable action. There are several types and many built-in internal variables and functions.

Set a variable to a random value:
Action: SetVariable MyVar = RANDOM 1-10
Use a variable in text:
Action: InsertText {MyVar}

Variable Functions Reference

Array Handling in VoiceMacro

VoiceMacro handles arrays through the GETARRAY[var, delim] function. When you use this function, VoiceMacro automatically creates individual variables for each array element and stores the array length.

How GETARRAY Works:

Array Usage Examples:

Example 1: Basic Array Creation
Action 1: SetVariable MyArray = apple,banana,cherry
Action 2: SetVariable ArrayLength = GETARRAY[MyArray, ","]
Action 3: WriteToLog "Array has {ArrayLength} elements: {MyArray1}, {MyArray2}, {MyArray3}"
Example 2: Loop Through Array
Action 1: SetVariable Colors = red,green,blue,yellow
Action 2: SetVariable ColorCount = GETARRAY[Colors, ","]
Action 3: Loop Start ({ColorCount}x)
Action 4: SpeakText "Color {LoopIndex} is {Colors{LoopIndex}}"
Action 5: Loop End
Example 3: Array with Different Delimiter
Action 1: SetVariable Paths = C:\Windows;C:\Program Files;C:\Users
Action 2: SetVariable PathCount = GETARRAY[Paths, ";"]
Action 3: WriteToLog "Found {PathCount} paths"
Example 4: Dynamic Array Access
Action 1: SetVariable Fruits = apple,banana,cherry,orange
Action 2: SetVariable Index = 2
Action 3: SetVariable SelectedFruit = {Fruits{Index}}
Action 4: SpeakText "Selected fruit: {SelectedFruit}"

Triggers

Macros are activated by various trigger mechanisms. VoiceMacro supports 11 different ways to trigger macros, from voice commands to remote control.

Example Multi-Trigger Macro:
Voice Command: "Open Notepad"
Hotkey: Ctrl+Alt+N
Controller: Button X
Scheduler: Daily at 9:00 AM

For complete details on all trigger mechanisms, see the All Macro Trigger Mechanisms section below.

All Macro Trigger Mechanisms

VoiceMacro supports 11 different ways to trigger macros. Each trigger mechanism has specific use cases, setup requirements, and advantages. A single macro can use multiple trigger types simultaneously.

1. Voice Commands (UseRecognition)

Trigger ID: 0 (ActivatedBy = 0)

2. Keyboard/Mouse Hotkeys (UseShortCut)

Trigger ID: 1 (ActivatedBy = 1)

3. Other Macros (RunOtherMacro)

Trigger ID: 2 (ActivatedBy = 2)

4. Testing Mode

Trigger ID: 3 (ActivatedBy = 3)

5. Auto Profile Switching (Auto)

Trigger ID: 4 (ActivatedBy = 4)

6. Command Line Arguments

Trigger ID: 5 (ActivatedBy = 5)

7. Scheduler (UseScheduler)

Trigger ID: 6 (ActivatedBy = 6)

8. Auto Profile Switching - Exit (AutoEx)

Trigger ID: 7 (ActivatedBy = 7)

9. Plugin Integration

Trigger ID: 8 (ActivatedBy = 8)

10. Controller/Gamepad (UseController)

Trigger ID: 9 (ActivatedBy = 9)

11. Remote Control (HTTP)

Trigger ID: 10 (ActivatedBy = 10)

Trigger Detection and Variables

VoiceMacro provides the {ActivatedBy} variable to detect which trigger mechanism activated a macro:

Multiple Trigger Types

A single macro can use multiple trigger types simultaneously. For example, a macro could be triggered by:

This provides maximum flexibility and accessibility for different use cases and users.

Trigger Priority and Conflicts

LLM Guidance for Trigger Selection

Advanced Features

LLM Usage & Macro Generation Patterns

Note for LLMs: This documentation is intended for use by large language models to generate VoiceMacro macros in response to user requests. Use the patterns, samples, and guidance below to map user intent to macro code. Always prefer clarity, explicit action names, and variable usage for dynamic content. When in doubt, provide a short pause after launching applications or switching windows.

Critical: Always Provide UI Navigation Instructions

When a user asks you to help create a macro, you MUST provide both:

  1. Step-by-step UI navigation instructions (what buttons to click, menus to open, fields to fill)
  2. The actual macro code/actions (what the macro will do)

Never just provide macro code without UI instructions. Users need to know exactly how to create the macro in VoiceMacro's interface.

General LLM Macro Generation Guidance

LLM-Optimized Sample Macros

Each sample below includes a user prompt, the macro code, and LLM-specific guidance. Use these as templates for generating new macros. Array usage, advanced variable patterns, plugin integration, accessibility, and other features are integrated throughout.

Prompt: "Open Notepad, type 'Hello', and save the file as test.txt"

UI Navigation Instructions:
1. In main window, click 'Edit' (or press Alt+E)
2. In Profiles window, click 'Add New macro' (or press Alt+A)
3. In Macro Editor, click 'Other' menu (or press Alt+O)
4. Select 'Execute/open a file'
5. Click '...' button, browse to notepad.exe, click 'OK'
6. Click 'OK' to save action
7. Click 'Other' menu again, select 'Pause'
8. Enter 0.5, click 'OK'
9. Click 'Other' menu, select 'Insert text'
10. Enter "Hello", click 'OK'
11. Add another Pause (0.2 sec)
12. Click 'Other' menu, select 'Keyboard'
13. Press Ctrl+S, click 'OK'
14. Add Pause (0.2 sec)
15. Add InsertText action with "test.txt"
16. Add Keyboard action with Enter key
17. Click 'OK' to save macro

Macro Actions:
Action 1: Open "notepad.exe"
Action 2: Pause (0.5 sec)
Action 3: InsertText "Hello"
Action 4: Pause (0.2 sec)
Action 5: Key: Ctrl+S
Action 6: Pause (0.2 sec)
Action 7: InsertText "test.txt"
Action 8: Key: Enter

LLM Guidance: Always provide both UI navigation steps AND macro actions. Always add a pause after launching Notepad and before/after key actions. Use InsertText for file names and text input. Use Key: Ctrl+S to trigger save.

Prompt: "Store three numbers in an array and sum them"

UI Navigation Instructions:
1. In main window, click 'Edit' (or press Alt+E)
2. In Profiles window, click 'Add New macro' (or press Alt+A)
3. In Macro Editor, click 'Other' menu (or press Alt+O)
4. Select 'Set variable'
5. In Variable field, enter "MyArray"
6. In Value field, enter "1,2,3", click 'OK'
7. Click 'Other' menu again, select 'Set variable'
8. Variable: "ArrayLength", Value: "GETARRAY[MyArray, ","]", click 'OK'
9. Click 'Other' menu again, select 'Set variable'
10. Variable: "Sum", Value: "{MyArray1}+{MyArray2}+{MyArray3}", click 'OK'
11. Click 'Other' menu, select 'Write to log'
12. Enter "Array has {ArrayLength} elements, sum is {Sum}", click 'OK'
13. Click 'OK' to save macro

Macro Actions:
Action 1: SetVariable MyArray = 1,2,3
Action 2: SetVariable ArrayLength = GETARRAY[MyArray, ","]
Action 3: SetVariable Sum = {MyArray1}+{MyArray2}+{MyArray3}
Action 4: WriteToLog "Array has {ArrayLength} elements, sum is {Sum}"

LLM Guidance: Always provide both UI navigation steps AND macro actions. Use SetVariable to define arrays (comma-separated). Use GETARRAY[var,delimiter] to split into individual variables. Access elements with {VariableName1}, {VariableName2}, etc.

Prompt: "Loop through an array and type each value"

UI Navigation Instructions:
1. In main window, click 'Edit' (or press Alt+E)
2. In Profiles window, click 'Add New macro' (or press Alt+A)
3. In Macro Editor, click 'Other' menu (or press Alt+O)
4. Select 'Set variable'
5. Variable: "MyArray", Value: "apple,banana,cherry", click 'OK'
6. Click 'Other' menu again, select 'Set variable'
7. Variable: "ArrayLength", Value: "GETARRAY[MyArray, ","]", click 'OK'
8. Click 'Statements & conditions' menu (or press Alt+S)
9. Select 'Loop Start'
10. Enter "{ArrayLength}" for loop count, click 'OK'
11. Click 'Other' menu, select 'Insert text'
12. Enter "{MyArray{LoopIndex}}", click 'OK'
13. Click 'Other' menu, select 'Keyboard'
14. Press Enter key, click 'OK'
15. Click 'Statements & conditions' menu, select 'Loop End'
16. Click 'OK' to save macro

Macro Actions:
Action 1: SetVariable MyArray = apple,banana,cherry
Action 2: SetVariable ArrayLength = GETARRAY[MyArray, ","]
Action 3: Loop Start ({ArrayLength}x)
Action 4: InsertText "{MyArray{LoopIndex}}"
Action 5: Key: Enter
Action 6: Loop End

LLM Guidance: Always provide both UI navigation steps AND macro actions. Use GETARRAY[var,delimiter] to split array and get length. Use {VariableName{LoopIndex}} for dynamic array access.

Prompt: "Find the length of an array"

Macro:
Action 1: SetVariable MyArray = a,b,c,d,e
Action 2: SetVariable ArrayLength = GETARRAY[MyArray, ","]
Action 3: WriteToLog "Array length: {ArrayLength}"

LLM Guidance: Use GETARRAY[var,delimiter] to get the array length directly. This is much simpler than counting commas manually.

Prompt: "Mute system volume with a hotkey"

Macro:
Action 1: Key: Volume Mute

LLM Guidance: For system keys, use the appropriate key name (e.g., "Volume Mute", "Volume Down", "Volume Up", "Media Next Track", "Media Prev Track", "Media Stop", "Media Play Pause"). Assign this macro to a hotkey as requested by the user.

Prompt: "Wait for Calculator to open, then bring it to front and play a sound"

Macro:
Action 1: WaitWindow "Calculator", Timeout: 10 sec
Action 2: WindowToFront "Calculator"
Action 3: PlaySound "C:\alert.wav"

LLM Guidance: Use WaitWindow for synchronization. Always specify a timeout. Use PlaySound for user feedback.

Prompt: "Create a macro that loops 10 times, types the loop number, and presses Enter"

Macro:
Action 1: Loop Start (10x)
Action 2: InsertText "{LoopIndex}"
Action 3: Key: Enter
Action 4: Loop End

LLM Guidance: Use Loop Start/Loop End for repetition. Use variables like {LoopIndex} for dynamic content.

Prompt: "Speak the value of a variable from an array"

Macro:
Action 1: SetVariable Colors = red,green,blue
Action 2: SetVariable ArrayLength = GETARRAY[Colors, ","]
Action 3: SetVariable Index = 2
Action 4: SpeakText "The color at position {Index} is {Colors{Index}}"

LLM Guidance: Use GETARRAY[var,delimiter] to split the array first, then access elements with {VariableName{Index}}. Use variables for dynamic array access.

Prompt: "Replace all spaces in a string with underscores"

Macro:
Action 1: SetVariable MyText = "hello world test"
Action 2: SetVariable MyText = REPLACE[{MyText}," ","_"]
Action 3: InsertText "{MyText}"

LLM Guidance: Use REPLACE for string manipulation. Always enclose parameters in brackets and quotes as needed.

Prompt: "Send a command to a plugin and log the result"

Macro:
Action 1: SendToPlugin MyPlugin, Param1, Param2, Synch
Action 2: WriteToLog "Plugin executed successfully"

LLM Guidance: Use SendToPlugin for plugin/API calls. Use WriteToLog for debugging or user feedback. Most plugins don't return values to {PluginResult} - check the specific plugin documentation.

Prompt: "Work around a game that blocks simulated input"

Macro:
Action 1: Open "game.exe"
Action 2: Pause (2.0 sec)
Action 3: InsertText "{MyCommand}"
Action 4: Key: Enter
Action 5: WriteToLog "If input not received, try running VoiceMacro as administrator or use alternative input methods."

LLM Guidance: For games or apps that block input, suggest running VoiceMacro as admin, using InsertText instead of Key, or exploring plugin-based workarounds.

Prompt: "Accessibility: Assign a macro to a mouse button for hands-free operation"

Macro:
Action 1: SpeakText "Macro triggered by mouse button!"
Action 2: InsertText "Mouse macro activated"

LLM Guidance: Assign macros to mouse or controller buttons for accessibility. Use SpeakText for audible feedback.

Prompt: "Handle an error and provide user feedback"

Macro:
Action 1: If {ErrorLevel} <> 0
Action 2: ShowDialog "An error occurred: {ErrorLevel}"
Action 3: EndIf

LLM Guidance: Use ErrorLevel to detect issues. ShowDialog or WriteToLog can provide user feedback or debugging info.

Prompt: "Use a variable to store the result of a plugin call and use it in a condition"

Macro:
Action 1: SendToPlugin MyPlugin, Query, Synch
Action 2: SetVariable Result = "OK"
Action 3: If {Result} = "OK"
Action 4: SpeakText "Plugin succeeded!"
Action 5: Else
Action 6: SpeakText "Plugin failed: {Result}"
Action 7: EndIf

LLM Guidance: Store plugin results in variables for conditional logic and user feedback. Note: Most plugins don't return values to {PluginResult} - you may need to set the result variable manually based on the plugin's behavior.

Prompt: "Wait for a window to close before continuing"

Macro:
Action 1: WaitWindow "Notepad", Timeout: 30 sec
Action 2: OnTimeOut
Action 3: SpeakText "Notepad closed. Continuing."
Action 4: EndOnTimeOut

LLM Guidance: Use WaitWindow with timeout and OnTimeOut/EndOnTimeOut for window monitoring. This is more efficient than polling loops.

Prompt: "Advanced: Use math and string functions in SetVariable"

Macro:
Action 1: SetVariable MyText = "VoiceMacro is awesome!"
Action 2: SetVariable Upper = TOUPPER[{MyText}]
Action 3: SetVariable Count = STRLEN[{MyText}]
Action 4: WriteToLog "Upper: {Upper}, Length: {Count}"

LLM Guidance: Use TOUPPER, STRLEN, and other functions for advanced variable manipulation.

LLM Troubleshooting & Correction Patterns (Expanded)

LLM Best Practices (Expanded)

LLM Response Template

When a user asks for help creating a macro, use this template:

Your Response Structure:
1. UI Navigation Steps: "Here's how to create this macro in VoiceMacro:"
    - Step-by-step instructions with specific buttons, menus, and fields
    - Include hotkeys when available (e.g., "or press Alt+O")
2. Macro Actions: "The macro will perform these actions:"
    - List the actual macro actions that will be created
3. Additional Tips: "Tips for this macro:"
    - Any relevant best practices or troubleshooting advice

Remember: Users need to know HOW to create the macro in VoiceMacro's interface, not just what the macro does.

Best Practices

Troubleshooting

Advanced Features & System Behavior

VoiceMacro includes several advanced features and built-in protections for system stability.

Recursion Detection

VoiceMacro has built-in recursion detection to prevent system overload. If you accidentally create a macro that starts extremely frequently in a very short time, VoiceMacro will automatically terminate all macros to prevent system overload.

Emergency Abort

Action Management

Auto and AutoEx Features

VoiceMacro can trigger macros automatically when profiles are switched:

Multiple Trigger Types

Besides voice commands, hotkeys, and scheduler, VoiceMacro can trigger macros using:

Advanced UI Features

LLM Guidance for Advanced Features

Sample Macros & Community Tips

Below are real-world macro examples and tips inspired by the VoiceMacro Community Forum. These samples demonstrate practical uses, advanced features, and best practices. For more, visit the VoiceMacro Community Forum.

1. Open Notepad and Type Text

Description: Opens Notepad and types "Hello, World!"
Macro:
Action 1: Open "notepad.exe"
Action 2: Pause (0.5 sec)
Action 3: InsertText "Hello, World!"

Tip: Use a short pause to ensure Notepad is ready for input before typing.

2. Toggle Mute in Discord (Global Hotkey)

Description: Press a hotkey to mute/unmute Discord.
Macro:
Action 1: WindowToFront "Discord"
Action 2: Pause (0.2 sec)
Action 3: Key: Ctrl+Shift+M

Assign this macro to a global hotkey for quick access.

3. Loop: Auto-Clicker for Games

Description: Repeatedly clicks the left mouse button every 100ms.
Macro:
Action 1: Loop Start (50x)
Action 2: Mouse Click left
Action 3: Pause (0.1 sec)
Action 4: Loop End

Tip: Adjust the loop count and pause for your needs. Use a toggle variable to stop the loop early if needed.

4. Speak Current Time

Description: Speaks the current time using TTS.
Macro:
Action 1: SetVariable MyTime = {Time}
Action 2: SpeakText "The time is {MyTime}"

Tip: Use internal variables like {Time}, {Date}, or {CurrentWinTitle} for dynamic macros.

5. Wait for a Window, Then Take Action

Description: Waits for a window (e.g., Calculator) to appear, then brings it to front and plays a sound.
Macro:
Action 1: WaitWindow "Calculator", Timeout: 10 sec
Action 2: WindowToFront "Calculator"
Action 3: PlaySound "C:\alert.wav"

Tip: Use OnTimeOut/EndOnTimeOut to handle cases where the window does not appear.

6. Advanced: Use Variables and Math Functions

Description: Sets a random delay and types it.
Macro:
Action 1: SetVariable Delay = RANDOM 100-500
Action 2: Pause ({Delay} ms)
Action 3: InsertText "Waited {Delay} ms"

Tip: You can use math and string functions in SetVariable for powerful automation.

Community Tips

Resources

Command Line Arguments

VoiceMacro supports command line arguments for external program communication. If VoiceMacro is already running, new command line arguments are sent to the already running instance.

Supported Commands

Command Line Examples

Execute macro by GUID:
VoiceMacro.exe /ExecuteMacro=414bb82f-12e0-427d-bf7c-712288d03142/28fdfdf2-1502-4bf0-9ace-d6649d921f32 /ShowWindow
Execute macro by name:
VoiceMacro.exe /ExecuteMacro="VoiceMacro demo profile/ActivatedBy"
Set global variable:
VoiceMacro.exe /SetVariable:Feedback1_g="This global variable has been changed externally!"
Set profile variable:
VoiceMacro.exe /SetVariable:"My Profile",Feedback1_p="This profile variable has been changed externally!"
Execute by voice command:
VoiceMacro.exe /VoiceCommand="whats the time"

LLM Guidance for Command Line Usage

Data Directory & File Structure

VoiceMacro uses a specific data directory structure for storing configuration, profiles, and resources.

Important Files

Directory Structure

Data Directory Location

LLM Guidance for File Management

Plugin SDK (vmAPI.dll)

VoiceMacro version 1.3 and above includes official plugin support and SDK for C#/VB.net development.

Plugin Development

Plugin Installation

  1. Unzip SDK files in Visual Studio Projects folder
  2. Load the Solution file (VoiceMacroPluginSamples.sln)
  3. Change output path to VoiceMacro's Plugin folder
  4. Set vmAPI.dll reference to Plugins folder location
  5. Set "Copy Local" to "False" for vmAPI.dll reference
  6. Compile project and restart VoiceMacro

LLM Guidance for Plugin Integration

Documentation generated and expanded by LLM using source code analysis. For the most up-to-date information, always refer to the latest VoiceMacro release and official website.

Latest Features & Current Capabilities

This section covers the most recent features and capabilities in VoiceMacro that may not be fully documented on the website yet. These features are current as of version 1.4.0.59.

Latest Version Updates (1.4.0.59 - June 11, 2025)

Recent Version Updates (1.4.0.58 - April 30, 2025)

Recent Version Updates (1.4.0.57 - March 22, 2025)

Enhanced UI Features

Advanced Controller Support

Remote Control & Web Integration

Plugin Architecture & SDK

Enhanced Variable System

Improved Speech Recognition

Advanced Macro Features

Profile & Organization Features

System Integration

UI & User Experience Improvements

Bug Fixes & Stability Improvements

LLM Guidance for Latest Features

HTML Export Templates & Remote Control

VoiceMacro includes a powerful HTML Export feature that creates custom web interfaces for remote control. These HTML templates can be used to control VoiceMacro from any device with a web browser, including smartphones and tablets.

HTML Export Overview

Template Structure & Placeholders

HTML Export templates use specific start/end tags and placeholders that VoiceMacro replaces with actual data:

Start/End Tags

Global Placeholders (Replaced in whole HTML file)

Group Placeholders (Replaced in VMGROUPSTART/VMGROUPEND tags)

Macro Placeholders (Replaced in VMMACROS tag)

Included Template Examples

Creating Custom HTML Templates

Basic Template Example:
<!DOCTYPE html>
<html>
<head>
<title>$$PROFILENAME$$</title>
</head>
<body>
<h1>$$PROFILENAME$$</h1>
<!-- VMALLGROUPS -->
<!-- VMGROUPSTART -->
<h2>$$GROUP$$</h2>
<!-- VMMACROS -->
<button onclick="executeMacro('$$MACROGUID$$')">$$COMMANDS$$</button>
<!-- /VMMACROS -->
<!-- VMGROUPEND -->
<!-- /VMALLGROUPS -->
</body>
</html>

JavaScript Integration for Remote Control

HTML templates can include JavaScript functions to communicate with VoiceMacro's remote control feature:

JavaScript Function for Remote Control:
function VMhttpGet(theUrl, callbackElement) {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            callbackElement.innerHTML = xmlHttp.responseText;
        }
    }
    xmlHttp.open("GET", theUrl, true);
    xmlHttp.send(null);
}

Remote Control Features

VoiceMacro's remote control feature allows external devices to control VoiceMacro via HTTP requests over the network.

Remote Control Setup

HTTP Commands

Remote control uses HTTP GET requests with specific command parameters:

VMRemote Command Line Tool

VMRemote.exe is a command-line tool for remote control from batch files and scripts.

PowerShell Integration

PowerShell Example - Execute Macro:
$RemoteHost = "192.168.0.10:8080"
$WebResponse = Invoke-Webrequest -Uri "http://$RemoteHost/ExecuteMacro=ProfileGUID/MacroGUID /ShowWindow"
echo $WebResponse.Content
PowerShell Example - Set and Get Variables:
$RemoteHost = "192.168.0.10:8080"
# Set variable
$WebResponse = Invoke-Webrequest -Uri "http://$RemoteHost/SetVariable:MyVariable_g=`"Hello, World!`""
# Get variable
$WebResponse = Invoke-Webrequest -Uri "http://$RemoteHost/GetVariable=MyVariable_g"
echo $WebResponse.Content

Web Browser Integration

HTML templates can include JavaScript to control VoiceMacro directly from web browsers:

JavaScript Remote Control Example:
function executeMacro(macroGUID) {
    var ipAddress = document.getElementById('ipAddrPort').value;
    var url = 'http://' + ipAddress + '/ExecuteMacro=ProfileGUID/' + macroGUID;
    VMhttpGet(url, 'resultDiv');
}

Mobile Device Control

Advanced Remote Control Features

Security Considerations

LLM Guidance for Remote Control

External Tools & Integration

VoiceMacro includes several external tools and integration options for advanced automation scenarios.

External Tools Location

External tools are located in the Externals folder and include:

Joystick/Controller Integration

Error Level Handling

Profile Translation

Sample Profiles

Additional sample profiles demonstrate advanced features:

LLM Guidance for External Tools

Additional Components & Tools

VoiceMacro includes several additional components and tools for advanced functionality and integration.

Plugin System (vmAPI)

Sound System

VMRemote Command Line Tool

Translation Tools

Release Structure

The VoiceMacro release package includes the following directories and files:

LLM Guidance for Additional Components

Installation & Portability

VoiceMacro's behavior varies depending on installation location and Windows privileges, affecting data storage and functionality.

Data Directory Behavior

VoiceMacro uses different data directory locations based on installation method:

Portability Features

Windows Privilege Considerations

Certain VoiceMacro actions require elevated privileges to function properly:

Installation Scenarios

Speech Recognition Requirements

LLM Guidance for Installation Issues

Debugging Considerations

When helping users debug macro issues, consider these common limitations and their effects on macro behavior.

Privilege-Related Debugging Issues

Installation Location Debugging

Speech Recognition Debugging

Common Debugging Questions

When users report macro issues, ask these questions:

Debugging Strategies

LLM Debugging Guidance

Debugging Actions & Tools

VoiceMacro provides several built-in actions specifically designed for debugging and troubleshooting macros.

Write to Log

Show Dialog

Speak Text

OSD (On-Screen Display)

Pause

Debugging Strategies with Built-in Actions

Advanced Debugging Techniques

LLM Guidance for Debugging Actions


Documentation generated and expanded by LLM using source code analysis. For the most up-to-date information, always refer to the latest VoiceMacro release and official website.