An asyncio VBAN implementation
Project description
VBAN Protocol Wrapper
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 uv:
uv 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 see our Contributing Guide for details on how to get started, our development workflow, and coding standards.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiovban-0.8.0.tar.gz.
File metadata
- Download URL: aiovban-0.8.0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8d660c5f3f762453af92b1a40c15bf3e6fb8bd8a9673d2eac2813cb477a69fe
|
|
| MD5 |
33b4ed931123b4f57f5668c7403c1fbd
|
|
| BLAKE2b-256 |
ffcacfefc13f119e792886d05b77ada0c30c5cd04dc0cc5a6fc633880d6d6d5b
|
File details
Details for the file aiovban-0.8.0-py3-none-any.whl.
File metadata
- Download URL: aiovban-0.8.0-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c614f428fb7e7f8f7479bbd37aa6ef2141902c6d6059c0a90cf71e10b62bc6a0
|
|
| MD5 |
d0acf5f4c84dde782203f3e2b04fa0ad
|
|
| BLAKE2b-256 |
45013b2ce3a6171e501765ea16d68ba7753c84a541311bf0010c0a95cca12522
|