Go to file
Skyler Lehmkuhl 4228864259 Phase 3a-1: lazy fault-in of raster keyframe pixels
Raster keyframes are no longer eagerly decoded at load — `raw_pixels` stays empty
and is paged in on demand from the project container, so a big paint project opens
instantly and only touched frames hit RAM.

- core: `read_packed_media_readonly` (fresh read-only connection, can't conflict
  with an in-place save) + `RasterStore` (holds the container path; `load_pixels`
  reads+decodes a keyframe's PNG by id). `load_beam_sqlite` stops eager-decoding and
  instead marks every raster keyframe `needs_fault_in` (recursively, incl. nested);
  a freshly-created keyframe stays false (blank-resident, nothing to page). Added
  `Document::all_layers_mut`.
- editor: the canvas records a fault-in request when it needs a paged-out keyframe
  (empty pixels && needs_fault_in); the App drains the sink at the top of update(),
  pages the pixels in via the store, clears the flag, and repaints. Store path is set
  on load and after save. Export faults in synchronously per frame.

Cold-scrub still shows a 1-frame gap and the page-in is synchronous; the image proxy
(3a-2) and async load (3a-3) remove those next.
2026-06-19 16:59:46 -04:00
.github/workflows fix build issues 2026-06-02 13:52:32 -04:00
daw-backend Phase 5: fix broken unit tests; cargo test --lib green again 2026-06-19 16:45:23 -04:00
docs note nam build requirements 2026-03-01 10:47:13 -05:00
lightningbeam-core improve detection 2025-01-31 07:12:12 -05:00
lightningbeam-ui Phase 3a-1: lazy fault-in of raster keyframe pixels 2026-06-19 16:59:46 -04:00
nam-ffi Fix NAM runtime errors on linux 2026-03-06 06:37:25 -05:00
packaging Build Linux packages 2026-02-19 15:50:23 -05:00
screenshots Update readme 2025-11-23 21:58:34 -05:00
scripts Add automatable volume and pan control to default instruments 2026-03-23 23:27:05 -04:00
src Add automatable volume and pan control to default instruments 2026-03-23 23:27:05 -04:00
src-tauri Bump version to 1.0.4-alpha 2026-06-02 13:10:52 -04:00
tests work on tests 2025-11-12 08:52:16 -05:00
vendor deduplicate node list 2026-02-21 09:42:05 -05:00
.gitignore Build Linux packages 2026-02-19 15:50:23 -05:00
.gitmodules deduplicate node list 2026-02-21 09:42:05 -05:00
ARCHITECTURE.md Add initial docs 2026-02-11 19:10:58 -05:00
CONTRIBUTING.md Add initial docs 2026-02-11 19:10:58 -05:00
Changelog.md update changelog 2026-06-02 15:09:24 -04:00
LICENSE License under GPLv3 2026-02-25 00:52:06 -05:00
README.md Update README 2026-02-11 19:11:11 -05:00
create_release.sh update release script 2026-06-02 15:11:35 -04:00
package.json Record audio tracks 2025-10-23 01:08:45 -04:00
pnpm-lock.yaml Record audio tracks 2025-10-23 01:08:45 -04:00

README.md

Lightningbeam

A free and open-source 2D multimedia editor combining vector animation, audio production, and video editing in a single application.

Screenshots

Animation View

Music Editing View

Video Editing View

Features

Vector Animation

  • GPU-accelerated vector rendering with Vello
  • Draw and animate vector shapes with keyframe-based timeline
  • Non-destructive editing workflow
  • Paint bucket tool for automatic fill detection

Audio Production

  • Real-time multi-track audio recording and playback
  • Node graph-based effects processing
  • MIDI sequencing with synthesizers and samplers
  • Comprehensive effects library (reverb, delay, EQ, compression, distortion, etc.)
  • Custom audio engine with lock-free design for glitch-free playback

Video Editing

  • Video timeline and editing with FFmpeg-based decoding
  • GPU-accelerated waveform rendering with mipmaps
  • Audio integration from video soundtracks

Technical Stack

Current Implementation (Rust UI)

  • UI Framework: egui (immediate-mode GUI)
  • GPU Rendering: Vello + wgpu (Vulkan/Metal/DirectX 12)
  • Audio Engine: Custom real-time engine (daw-backend)
    • cpal for cross-platform audio I/O
    • symphonia for audio decoding
    • dasp for node graph processing
  • Video: FFmpeg 8 for encode/decode
  • Platform: Cross-platform (Linux, macOS, Windows)

Legacy Implementation (Deprecated)

  • Frontend: Vanilla JavaScript
  • Backend: Rust (Tauri framework)

Project Status

Lightningbeam is under active development on the rust-ui branch. The project has been rewritten from a Tauri/JavaScript prototype to a pure Rust application to eliminate IPC bottlenecks and achieve better performance for real-time video and audio processing.

Current Status:

  • Core UI panes (Stage, Timeline, Asset Library, Info Panel, Toolbar)
  • Drawing tools (Select, Draw, Rectangle, Ellipse, Paint Bucket, Transform)
  • Undo/redo system
  • GPU-accelerated vector rendering
  • Audio engine with node graph processing
  • GPU waveform rendering with mipmaps
  • Video decoding integration
  • 🚧 Export system (in progress)
  • 🚧 Node editor UI (planned)
  • 🚧 Piano roll editor (planned)

Getting Started

Prerequisites

  • Rust (stable toolchain via rustup)
  • System dependencies:
    • Linux: ALSA development files, FFmpeg 8
    • macOS: FFmpeg (via Homebrew)
    • Windows: FFmpeg 8, Visual Studio with C++ tools

See docs/BUILDING.md for detailed setup instructions.

Building and Running

# Clone the repository
git clone https://github.com/skykooler/lightningbeam.git
# Or from Gitea
git clone https://git.skyler.io/skyler/lightningbeam.git

cd lightningbeam/lightningbeam-ui

# Build and run
cargo run

# Or build optimized release version
cargo build --release

Documentation

Project History

Lightningbeam evolved from earlier multimedia editing projects I've worked on since 2010, including the FreeJam DAW. The JavaScript/Tauri prototype began in November 2023, and the Rust UI rewrite started in late 2024 to eliminate performance bottlenecks and provide a more integrated native experience.

Goals

Create a comprehensive FOSS alternative for 2D-focused multimedia work, integrating animation, audio, and video editing in a unified workflow. Lightningbeam aims to be:

  • Fast: GPU-accelerated rendering and real-time audio processing
  • Flexible: Node graph-based audio routing and modular synthesis
  • Integrated: Seamless workflow across animation, audio, and video
  • Open: Free and open-source, built on open standards

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

[License information to be added]