From 2e1485afb105e310e9a27ade7392b41a4048be0e Mon Sep 17 00:00:00 2001 From: Skyler Lehmkuhl Date: Sun, 23 Nov 2025 22:13:43 -0500 Subject: [PATCH] Update readme --- README.md | 144 ++++++++++++------------------------------------------ 1 file changed, 30 insertions(+), 114 deletions(-) diff --git a/README.md b/README.md index cc7d386..10a40cc 100644 --- a/README.md +++ b/README.md @@ -1,133 +1,49 @@ # Lightningbeam -An open-source vector animation tool built with Tauri. A spiritual successor to Macromedia Flash 8 / Adobe Animate. +A free and open-source 2D multimedia editor combining vector animation, audio production, and video editing in a single application. -[![Version](https://img.shields.io/badge/version-0.7.14--alpha-orange)](https://github.com/skykooler/Lightningbeam/releases) +## Screenshots -## Overview +![Animation View](screenshots/animation.png) +![Music Editing View](screenshots/music.png) +![Video Editing View](screenshots/video.png) -Lightningbeam is a cross-platform vector animation application for creating keyframe-based animations and interactive content. Originally started in 2010 as an open-source alternative to Adobe Flash, the project has been rewritten using modern web technologies (JavaScript/Canvas) with a Tauri-based native desktop application wrapper. +## Current Features -## Current Status +**Vector Animation** +- Draw and animate vector shapes with keyframe-based timeline +- Non-destructive editing workflow -**⚠️ Alpha Software**: Lightningbeam is in active development and not yet feature-complete. The codebase is currently undergoing significant refactoring, particularly the timeline system which is being migrated from frame-based to curve-based animation. +**Audio Production** +- Multi-track audio recording +- MIDI sequencing with synthesized and sampled instruments +- Integrated DAW functionality -Current branch `new_timeline` implements a major timeline redesign inspired by GarageBand, featuring hierarchical tracks and animation curve visualization. +**Video Editing** +- Basic video timeline and editing (early stage) +- FFmpeg-based video decoding -## Features +## Technical Stack -Current functionality includes: +- **Frontend:** Vanilla JavaScript +- **Backend:** Rust (Tauri framework) +- **Audio:** cpal + dasp for audio processing +- **Video:** FFmpeg for decode -- **Vector Drawing Tools**: Pen, brush, line, rectangle, ellipse, polygon tools -- **Keyframe Animation**: Timeline-based animation with interpolation -- **Shape Tweening**: Morph between different vector shapes -- **Motion Tweening**: Smooth object movement with curve-based interpolation -- **Layer System**: Multiple layers with visibility controls -- **Hierarchical Objects**: Group objects and edit nested timelines -- **Audio Support**: Import MP3 audio files -- **Video Export**: Export animations as MP4 or WebM -- **Transform Tools**: Move, rotate, and scale objects -- **Color Tools**: Color picker, paint bucket with flood fill -- **Undo/Redo**: Full history management -- **Copy/Paste**: Duplicate objects and keyframes +## Project Status -## Installation +Lightningbeam is under active development. Current focus is on core functionality and architecture. Full project export is not yet fully implemented. -### Pre-built Releases +### Known Architectural Challenge -Download the latest release for your platform from the [Releases page](https://github.com/skykooler/Lightningbeam/releases). +The current Tauri implementation hits IPC bandwidth limitations when streaming decoded video frames from Rust to JavaScript. Tauri's IPC layer has significant serialization overhead (~few MB/s), which is insufficient for real-time high-resolution video rendering. -Supported platforms: -- Linux (AppImage, .deb, .rpm) -- macOS -- Windows -- Web (limited functionality) +I'm currently exploring a full Rust rewrite using wgpu/egui to eliminate the IPC bottleneck and handle rendering entirely in native code. -### Building from Source +## Project History -**Prerequisites:** -- [pnpm](https://pnpm.io/) package manager -- [Rust](https://rustup.rs/) toolchain (installed automatically by Tauri) -- Platform-specific dependencies for Tauri (see [Tauri Prerequisites](https://tauri.app/v1/guides/getting-started/prerequisites)) +Lightningbeam evolved from earlier multimedia editing projects I've worked on since 2010, including the FreeJam DAW. The current JavaScript/Tauri iteration began in November 2023. -**Build steps:** +## Goals -```bash -# Clone the repository -git clone https://github.com/skykooler/Lightningbeam.git -cd Lightningbeam - -# Install dependencies -pnpm install - -# Run in development mode -pnpm tauri dev - -# Build for production -pnpm tauri build -``` - -**Note for Linux users:** `pnpm tauri dev` works on any distribution, but `pnpm tauri build` currently only works on Ubuntu due to limitations in Tauri's AppImage generation. If you're on a non-Ubuntu distro, you can build in an Ubuntu container/VM or use the development mode instead. - -## Quick Start - -1. Launch Lightningbeam -2. Create a new file (File → New) -3. Select a drawing tool from the toolbar -4. Draw shapes on the canvas -5. Create keyframes on the timeline to animate objects -6. Use motion or shape tweens to interpolate between keyframes -7. Export your animation (File → Export → Video) - -## File Format - -Lightningbeam uses the `.beam` file extension. Files are stored in JSON format and contain all project data including vector shapes, keyframes, layers, and animation curves. - -**Note**: The file format specification is not yet documented and may change during development. - -## Known Limitations - -### Platform-Specific Issues - -- **Linux**: Pinch-to-zoom gestures zoom the entire window instead of individual canvases. This is a [known Tauri/GTK WebView limitation](https://github.com/tauri-apps/tauri/discussions/3843) with no current workaround. -- **macOS**: Limited testing; some platform-specific bugs may exist. -- **Windows**: Minimal testing; application has been confirmed to run but may have undiscovered issues. - -### Web Version Limitations - -The web version has several limitations compared to desktop: -- Restricted file system access -- Keyboard shortcut conflicts with browser -- Higher audio latency -- No native file association -- Memory limitations with video export - -### General Limitations - -- The current timeline system is being replaced; legacy frame-based features may be unstable -- Many features and optimizations are still in development -- Performance benchmarking has not been completed -- File format may change between versions - -## Contributing - -Contributions are currently limited while the codebase undergoes restructuring. Once the timeline refactor is complete and the code is better organized, the project will be more open to external contributions. - -If you encounter bugs or have feature requests, please open an issue on GitHub. - -## Credits - -Lightningbeam is built with: -- [Tauri](https://tauri.app/) - Desktop application framework -- [FFmpeg](https://ffmpeg.org/) - Video encoding/decoding -- Various JavaScript libraries for drawing, compression, and utilities - -## License - -**License not yet determined.** The author is considering the MIT License for maximum simplicity and adoption. Contributors should await license clarification before submitting code. - ---- - -**Repository**: https://github.com/skykooler/Lightningbeam -**Version**: 0.7.14-alpha -**Status**: Active Development +Create a comprehensive FOSS alternative for 2D-focused multimedia work, integrating animation, audio, and video editing in a unified workflow. \ No newline at end of file