# 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