2024-07-01 07:35:32 +01:00
# Voicemeeter Remote Command Line Utility
2024-06-26 17:00:54 +01:00
## `Tested against`
- Basic 1.1.1.1
- Banana 2.1.1.1
- Potato 3.1.1.1
## `Requirements`
- [Voicemeeter ](https://voicemeeter.com/ )
## `Use`
2024-06-28 03:04:14 +01:00
```powershell
2024-07-07 07:58:12 +01:00
.\vmrcli.exe [-h] [-i] [-k] [-D] [-v] [-c] [-m] [-s] < api commands >
2024-06-28 03:04:14 +01:00
```
2024-06-26 17:00:54 +01:00
Where:
2024-07-02 11:15:17 +01:00
- `h` : Prints the help message.
2024-06-27 22:07:53 +01:00
- `i` : Enable interactive mode. If set, any api commands passed on the command line will be ignored.
2024-06-26 17:00:54 +01:00
- `k` : The kind of Voicemeeter (basic, banana or potato). Use this to launch the GUI.
- `D` : Set log level 0=TRACE, 1=DEBUG, 2=INFO, 3=WARN, 4=ERROR, 5=FATAL
2024-07-02 10:24:07 +01:00
- `v` : Enable extra console output (toggle, set messages)
2024-07-05 12:05:50 +01:00
- `c` : Load a user configuration (give the full file path)
2024-07-02 17:49:51 +01:00
- `m` : Launch the MacroButtons application
- `s` : Launch the StreamerView application
2024-06-26 17:00:54 +01:00
2024-06-26 17:13:04 +01:00
## `API Commands`
- Commands starting with `!` will be toggled, use it with boolean parameters.
2024-07-02 11:55:34 +01:00
- Commands containing `=` will set a value. (use `+=` and `-=` to increment/decrement)
2024-06-26 17:13:04 +01:00
- All other commands with get a value.
Examples:
2024-07-02 12:00:16 +01:00
Launch basic GUI, set log level to INFO, Toggle Strip 0 Mute, print its new value, then decrease Bus 0 Gain by 3.8
2024-06-26 17:13:04 +01:00
2024-06-28 03:04:14 +01:00
```powershell
2024-07-07 07:58:12 +01:00
.\vmrcli.exe -kbasic -D2 !strip[0].mute strip[0].mute bus[0].gain-=3.8
2024-06-28 03:04:14 +01:00
```
2024-06-26 17:13:04 +01:00
2024-06-26 18:30:47 +01:00
Launch banana GUI, set log level to DEBUG, set Strip 0 label to podmic then print Strip 2 label
2024-06-26 17:13:04 +01:00
2024-06-28 03:04:14 +01:00
```powershell
2024-07-07 07:58:12 +01:00
.\vmrcli.exe -kbanana -D1 strip[0].label=podmic strip[2].label
2024-06-28 03:04:14 +01:00
```
2024-06-26 17:13:04 +01:00
2024-06-27 22:07:53 +01:00
## `Interactive Mode`
Running the following command in Powershell:
2024-06-28 03:04:14 +01:00
```powershell
2024-07-07 07:58:12 +01:00
.\vmrcli.exe -i
2024-06-28 03:04:14 +01:00
```
2024-06-27 22:07:53 +01:00
Will open an interactive prompt:
```powershell
Interactive mode enabled. Enter 'Q' to exit.
>>
```
API commands follow the same rules as listed above. Entering `Q` or `q` will exit the program.
2024-06-26 17:00:54 +01:00
## `Script files`
2024-06-27 01:18:25 +01:00
Scripts can be loaded from text files, for example in Powershell:
2024-06-26 17:00:54 +01:00
```powershell
2024-07-07 07:58:12 +01:00
.\vmrcli.exe -D1 $(Get-Content .\example_commands.txt)
```
You may also pipe a scripts contents to the CLI:
```powershell
$(Get-Content .\example_commands.txt) | .\vmrcli.exe -D1 -i
2024-06-26 17:00:54 +01:00
```
2024-06-26 18:15:46 +01:00
2024-07-02 10:14:25 +01:00
Multiple API commands can be in a single line but they should be space separated.
2024-06-27 23:02:34 +01:00
## `Build`
2024-06-27 23:09:10 +01:00
Run the included `makefile` with [GNU Make ](https://www.gnu.org/software/make/ ).
2024-06-27 23:02:34 +01:00
2024-07-02 10:21:37 +01:00
The binary in [Releases][releases] is compiled with coloured logging enabled. To disable this you can override the `LOG_USE_COLOR` variable, for example:
2024-06-27 23:02:34 +01:00
`make LOG_USE_COLOR=no`
2024-06-26 18:37:52 +01:00
## `Official Documentation`
2024-07-02 10:21:37 +01:00
- [Voicemeeter Remote C API][remoteapi-docs]
2024-06-26 18:37:52 +01:00
2024-06-26 18:15:46 +01:00
## `Special Thanks`
2024-07-02 10:21:37 +01:00
- [rxi][rxi-user] for writing the [log.c][log-c] package
[releases]: https://github.com/onyx-and-iris/vmrcli/releases
[remoteapi-docs]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/main/VoicemeeterRemoteAPI.pdf
[rxi-user]: https://github.com/rxi
[log-c]: https://github.com/rxi/log.c