FFFF
Skip to content

BaukeWestendorp/mvr-gdtf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mvr-gdtf

A Rust library for reading MVR and GDTF files and working with MVR-xchange networks.

⚠️ Warning > This library is in early development. APIs, features, and behavior may change frequently and without notice.

Overview

MVR (My Virtual Rig) and GDTF (General Device Type Format) are open standards used to describe lighting rigs and fixtures in entertainment production. While MVR files contain scene and rig data, GDTF files define the specific characteristics and geometry of individual fixtures.

Because these formats support thousands of devices across multiple manufacturers, their data structures are large and rely heavily on optional fields. This means it's non-trivial to read commonly used data like the channel count of a fixture's DMX mode. This often makes directly reading the structures verbose and difficult to manage.

mvr-gdtf abstracts this complexity by providing lookup tables and high-level helper functions. The goal is to let you extract the data you actually need without navigating the deep, nested specifications of the underlying XML. Though, if you want to manually find anything defined in the description files, you can.

Note: This library is currently read-only. Modifying or re-serializing MVR/GDTF data is not supported. Why?
This library is designed for parsing and extracting data from MVR and GDTF files, not for editing or generating them. Adding support for modification and re-serialization would mean managing the lookups would become a lot more complicated (and in some cases slower). In the future, I might reconsider adding serialization support if I find the time and a nice way to handle this.

Cargo Features

By default, no features are selected.

  • gdtf: Read GDTF files.
  • mvr: Read MVR files (uses gdtf).
  • xchange: Work with MVR-xchange networks.

Beta Release Roadmap

MVR-xchange (TCP Mode of protocol)

  • Automatically join stations in mDNS service.
  • Purge stations that have timed out.
  • Follow API guidelines
  • Sync API wrappers
  • Documentation
  • Handle MVR_JOIN
  • Handle MVR_LEAVE
  • Handle MVR_COMMIT
  • Handle MVR_REQUEST
  • Handle MVR_NEW_SESSION_HOST

MVR and GDTF

  • Completely parse shared files into Rust data types.
  • Completely parse GDTF files into Rust data types.
  • Completely parse MVR files into Rust data types.
  • Resource files management.
  • Add methods to get values directly from the parsed data (Maybe mirror libMVRgdtf).
  • Add lookups to get computed values (like channel counts or absolute DMX offsets) quickly.
  • Unit tests (Maybe mirror libMVRgdtf's testsuite).
  • Add usage examples.
  • Documentation.

Contributing

Contributions are welcome. If you find a file that this library fails to parse correctly or want to request a feature or suggest a change, feel free to open an issue!

License

This project is dual-licensed under:

  • MIT License
  • Apache License, Version 2.0

You may choose either license to govern your use of this project. See the LICENSE-MIT and LICENSE-APACHE files for details.

About

A Rust library for reading MVR and GDTF files working with MVR-xchange.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Contributors

Languages

0