A Compact Voicemeeter Remote App
Go to file
onyx-and-iris 14a43770cd ldirty, pdelay, ldelay added. changes to how levels are fetched
ldirty added, true iff level value has changed.

fetching level arrays moved to highest level of the app.

pdelay and ldelay added to _base_vals dataclass.
2022-04-13 06:50:49 +01:00
configs initial commit 2022-04-11 18:35:28 +01:00
profiles initial commit 2022-04-11 18:35:28 +01:00
vmcompact ldirty, pdelay, ldelay added. changes to how levels are fetched 2022-04-13 06:50:49 +01:00
__main__.py initial commit 2022-04-11 18:35:28 +01:00
.gitignore initial commit 2022-04-11 18:35:28 +01:00
horizontal_extended.png add readme. 2022-04-11 23:48:28 +01:00
LICENSE Initial commit 2022-04-11 13:14:34 +01:00
nolabels.png add readme. 2022-04-11 23:48:28 +01:00
README.md Update README.md 2022-04-12 18:35:33 +01:00
setup.py initial commit 2022-04-11 18:35:28 +01:00
vertical_extended.png add readme. 2022-04-11 23:48:28 +01:00

License: MIT Code style: black

Image of app in vertical extended mode

Voicemeeter Compact

Prerequisites

  • Voicemeeter 1 (Basic), 2 (Banana) or 3 (Potato)
  • Python 3.9+

Installation

git clone https://github.com/onyx-and-iris/voicemeeter-compact
cd voicemeeter-compact
pip install .

Usage

Example __main__.py file:

import voicemeeter
import vmcompact


if __name__ == "__main__":
    # choose the kind of Voicemeeter (Local connection)
    kind_id = "banana"

    # hide can be used to enable/disable the Voicemeeter GUI
    # if hidden the audio engine will still start and the app should work as normal 
    # but the main VM GUI will not display,
    # nor will there be an icon in the taskbar.
    voicemeeter.launch(kind_id, hide=False)

    # pass the kind_id and the vmr object to the app
    with voicemeeter.remote(kind_id) as vmr:
        app = vmcompact.connect(kind_id, vmr)
        app.mainloop()

It's important to know that only labelled strips and buses will appear in the Channel frames. Removing a Channels label will cause the GUI to grow/shrink in real time.

Image of unlabelled app

If the GUI looks like the above when you first load it, then no channels are labelled. From the menu->Profiles->Load Profile you may load an example config. Save your current Voicemeeter settings first :).

kind_id

A kind_id specifies a major Voicemeeter version. This may be one of:

  • basic
  • banana
  • potato

Config Files

app.toml

Configure certain startup states for the app.

  • theme By default the app loads up the Sun Valley light or dark theme by @rdbende. When all 16 channels for Potato are labelled you may find the app becomes slower so you have the option to load up the app without any theme loaded. Simply set enabled to false and mode will take no effect.

  • extends Extending the app will show both strips and buses. In reduced mode only one or the other. This app will extend both horizontally and vertically, simply set extends_horizontal true or false accordingly.

  • channel For each channel labelframe the width and height may be adjusted which effects the spacing between widgets and the length of the scales and progressbars respectively.

  • submixes Select the default submix bus when Submix frame is shown. For example, a dedicated bus for OBS.

vban.toml

Configure as many vban connections as you wish. This allows the app to work over a LAN connection as well as with a local Voicemeeter installation. If you don't wish to use any vban connections I advise you to delete this file.

For vban connections to work correctly VBAN TEXT incoming stream MUST be configured correctly on the remote machine. Both pcs ought to be connected to a local private network and should be able to ping one another.

Profiles

Three example profiles are included with the package, one for each kind of Voicemeeter. Use these to configure parameter startup states. Any parameter supported by the underlying interfaces may be used. For a detailed description of parameter coverage see:

Voicemeeter Remote API Python

VBAN CMD API Python

Profiles may be loaded at any time via the menu.

Special Thanks

Vincent Burel for creating Voicemeeter, its SDK, the C Remote API and Streamer View app!

Christian Volkmann for the detailed work that went into creating the underlying Remote API Python Interface. Unfortunately, the Remote API Python Interface has NOT been open source licensed. I have raised an issue and asked directly and politely but so far no response. If a license is added in future I will update this section. Without an open source license there is no guarantee that in future this package may not be pulled down, without any notice.

Rdbende for creating the beautiful Sun Valley Tkinter theme.