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.
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.
By default, no features are selected.
gdtf: Read GDTF files.mvr: Read MVR files (usesgdtf).xchange: Work with MVR-xchange networks.
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.
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!
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.