124 lines
3.5 KiB
Markdown
124 lines
3.5 KiB
Markdown
# ETC PRS Viewer & Editor (Web-Based)
|
||
|
||
A modern, web-based viewer and editor for ETC Expression .prs personality files.
|
||
This tool allows you to inspect, modify, and export fixture personalities using an intuitive UI with support for 16-bit channel pairing, drag-and-drop reordering, and local file history.
|
||
|
||
# 🚀 Application Functionality
|
||
|
||
## Core Features
|
||
- Open & View PRS Files
|
||
- Load .prs files directly from your system
|
||
- Clean visual layout with card or table views
|
||
- Accurate parsing based on reverse-engineered binary structure
|
||
- Edit Personalities
|
||
- Modify channel attributes, flags, and home values
|
||
- Support for:
|
||
- Independent
|
||
- LTP
|
||
- 16-bit
|
||
- Flipped
|
||
- 16-bit channels are represented as a single unified card
|
||
- 16-bit Channel Handling
|
||
- Proper pairing based on actual binary flags (no heuristics)
|
||
- Editing applies correctly across paired channels
|
||
- Home/display values follow ETC’s storage behavior (stored in second channel)
|
||
- Drag-and-Drop Reordering
|
||
- Reorder channels using a dedicated drag handle
|
||
- 16-bit pairs move together as a single unit
|
||
- Prevents accidental dragging while editing inputs
|
||
- Export PRS Files
|
||
- Export valid .prs files from both:
|
||
- Viewer page
|
||
- Editor page
|
||
- Output matches ETC Personality Editor structure
|
||
## UI Features
|
||
- Global Menu Bar
|
||
- Open PRS File (auto-load on selection)
|
||
- Create New PRS File
|
||
- Previously Opened Files
|
||
- Snapshot Versions
|
||
- Secondary Control Bar (Contextual)
|
||
- Viewer:
|
||
- Switch to Editor
|
||
- Toggle Card/Table view
|
||
- Export PRS
|
||
- Editor:
|
||
- Add Channel
|
||
- Save Snapshot
|
||
- Export PRS
|
||
- Exit Editor
|
||
- Toggle Card/Table view
|
||
- View Modes
|
||
- Card-based layout for intuitive editing
|
||
- Table view for compact overview
|
||
|
||
## Data Persistence
|
||
Uses browser localStorage for:
|
||
Recently opened files
|
||
- Snapshot history
|
||
- No backend required
|
||
|
||
# 🛠️ How to Run the Program
|
||
Requirements:
|
||
- Node.js (v18+ recommended)
|
||
- npm
|
||
|
||
## Setup
|
||
### Install dependencies
|
||
```sh
|
||
npm install
|
||
```
|
||
### Run Development Server
|
||
|
||
```sh
|
||
npm run dev
|
||
```
|
||
|
||
Then open your browser to:
|
||
http://localhost:5173
|
||
|
||
## Build for Production
|
||
```sh
|
||
npm run build
|
||
npm run preview
|
||
```
|
||
## ⚠️ Ethical Disclosure
|
||
|
||
This project includes the use of AI-assisted development and reverse engineering techniques.
|
||
|
||
## AI Usage
|
||
|
||
Portions of this application—including:
|
||
- UI implementation
|
||
- Data handling logic
|
||
- Iterative refinement of features
|
||
|
||
were developed with the assistance of an AI system (ChatGPT).
|
||
All outputs were reviewed, tested, and refined by a human developer before inclusion.
|
||
|
||
## Reverse Engineering
|
||
|
||
The .prs file format used by ETC Expression lighting consoles is not publicly documented in full detail.
|
||
To support this application:
|
||
|
||
- The file format was analyzed through:
|
||
- Inspection of real .prs files
|
||
- Behavioral comparison with ETC’s Personality Editor
|
||
- Static analysis of the Personality Editor executable
|
||
- No proprietary source code was accessed or used.
|
||
- The reverse engineering was limited to understanding file structure for interoperability.
|
||
|
||
## Intent
|
||
|
||
This project is intended for:
|
||
- Educational purposes
|
||
- Interoperability and tooling
|
||
- Supporting legacy systems
|
||
|
||
It is not affiliated with or endorsed by ETC (Electronic Theatre Controls).
|
||
|
||
# 📌 Notes
|
||
|
||
- All file handling is local to your machine/browser
|
||
- No data is transmitted externally
|
||
- The application is designed to faithfully replicate ETC behavior where possible |