/vmc-mixer

Mixer for VMCP streams

Primary LanguageHaskellGNU General Public License v3.0GPL-3.0

日本語版はこちら

vmc-mixer

Mix several VMCP compatible streams into one stream. Useful if you want to use number of tools to control one VRM model.

<iframe width=”560” height=”315” src=”https://www.youtube-nocookie.com/embed/d_qsC2fl_Wo” title=”YouTube video player” frameborder=”0” allow=”accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>

Usage

There’re two version of UI.

1. Get vmc-mixer binary

You can get binary from releases page for each release, or you can build it by yourself:

git clone https://github.com/Cj-bc/vmc-mixer
cd vmc-mixer
stack build

2. Launch your Marionettes and performers

launch your VMC marionette (which receives motion data) and performers (which sends motion information by VMCP message). Please launch them with different port number specified.

In case you use: TUI (Terminal User Interface)

TUI version have interactive user interface on terminal.

1. Launch vmc-mixer-tui

In this repository root, launch vmc-mixer-tui by stack run vmc-mixer-tui <MARIONETTE_ADDRESS>. It should compile vmc-mixer-tui and opens TUI.

2. Add input addresses

Focus on new address editor by pressing tab key, and type new performer address that you want vmc-mixer to receive VMCP message from.

The performer is simply port number.

For example, if you want to recieve packets from port 3305, You simply type 3305.

3. Done! it should be working

It should be working right now. If it doesn’t, please check your firewall settings first. Those ports might be blocked.

In case you use: CLI (Command Line user Interface)

CLI version doesn’t have interactive interface at all. It uses command line options (and config files in the future) instead.

In this repository root, launch vmc-mixer-cli by stack run vmc-mixer-cli -- <OPTIONS>.

Command line options

You should specify input/output addresses via command line option.

Usage: vmc-mixer-cli [-p|--performer ARG] marionette

For example, if you want to recieve packets from port 39540 and port 39541, send to 192.168.10.10 port 39540, You can do:

vmc-mixer-cli -i 39540 -i 39541 192.168.10.10:39540

UI keybind

Current UI have two widgets.

General keybinds

There are some keybindings that is active in any state.

Keyaction
Tabfocus on next widget

Input Connection list

The widget above is input connection list. It shows all input addresses available.

Keyaction
-Remove selected connection
Up arrowselect above
Down arrowselect below

New address editor

The widget at bottom is new address editor. You can use this to insert new address.

Keyaction
Enterconfirm the address