Skip to main content

An asyncio VBAN implementation

Project description

VBAN Protocol Wrapper

Currently Under Development - WIP

Overview

This project aims to create a modern, ergonomic wrapper around the VBAN protocol. By leveraging modern Python tools such as dataclasses and asyncio, this wrapper provides a simple and efficient interface for working with VBAN.

Features

  • Dataclasses: Utilizes Python's dataclasses for clean, concise and ergonomic data structures.
  • Asyncio: Supports asynchronous operations for non-blocking I/O.
  • Ease of Use: Designed to be simple and intuitive, making it easy to integrate VBAN into your projects.

Installation

To install the package, use pip:

pip install aiovban

Usage

Basic Example

Here's a basic example of how to use the VBAN wrapper:

from aiovban import VBANAudioHeader, VBANPacket
from aiovban import VBANSampleRate

# Create a VBAN audio header
audio_header = VBANAudioHeader(sample_rate=VBANSampleRate.RATE_44100, channels=17, samples_per_frame=3,
                               bit_resolution=3, codec=0xf0, streamname="Channel1")

# Create a VBAN packet
packet = VBANPacket(header=audio_header)

# Access properties
print(packet.header.sample_rate)  # Output: 44100
print(packet.header.samples_per_frame)  # Output: 3

Asynchronous Example

Using asyncio for non-blocking operations:

client = AsyncVBANClient(ignore_audio_streams=False)
asyncio.create_task(client.listen('0.0.0.0', 6980)) # Listen for all incoming packets

windows_host = client.register_device('bill.local', 6980)
windows_mic_out = windows_host.receive_stream('Windows Mic Out')


command_stream = await windows_host.text_stream('Command1')
await command_stream.send_text('Strip[0].Gain = 0.5;')
await asyncio.sleep(1)
await command_stream.send_text('Command.Restart = 1;')

# DRAIN_OLDEST will dump half the queue when it becomes full
rt_stream = await windows_host.rt_stream(30, back_pressure_strategy=BackPressureStrategy.DRAIN_OLDEST)
print(await rt_stream.get_packet())


receiver = VBANAudioPlayer(stream=windows_mic_out)

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your changes.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Contact

For any questions or issues, please open an issue on the GitHub repository.


This README provides a brief overview of the project, installation instructions, usage examples, and contribution guidelines.

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

aiovban-0.6.1.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

aiovban-0.6.1-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file aiovban-0.6.1.tar.gz.

File metadata

  • Download URL: aiovban-0.6.1.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.15

File hashes

Hashes for aiovban-0.6.1.tar.gz
Algorithm Hash digest
SHA256 b5ea0b8131bdac7a1bb3dd71f99c229238ad56f8e6529915e30bb9d2d01be60f
MD5 334f8e934eb931ed8d2fb45ebb5b408d
BLAKE2b-256 1bb72155c041202a64e19bf2f21d94530709d172590f1c5ef9d441488df49cd1

See more details on using hashes here.

File details

Details for the file aiovban-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: aiovban-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.15

File hashes

Hashes for aiovban-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a391ebc7b84154bfd8257e7e93ebf93962441263dcd48c9138f8c008e8a34df7
MD5 d46bd41693518423e6345411ce324067
BLAKE2b-256 c0ce66befb7307ddbef4a6d3d020283652099157b4e1881912dd333c4d303a4a

See more details on using hashes here.

Supported by

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