Commit Graph

14 Commits

Author SHA1 Message Date
Skyler Lehmkuhl 3d7cff9ad0 Stream audio & video from .beam container; waveform LOD pyramid + persistence
Migrate the .beam container to SQLite and stream media from it instead of
decoding whole files into RAM on import/load.

Container & large files:
- SQLite .beam container (beam_archive) with in-place transactional saves and an
  incremental BlobReader; supports both packed (chunked blobs) and referenced
  (external path) media, with a user preference + first-import prompt for files
  over the large-media threshold.

Audio streaming:
- Stream packed compressed audio on load via an inversion-of-control blob factory
  (AudioBlobSourceFactory): daw-backend defines the trait, core implements it
  over BlobReader, so the audio engine stays container-agnostic.
- Bulk-activate disk streaming for all loaded clips after SetProject.
- Sample-accurate compressed seek (SeekMode::Accurate; Coarse mislands on VBR).

Video:
- Video frames decoded/streamed on demand; thumbnails generated asynchronously
  on a dedicated decoder so import/load never blocks the UI.
- The video's audio track is streamed on demand via an ffmpeg VideoAudioReader
  as a separate editable AudioClip (no /tmp WAV extraction).

Waveform overview:
- Streaming min/max LOD pyramid (waveform_pyramid), bounded memory, configurable
  floor B; serialized into the container and restored on load (or generated in
  the background from the packed blob when absent), so no re-decode on reload.
- GPU min/max upload path; integer-LOD textureLoad fixes zoom-dependent wobble.
2026-06-17 13:52:38 -04:00
Skyler Lehmkuhl 3bc980d08d Use audio engine as source of truth for audio tracks 2026-03-11 12:37:31 -04:00
Skyler Lehmkuhl f924b4c0cd Stream audio instead of loading the whole thing into memory 2026-02-11 19:07:48 -05:00
Skyler Lehmkuhl 727d782190 initial audio export 2025-12-03 17:54:15 -05:00
Skyler Lehmkuhl a1ad0b44b1 Add support for audio trimming and looping 2025-11-28 06:53:28 -05:00
Skyler Lehmkuhl cbdd277184 Add audio export 2025-11-24 01:03:31 -05:00
Skyler Lehmkuhl e51a6b803d Add metronome 2025-11-06 10:59:25 -05:00
Skyler Lehmkuhl 9702a501bd add BPM detection 2025-11-02 09:53:34 -05:00
Skyler Lehmkuhl 2e9699b524 Add sampler nodes and startup screen 2025-10-28 01:32:51 -04:00
Skyler Lehmkuhl 16f4a2a359 Add audio node graph editing 2025-10-25 03:29:54 -04:00
Skyler Lehmkuhl 48ec738027 add recording and reset function 2025-10-22 20:06:02 -04:00
Skyler Lehmkuhl f9e2d36f3a add metatracks 2025-10-18 22:56:38 -04:00
Skyler Lehmkuhl 7ef562917a midi import in daw backend 2025-10-18 21:46:40 -04:00
Skyler Lehmkuhl 9414bdcd74 Work on daw backend 2025-10-18 18:09:07 -04:00