Skip to main content

Control your Biamp Tesira DSPs directly from Python!

Project description

PyTesira

Control your Biamp Tesira DSPs directly from Python!

work in progress! stuff might break, please don't rely on this for anything critical... yet

Obligatory disclaimer: this is an unofficial project which is not in any way affiliated with, or endorsed by, Biamp Systems

High level design

PyTesira adopts a modular design where the DSP class (src/pytesira/dsp.py) acts as the hub for everything.

A Transport channel (such as SSH) is used for connection to the Tesira DSP device. Currently, only SSH is supported.

Upon connection, PyTesira tries to create a block map of available DSP blocks. For each supported block type, it also attempts to query that block's attributes (e.g., number of channels and their labels). This can be exported and re-imported to shorten startup time (querying is slow - especially on a complex setup with many nodes).

A Block represents a type of DSP block available (e.g., LevelControl or SourceSelector). It handles everything that has to do with that specific DSP block - setting up subscriptions, updating state, handling update requests, and more.

Supported blocks and features

  • LevelControl : read/write mute status, read/write levels
  • MuteControl : read/write mute status
  • SourceSelector : read/write mute status (output), set source and output levels, read levels, read and select active source
  • DanteInput : read/write mute status, read/write levels, read/write invert setting, read/write fault-on-inactive setting

Simple usage example

from pytesira.dsp import DSP
from pytesira.transport.ssh import SSH

device = DSP()
device.connect(backend = SSH(
                        hostname = "tesira.device.lan",
                        username = "admin", 
                        password = "forgetme",
                        host_key_check = False # Bad option! Bad! Change this in production!
                ))

# Note: at this point, we need to wait for the DSP to be fully connected/ready. 
# To do so, we can simply check for the boolean flag `device.ready`

# Save block map, which can then be loaded by specifying `block_map`
# next time when we load the class like so: DSP(block_map = "dsp_test.bmap")
device.save_block_map(output = "dsp_test.bmap")

# Get system info
print(device.hostname)
print(device.serial_number)
print(device.software_version)

# Get faults and network status
print(device.faults)
print(device.network)

# Assuming a 2-channel level control block named `LevelTest`,
# we first look at its channel status
print(device.blocks["LevelTest"].channels)

# Change level and mute states of a LevelControl block
device.blocks["LevelTest"].set_level(channel = 1, value = -20.0)
device.blocks["LevelTest"].set_mute(channel = 2, value = True)

# Get information on a source selector block named `SourceTest`
# (this includes all channels and their levels, as well as currently selected source)
print(device.blocks["SourceTest"].sources)

# Set source on a selector
device.blocks["SourceTest"].select_source(source = 1)

# Set source level on a selector
device.blocks["SourceTest"].set_source_level(source = 1, value = 0.0)

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

pytesira-0.1.2.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

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

pytesira-0.1.2-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file pytesira-0.1.2.tar.gz.

File metadata

  • Download URL: pytesira-0.1.2.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for pytesira-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e22d6a7e151c18a889d1a7a08d7d3897472205e4bce34354b513825ca79d1d91
MD5 c3fb722b71c8cd606a33154b9d1b2f08
BLAKE2b-256 b23f44877e08066bd7e644936b6065241497f4a8172d18c20cf14d133fc87fa4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytesira-0.1.2.tar.gz:

Publisher: publish.yml on enp6s0/pytesira

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytesira-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pytesira-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 28.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for pytesira-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7eea563cda1972a947708fcb9cc1d4ac100157590d3acdf71d8f21206c8cc499
MD5 4af2d7321da63847407e967de658462e
BLAKE2b-256 51f6e2d6082570c3e20a202f6f08ab0749f0ca253a585a359cc7dafde4175670

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytesira-0.1.2-py3-none-any.whl:

Publisher: publish.yml on enp6s0/pytesira

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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