- Add MIT LICENSE (Thorsten Buss) with attribution to the upstream MIT-licensed greyshirtguy/ProPresenter7-Proto definitions. - Add comprehensive README.md: badges, feature matrix, install, seven runnable getting-started examples (read/modify/generate songs, playlists, bundles, global libraries), CLI tool reference, documentation index, project structure, caveats. - Update composer.json with package name (bussnet/propresenter7-php-api), MIT license, keywords, author, homepage, support URLs, dev autoload, and a `composer test` script. - Polish doc/INDEX.md, doc/keywords.md, and doc/CONTRIBUTING.md so they read well for both humans and AI assistants; remove README-duplicate content from INDEX.md and link to the top-level README instead. - Expand .gitignore to cover IDE/OS metadata and agent workspaces. All 370 tests still pass (9,200 assertions). README examples #3 and #5 verified end-to-end (generate -> read back -> assert metadata).
7.9 KiB
7.9 KiB
ProPresenter 7 PHP API — Documentation
Comprehensive reference for the ProPresenter 7 PHP API library.
Each document is self-contained — open the one that matches your task. If you don't know which to load, search keywords.md or scan the table below.
Quick Navigation
| Need | Load |
|---|---|
Parse/modify .pro song files |
api/song.md |
Parse/modify .proplaylist files |
api/playlist.md |
Parse/modify .probundle files |
api/bundle.md |
Read/write the global Macros file |
api/macros.md |
Read/write the global Labels file |
api/labels.md |
Read/write the global Groups file |
api/groups.md |
Read/write the global ClearGroups file |
api/clear-groups.md |
Read/write the global CCLI file |
api/ccli.md |
Read/write the global Messages file |
api/messages.md |
Read/write the global Timers file |
api/timers.md |
Read/write the global Stage file |
api/stage.md |
Read/write the global Workspace file |
api/workspace.md |
Read/write the global Props file |
api/props.md |
Read/write the global TestPatterns file |
api/test-patterns.md |
Read/write the global Calendar file |
api/calendar.md |
Read/write the global KeyMappings file |
api/key-mappings.md |
Read/write the global CommunicationDevices JSON file |
api/communication-devices.md |
| Read/write theme folders (Theme + Assets/) | api/theme.md |
Understand .pro binary format |
formats/pp_song_spec.md |
Understand .proplaylist format |
formats/pp_playlist_spec.md |
Understand .probundle format |
formats/pp_bundle_spec.md |
| Add new documentation | CONTRIBUTING.md |
| Search by keyword | keywords.md |
Table of Contents
File Format Specifications
- formats/pp_song_spec.md — ProPresenter 7
.profile format (protobuf structure, RTF handling, field reference) - formats/pp_playlist_spec.md — ProPresenter 7
.proplaylistfile format (ZIP64 container, item types) - formats/pp_bundle_spec.md — ProPresenter 7
.probundlefile format (ZIP container, media assets)
PHP API Documentation
Document containers
- api/song.md — Song parser API (read, modify, generate
.profiles) - api/playlist.md — Playlist parser API (read, modify, generate
.proplaylistfiles) - api/bundle.md — Bundle parser API (read, write
.probundlefiles with media) - api/theme.md — Theme bundle API (folder with
Themeproto +Assets/)
Global library files (read + write)
- api/macros.md —
Macroslibrary (macros + collections, with editable accessors) - api/labels.md —
Labelslibrary (named slide labels with optional UI colors) - api/groups.md —
Groupslibrary (named library groups with UUID, color, hot keys) - api/clear-groups.md —
ClearGroupslibrary (clear-action groups) - api/ccli.md —
CCLIsettings (license, display behaviour, copyright template) - api/messages.md —
Messageslibrary (lower-third / overlay messages) - api/timers.md —
Timerslibrary (timer definitions + clock format) - api/stage.md —
Stagedocument (stage display layouts) - api/workspace.md —
Workspacedocument (screens, looks, masks, audio/video inputs) - api/props.md —
Propsdocument (prop cues + transition) - api/test-patterns.md —
TestPatternsdocument (currently selected pattern + saved overrides) - api/calendar.md —
Calendardocument (scheduled events firing macros) - api/key-mappings.md —
KeyMappingsdocument (custom hot-key bindings) - api/communication-devices.md —
CommunicationDevicesJSON list (MIDI / serial / OSC bindings)
Internal Reference
- internal/learnings.md — Development learnings and conventions discovered
- internal/decisions.md — Architectural decisions and rationale
- internal/issues.md — Known issues and edge cases
Meta
- keywords.md — Searchable keyword index
- CONTRIBUTING.md — How to document new features
Directory Structure
doc/
├── INDEX.md ← You are here (main entry point)
├── keywords.md ← Keyword search index
├── CONTRIBUTING.md ← Documentation guidelines
├── formats/ ← File format specifications
│ ├── pp_song_spec.md
│ ├── pp_playlist_spec.md
│ └── pp_bundle_spec.md
├── api/ ← PHP API documentation
│ ├── song.md
│ ├── playlist.md
│ ├── bundle.md
│ ├── theme.md
│ ├── macros.md
│ ├── labels.md
│ ├── groups.md
│ ├── clear-groups.md
│ ├── ccli.md
│ ├── messages.md
│ ├── timers.md
│ ├── stage.md
│ ├── workspace.md
│ ├── props.md
│ ├── test-patterns.md
│ ├── calendar.md
│ ├── key-mappings.md
│ └── communication-devices.md
└── internal/ ← Development notes (optional context)
├── learnings.md
├── decisions.md
└── issues.md
What to Read for Each Task
| Task | Read |
|---|---|
| Parse a song file | api/song.md |
| Generate a new playlist | api/playlist.md |
Read or write a .probundle |
api/bundle.md |
| Edit a global library file (Macros, Labels, Groups, …) | api/.md |
| Round-trip a theme folder with assets | api/theme.md + api/bundle.md |
| Debug protobuf parsing issues | formats/pp_song_spec.md §2–5 |
| Understand translation handling | api/song.md (Translations) + formats/pp_song_spec.md §7 |
| Fix ZIP64 issues | formats/pp_playlist_spec.md §4 + formats/pp_bundle_spec.md §4 |
| Check internal notes / known bugs | internal/issues.md, internal/learnings.md |
Project Overview
For installation, getting started, and a high-level feature tour see the top-level README.
In short, this library covers:
- Songs (
.pro) — protobuf files with lyrics, groups, slides, arrangements, translations - Playlists (
.proplaylist) — ZIP64 archives with embedded songs and media - Bundles (
.probundle) — ZIP archives bundling a single song with its media assets - Themes — folder with a
Themeprotobuf and anAssets/directory - Global library files —
Macros,Labels,Groups,ClearGroups,CCLI,Messages,Timers,Stage,Workspace,Props,TestPatterns,Calendar,KeyMappings,CommunicationDevices(JSON)
CLI Tools
Every supported file type ships with an inspector script in bin/. Examples:
php bin/parse-song.php path/to/song.pro
php bin/parse-playlist.php path/to/playlist.proplaylist
php bin/parse-theme.php path/to/ThemeFolder
php bin/parse-macros.php path/to/Macros
# … and one for every other global library file
See the README for the full list.