{"id":20023670,"url":"https://github.com/meshula/labraven","last_synced_at":"2026-03-01T03:34:37.816Z","repository":{"id":261921822,"uuid":"885728268","full_name":"meshula/LabRaven","owner":"meshula","description":"prototype fork of OpenTimelineIO/raven to experiment with the architecture","archived":false,"fork":false,"pushed_at":"2025-08-05T16:10:05.000Z","size":13008,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-05T18:11:41.906Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meshula.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-09T08:28:53.000Z","updated_at":"2025-08-05T16:10:12.000Z","dependencies_parsed_at":"2024-11-09T09:29:08.805Z","dependency_job_id":"e02c415c-22d5-4fb5-811a-7a7f53f05fde","html_url":"https://github.com/meshula/LabRaven","commit_stats":null,"previous_names":["meshula/labraven"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/meshula/LabRaven","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshula%2FLabRaven","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshula%2FLabRaven/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshula%2FLabRaven/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshula%2FLabRaven/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meshula","download_url":"https://codeload.github.com/meshula/LabRaven/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshula%2FLabRaven/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29959400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T01:47:18.291Z","status":"online","status_checked_at":"2026-03-01T02:00:07.437Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T08:47:28.966Z","updated_at":"2026-03-01T03:34:37.803Z","avatar_url":"https://github.com/meshula.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LabRaven\n\n**LabRaven** is a modular, plugin-based multimedia application framework designed for color science exploration, timeline editing, USD authoring, and interactive media tools. Originally refactored from OpenTimelineIO/Raven, it features a sophisticated Studio-Activity-Provider architecture that enables flexible, composable workflows.\n\n![Screenshot](./doc/screenshot.jpg)\n\n## Overview\n\nLabRaven implements a unique plugin architecture where:\n- **Activities** are discrete, composable pieces of functionality (color tools, timeline editing, camera controls, etc.)\n- **Studios** are workspace configurations that activate and coordinate sets of Activities\n- **Providers** are singleton services that supply data and functionality to Activities\n- **Orchestrator** manages the coordination between Studios, Activities, and Providers\n\nThe first major Activity is a sophisticated **color science exploration tool** featuring spectral analysis, color matching functions, and perceptual color rendering. The original Raven timeline functionality is being reintroduced as a new Activity.\n\n## Key Features\n\n### Color Science Studio\n- CIE 1964 10-degree Spectral Locus visualization\n- Photoreceptor sensitivity plots (cone response curves)\n- Color Matching Functions (CMF) visualization\n- Spectral response curve editing\n- Multiple color space support (sRGB, Display P3, Rec.2020, ACES)\n- Planckian locus display\n- ISO17321 chart support\n\n### OpenUSD Integration\n- USD scene authoring and inspection\n- Hydra rendering integration\n- Component editing tools\n- USD insights and analysis\n\n### Timeline Editing\n- OpenTimelineIO (OTIO) integration\n- Media sequencing and composition\n- Timeline manipulation\n\n### Additional Features\n- **Plugin System**: Dynamic plugin loading with hot-reload support\n- **Animation**: Skeletal animation with ozz-animation and BVH support\n- **Audio/MIDI**: LabSound audio engine with MIDI input/output\n- **2D Graphics**: Tilengine integration for sprites and tiles\n- **Developer Tools**: Interactive console, node graph editor, transaction journal (undo/redo)\n\n## Architecture\n\nLabRaven uses a **CSP (Communicating Sequential Processes)** engine built on ZeroMQ for event-driven behavior. The architecture separates concerns into:\n\n- **Core Framework** (`src/Lab/`) - Application infrastructure, CSP engine, Studio architecture\n- **Activities** (`src/Activities/`) - Pluggable UI/functionality modules\n- **Providers** (`src/Providers/`) - Data and service providers\n- **Studios** (`src/Studios/`) - Workspace configurations\n\n### Current Studios\n- **Color Studio** - Color science exploration and analysis\n- **OpenUSD Studio** - USD scene authoring\n- **OpenUSD Insights Studio** - USD analysis and debugging\n- **Texture Studio** - Texture creation and inspection\n\n## Technologies\n\n### Core Stack\n- **Language**: C++20\n- **Build System**: CMake 3.26+\n- **GUI**: Dear ImGui (immediate mode UI)\n- **Graphics**: OpenGL 3+ / Metal (macOS)\n- **Window Management**: GLFW\n- **Platforms**: macOS, Windows, Linux, Emscripten (WebAssembly)\n\n### Major Dependencies\n- **OpenTimelineIO** - Timeline and media sequencing\n- **OpenUSD** (Pixar USD) - Universal Scene Description (optional)\n- **ImGui/ImPlot/ImGuizmo** - Immediate mode UI framework\n- **LabSound** - Audio engine\n- **LabMidi** (rtmidi) - MIDI support\n- **Tilengine** - 2D graphics engine\n- **OpenEXR** - High dynamic range images\n- **ZeroMQ** - Message queue for CSP\n- **ozz-animation** - Skeletal animation\n- **nanocolor** - Color science library (custom)\n\n## Building\n\n### Prerequisites\n- CMake 3.26 or higher\n- C++20 compatible compiler\n  - macOS: Xcode 14+ (Clang)\n  - Windows: Visual Studio 2022 or MinGW\n  - Linux: GCC 11+ or Clang 14+\n- OpenGL 3.0+ or Metal (macOS)\n- Optional: OpenUSD installation (set `pxr_DIR` environment variable)\n\n### Build Steps\n\n```bash\n# Clone the repository\ngit clone \u003crepository-url\u003e\ncd LabRaven\n\n# Create build directory\nmkdir build\ncd build\n\n# Configure\ncmake ..\n\n# Build\ncmake --build .\n\n# On macOS, this creates raven.app bundle\n# On Windows/Linux, creates raven executable\n```\n\n### Build Options\n\nConfigure with CMake options to enable/disable features:\n\n```bash\ncmake -DHAVE_MIDI=ON \\\n      -DHAVE_OPENEXR=ON \\\n      -DHAVE_SOUND=ON \\\n      -DHAVE_OTIO=ON \\\n      -DHAVE_IMGUIZMO=ON \\\n      -DHAVE_TILENGINE=ON \\\n      -DHAVE_OPENUSD=ON \\\n      ..\n```\n\nAvailable options:\n- `APPLE_MAKE_BUNDLE` - Create macOS application bundle (default: ON)\n- `HAVE_MIDI` - Enable MIDI support (default: ON)\n- `HAVE_OPENEXR` - Enable OpenEXR support (default: ON)\n- `HAVE_SOUND` - Enable audio support (default: ON)\n- `HAVE_OTIO` - Enable OpenTimelineIO support (default: ON)\n- `HAVE_IMGUIZMO` - Enable ImGuizmo 3D gizmos (default: ON)\n- `HAVE_TILENGINE` - Enable Tilengine 2D engine (default: ON)\n- `HAVE_OPENUSD` - Enable OpenUSD support (default: ON)\n\n### Platform-Specific Notes\n\n#### macOS\n- Creates universal binary (arm64 + x86_64)\n- Automatic code signing\n- Metal shaders compiled automatically\n- Plugins installed to `raven.app/Contents/MacOS/plugins/`\n\n#### Windows\n- Supports DirectX 11 backend\n- Unicode enabled\n\n#### Emscripten (WebAssembly)\n- Build with Emscripten SDK\n- Uses SDL2 backend\n- Shared memory and pthreads support\n\n## Running\n\n### macOS\n```bash\nopen build/raven.app\n```\n\n### Windows/Linux\n```bash\n./build/raven\n```\n\n## Project Structure\n\n```\nLabRaven/\n├── src/\n│   ├── Lab/              # Core framework\n│   ├── Activities/       # Activity modules\n│   ├── Providers/        # Service providers\n│   ├── Studios/          # Studio configurations\n│   └── resources/        # Embedded resources\n├── ext/                  # External dependencies\n├── cmake-scripts/        # CMake utilities\n├── examples/             # Example code\n└── doc/                  # Documentation\n```\n\n## Extending LabRaven\n\n### Creating a New Activity\n\nActivities are auto-registered via CMake. To create a new Activity:\n\n1. Create a directory in `src/Activities/YourActivity/`\n2. Add your Activity implementation\n3. Add to `src/Activities/CMakeLists.txt`\n4. CMake will automatically generate registration code\n\n### Creating a Plugin\n\nSee `examples/zig_plugin/` for a plugin example. Plugins can be written in any language that can export C-compatible functions.\n\n## Development\n\n### Auto-Generated Code\n\nThe build system automatically generates:\n- `RegisterAllActivities.cpp` - Activity registration\n- Metal shader compilation (macOS)\n- Resource embedding\n\n### Transaction System\n\nLabRaven includes a comprehensive undo/redo system based on transactions and journaling. All state changes should be wrapped in transactions.\n\n### CSP Engine\n\nActivities can implement CSP state machines for event-driven behavior using the ZeroMQ-based CSP engine.\n\n## License\n\nLicensed under the Apache License 2.0. See [LICENSE.txt](LICENSE.txt) for details.\n\n## Contributing\n\nContributions are welcome! Please ensure:\n- Code follows C++20 standards\n- Activities are properly modular\n- Changes work across platforms (macOS, Windows, Linux)\n- Documentation is updated\n\n## Acknowledgments\n\n- Built on [Dear ImGui](https://github.com/ocornut/imgui)\n- Uses [OpenTimelineIO](https://github.com/AcademySoftwareFoundation/OpenTimelineIO)\n- Color science powered by custom nanocolor library\n- Originally forked from OpenTimelineIO/Raven\n\n## Contact\n\nFor questions, issues, or contributions, please open an issue on the project repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshula%2Flabraven","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeshula%2Flabraven","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshula%2Flabraven/lists"}