Skip to main content

Python implementation of the VBAN (VB-Audio Network) protocol

Project description

pyVBAN

PyPI - Python Version

Python implementation of the VBAN (VB Audio network) protocol

Original specifications here: https://www.vb-audio.com/Voicemeeter/VBANProtocol_Specifications.pdf

Supported sub-protocols:

  • Audio
  • Serial (To verify)
  • Text
  • Service

As I'm currently not using VBAN nor VB-Audio products I have no plans to implement this further. I will do my best to maintain it!

For any feature request, the specs are open, feel free to open a PR 😀

Using the built-in utilities

List devices

$ python -m pyvban.utils.device_list
import logging
import pyvban
logging.basicConfig(level=logging.DEBUG)
pyvban.utils.device_list()

Receiver

$ python -m pyvban.utils.receiver --address 127.0.0.1 --port 6980 --stream Stream1 --device 11
import logging
import pyvban
logging.basicConfig(level=logging.DEBUG)
receiver = pyvban.utils.VBAN_Receiver(
    sender_ip="127.0.0.1",
    stream_name="Stream1",
    port=6980,
    device_index=11
)
receiver.run()

Sender

$ python -m pyvban.utils.sender --address 127.0.0.1 --port 6980 --stream Stream1 --rate 48000 --channels 2 --device 1
import logging
import pyvban
logging.basicConfig(level=logging.DEBUG)
sender = pyvban.utils.VBAN_Sender(
    receiver_ip="127.0.0.1",
    receiver_port=6980,
    stream_name="Stream1",
    sample_rate=48000,
    channels=2,
    device_index=1
)
sender.run()

Send text

$ python -m pyvban.utils.send_text --address 127.0.0.1 --port 6980 --stream Command1 "Strip[5].Mute = 0"
import logging
import pyvban
import time
logging.basicConfig(level=logging.DEBUG)
send_text = pyvban.utils.VBAN_SendText(
    receiver_ip="127.0.0.1",
    receiver_port=6980,
    stream_name="Command1"
)
state = False
while True:
    state = not state
    if state:
        send_text.send("Strip[5].Mute = 0")
    else:
        send_text.send("Strip[5].Mute = 1")
    time.sleep(1)

Craft a packet manually

import pyvban

pcm_data = b""  # 128 sample stereo data
header = pyvban.VBANAudioHeader(
    sample_rate=pyvban.subprotocols.audio.VBANSampleRates.RATE_48000,
    samples_per_frame=128,
    channels=2,
    format=pyvban.subprotocols.audio.VBANBitResolution.VBAN_BITFMT_16_INT,
    codec=pyvban.subprotocols.audio.VBANCodec.VBAN_CODEC_PCM,
    stream_name="Stream1",
    frame_counter=0,
)

vban_packet = header.to_bytes() + pcm_data
vban_packet = vban_packet[:pyvban.const.VBAN_PROTOCOL_MAX_SIZE]

Parse a packet manually

import pyvban

def run_once(self):
    data, addr = socket.recvfrom(pyvban.const.VBAN_PROTOCOL_MAX_SIZE)
    packet = pyvban.VBANPacket(data)
    if packet.header:
        if packet.header.sub_protocol != pyvban.const.VBANProtocols.VBAN_PROTOCOL_AUDIO:
            print(f"Received non audio packet {packet}")
            return
        if packet.header.stream_name != self._stream_name:
            print(f"Unexpected stream name \"{packet.header.stream_name}\" != \"{self._stream_name}\"")
            return
        if addr[0] != self._sender_ip:
            print(f"Unexpected sender \"{addr[0]}\" != \"{self._sender_ip}\"")
            return

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvban-0.1.1.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyvban-0.1.1-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file pyvban-0.1.1.tar.gz.

File metadata

  • Download URL: pyvban-0.1.1.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.0 Windows/10

File hashes

Hashes for pyvban-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b950074b23b82c549d916eb0b5817d6e0a4566824621dd77b7efe3c29bd44371
MD5 a3a91fe52b8454535c06005fdded290f
BLAKE2b-256 dd1cd2054e7da15ac394e03cb1ca9c612dcc0b6b094eeb0223408fe45607ccb1

See more details on using hashes here.

File details

Details for the file pyvban-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyvban-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.0 Windows/10

File hashes

Hashes for pyvban-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d78371e1fb1440134f4babe1789ac2db7b5f3c8ef5ab38542bf9f9f32b2f98ce
MD5 668125010a4dcc667074f8318f841b56
BLAKE2b-256 d77279291f0585c710d8112fe7dc1c1f4846f8d92674ec0f908c7d2337d51f7a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page