Skip to main content

pyvmancer

Python library and CLI to automate the LZX Industries Videomancer over USB.

Two control paths, usable together or independently:

Path Transport Covers
USB MIDI ALSA rawmidi or any mido backend 12 parameters (7/14-bit CC), preset recall, note triggers, clock/transport
USB serial /dev/ttyACM* or libusb programs, presets, modulation operators, video, settings, filesystem

Install

pip install pyvmancer            # MIDI only
pip install "pyvmancer[all]"     # adds serial and libusb transports

On Linux the python-rtmidi dependency links libasound.so.2:

sudo apt-get install libasound2t64

Use

import pyvmancer as vm

d = vm.Videomancer.open()

d.load_program("Isotherm")
d.set_named("Posterize", 5)        # native units: Posterize is 0..7
d.set_named("Mix", 80)             # Mix is 0..100
d.set_source("Contrast", "free lfo")

d.set_param(1, 0.75)               # or address slots directly, 0.0..1.0
d.set_param(7, True)               # toggles take bools
d.trigger(4)                       # note-trigger a modulation operator

d.set_bpm(128)
d.play()
d.close()

Device knowledge the library encodes, rather than leaving to each caller:

d.park()                           # manual values to a reference, so a CC is absolute
p = d.parameter("Posterize")       # p.role, p.steps, p.sample_values()
d.program_manifest().get("combing").description
d.file_hash("sd:/programs/lzx/combing.vmprog")
d.video_state().source_locked      # per-input lock, not the genlock flag
d.resync()                         # bounce the timing to re-init the output raster

MIDI only, no serial link needed:

with vm.open_midi(channel=1) as m:
    m.set_param(1, 0.5)
    m.select_preset(3)
    m.run_clock(120, beats=8)

CLI

vmancer devices                 # discover attached units and their device nodes
vmancer operators               # list the 25 modulation operators
vmancer set 1=0.5 7=on          # set parameters over MIDI
vmancer preset 3                # recall a preset
vmancer programs                # list installed FPGA programs
vmancer load Isotherm           # load a program
vmancer manifest                # SD program library metadata
vmancer hash sd:/programs/x.vmprog
vmancer resync                  # recover an output that stopped passing frames
vmancer shell modulation status # run any raw shell command

Permissions

MIDI needs read/write on /dev/snd/midiC*D* (usually granted by a desktop ACL); serial needs the dialout group or an ACL on /dev/ttyACM*. See docs/permissions.md.

Docs

Status

Verified against a Videomancer running firmware 1.0.0-rc.37 and 1.0.0-rc.40. Not affiliated with LZX Industries.

License

Apache-2.0

Download files

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

Source Distribution

pyvmancer-0.2.0.tar.gz (74.9 kB view details)

Uploaded Source

Built Distribution

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

pyvmancer-0.2.0-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file pyvmancer-0.2.0.tar.gz.

File metadata

  • Download URL: pyvmancer-0.2.0.tar.gz
  • Upload date:
  • Size: 74.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyvmancer-0.2.0.tar.gz
Algorithm Hash digest
SHA256 945e4eb09e08f63a313e563cc04badc809e89f8e1673bdcf6da0fe285616d40b
MD5 dc512330891e7acb3950ac0ae6a807d0
BLAKE2b-256 1d9634a255caf29d23710aff3c8493c02569f8791dea25eaa90154108ad65673

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvmancer-0.2.0.tar.gz:

Publisher: release.yml on anarkiwi/pyvmancer

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

File details

Details for the file pyvmancer-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyvmancer-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 40.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pyvmancer-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b8569c09bf17c2635c081c491886c820e5c3ac39364712f24485fe029ec3b91
MD5 a1c053fb36e5644dbba31757f2dab36c
BLAKE2b-256 9a6716124b1c3cee6510f4109e4c2db903932e8c3e4490dfe79116f58e038390

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyvmancer-0.2.0-py3-none-any.whl:

Publisher: release.yml on anarkiwi/pyvmancer

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

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

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