Update readme

This commit is contained in:
Skyler Lehmkuhl 2025-11-23 22:13:43 -05:00
parent b3fe9eaabe
commit 2e1485afb1
1 changed files with 30 additions and 114 deletions

144
README.md
View File

@ -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.