A translator interface between VoiceMeeter/VBAN and the X-Touch

Related tags

Utilities vban-xctrl
Overview

VBAN -> XCtrl translator

This serves as a network based translator for interfacing the Behringer X-Touch with VoiceMeeter Potato. It is designed to run on a machine separate to the one running VoiceMeeter, either as a Docker image, VM, or distinct machine.

Behringer X-Touch: https://www.behringer.com/product.html?modelCode=P0B1X VoiceMeeter Potato: https://vb-audio.com/Voicemeeter/potato.htm

Installing

This utility is built using Rust, you may need to install that first: https://www.rust-lang.org/tools/install

After pulling the repository, build an executable for your OS with cargo build --release.

Then, from the ./target/release directory, run

./vban_xctrl <machine ip> <xtouch ip> <vban ip>

This will register the program with VoiceMeeter running on the <vban ip> machine, push any VoiceMeeter changes out to the X-Touch at <xtouch ip>, receive control changes from the X-Touch, and send them as virtual MIDI messages back into VoiceMeeter.

It supports two virtual pages, controlled by the 'Fader Bank' buttons on the surface. The first page mirrors VoiceMeeter inputs, and the second shows the outputs.

You might also like...
A compatibility layer to smooth the transition between different versions of embedded-hal

Embedded HAL Compatibility Layer A compatibility layer to smooth the transition between different versions of embedded-hal (specifically 0.2.x and 1.0

Easily sync your clipboard between devices. This is a work in progress app.

Clipboard Sync Description Easily sync your clipboard between devices. This is a work in progress app. Stack Frontend: React Tauri isomorphic-ws TSX,

Generate enum from a trait, with converters between them
Generate enum from a trait, with converters between them

Derive macro for Rust that turns traits into enums, providing tools for calling funtions over channels

Stdto provides a set of functional traits for conversion between various data representations.

Stdto stdto provides a set of functional traits for conversion between various data representations. | Examples | Docs | Latest Note | stdto = "0.13.0

A command-line tool which can move CloudFormation resources between stacks
A command-line tool which can move CloudFormation resources between stacks

cfn-teleport A command-line tool which can move CloudFormation resources between stacks. Installation On a Mac you can install via Homebrew: brew inst

Adapters to convert between different writable APIs.

I/O adapters This crate provides adapters to compose writeable traits in the standard library. The following conversions are available: fmt::Write -

A Rust crate that provides a simple interface for LZMA compression and decompression.

rust-lzma Documentation This crate provides a simple interface to liblzma. LZMA is more commonly known as XZ or 7zip, (as in, files with the .xz or .7

A cross-platform serial port library in Rust. Provides a blocking I/O interface and port enumeration including USB device information.

Note: This is a fork of the original serialport-rs project on GitLab. Please note there have been some changes to both the supported targets and which

Command line interface to manage clipboard

cb Command line interface to manage clipboard How to install Pre-Compiled you can download a pre-compiled executable, then you should copy that execut

Comments
  • Behringer sometimes doesn't pick up fader info from VBAN

    Behringer sometimes doesn't pick up fader info from VBAN

    At some times Behringer doesn't pick up faders info from VBAN (after starting or switching layer), so all mechanical faders became to -infinity position. So you should switch the layer to the next for forcible updating faders and then switch it back to move the for example mic fader.

    opened by Golstrider 3
  • Only push changes out to X-Touch

    Only push changes out to X-Touch

    Pushing a full state update to the X-Touch with every received VBAN packet can cause some faders to 'rattle' in place, depending on their level. This can't be good for the motors or faders, so reducing this rate of change to as slow as possible while still maintaining responsiveness sounds like a good idea.

    enhancement 
    opened by ollie-nye 1
  • Add possibilty to use footswitch pedal

    Add possibilty to use footswitch pedal

    If technically possible, It would be cool if we have the possibility to use the Footswitch pedal (now, it isn't working in Voicemeeter for some reasons)

    enhancement 
    opened by Golstrider 1
  • Local VBAN API communication

    Local VBAN API communication

    Currently, this requires a separate machine to run on due to VoiceMeeter binding to port 6980.

    Even using docker we can't get around this, as we have to be able to receive on the same port and can't bind to it. Additionally, docker will use an indeterminate source port when forwarding, which upsets the X-Touch.

    There is a C implementation of the VBAN local API available, so looking into converting this to Rust will be a good start.

    enhancement 
    opened by ollie-nye 0
Owner
Ollie Nye
Ollie Nye
Utilities for interacting with the Behringer X-Touch Mini MIDI controller

xtouchmini Collection of utilities for interacting with the Behringer X-Touch Mini MIDI controller, including reading button/knob/fader inputs and sen

null 5 Nov 11, 2021
An embedded-hal driver for the TT21100 multi-touch touchscreen controller

tt21100 An embedded-hal driver for the TT21100 multi-touch touchscreen controller. If there is a feature which has not yet been implemented and which

Jesse Braham 5 Jan 9, 2023
A lean, minimal, and stable set of types for color interoperation between crates in Rust.

This library provides a lean, minimal, and stable set of types for color interoperation between crates in Rust. Its goal is to serve the same function that mint provides for (linear algebra) math types.

Gray Olson 16 Sep 21, 2022
Easy switch between AWS Profiles and Regions

AWSP - CLI To Manage your AWS Profiles! AWSP provides an interactive terminal to interact with your AWS Profiles. The aim of this project is to make i

KubeOps Skills 14 Dec 25, 2022
This crate bridges between gstreamer and tracing ecosystems.

This crate provides a bridge between gstreamer and the tracing ecosystem. The goal is to allow Rust applications utilizing GStreamer to better integra

Standard Cognition OSS 17 Jun 7, 2022
Simple interoperability between C++ coroutines and asynchronous Rust

cxx-async Overview cxx-async is a Rust crate that extends the cxx library to provide seamless interoperability between asynchronous Rust code using as

Patrick Walton 180 Dec 16, 2022
my attempt at compromise between unwrapping and bullying my dependencies' authors for Error impl

string-eyre Has this happened to you? error[E0599]: the method `wrap_err` exists for enum `Result<(), tauri::Error>`, but its trait bounds were not sa

MichaƂ Sidor 1 Nov 25, 2021
Count and convert between different indexing schemes on utf8 string slices

Str Indices Count and convert between different indexing schemes on utf8 string slices. The following schemes are currently supported: Chars (or "Unic

Nathan Vegdahl 11 Dec 25, 2022
Create virtual serial ports, connect them to physical serial ports, and create routes between them all.

Virtual Serial Port Router (vsp-router) Create virtual serial ports, connect them to physical serial ports, and create routes between them all. vsp-ro

Rob Donnelly 3 Nov 24, 2022
Get a diff between two OpenAPI descriptions.

Get the difference between two OpenAPI descriptions.

Marc-Andre Giroux 25 Aug 22, 2022