Lightningbeam/daw-backend
Skyler Lehmkuhl d001ca1083 Fix save crash on zero/sparse-audio projects (phantom pool placeholder)
`AudioPool::load_from_serialized` sizes the slot Vec by pool_index and fills gaps
with empty `AudioFile::new(PathBuf::new(), …)` placeholders. Two bugs let a
placeholder reach the next save and abort it with "Is a directory":

- Off-by-one: `entries.max().unwrap_or(0) + 1` made an *empty* pool length 1, so a
  project with no audio still got one placeholder. Size by `max(pool_index + 1)`
  → empty entries yield length 0.
- `serialize()` emitted placeholder slots: an empty path round-trips to
  `relative_path = Some("")`, which `save_beam` resolves to the project directory
  (`join("")`) and tries to read as media. Skip empty-path / no-packed-media slots.
- Defense in `save_beam`: gate referenced-media packing on `full.is_file()` (not
  `exists()`), so any blank/dir path falls through to embedded data instead of
  reading a directory.

Pre-existing; surfaced by a save → reload → save cycle on a raster-only project.
2026-06-20 18:46:19 -04:00
..
examples midi import in daw backend 2025-10-18 21:46:40 -04:00
src Fix save crash on zero/sparse-audio projects (phantom pool placeholder) 2026-06-20 18:46:19 -04:00
tests Stream audio & video from .beam container; waveform LOD pyramid + persistence 2026-06-17 13:52:38 -04:00
C2.mp3 Work on daw backend 2025-10-18 18:09:07 -04:00
Cargo.lock Add automatable volume and pan control to default instruments 2026-03-23 23:27:05 -04:00
Cargo.toml Add automation inputs for audio graphs 2026-03-18 11:25:48 -04:00
darude-sandstorm.mid midi import in daw backend 2025-10-18 21:46:40 -04:00
daw_architecture_doc.md Work on daw backend 2025-10-18 18:09:07 -04:00
test.wav Work on daw backend 2025-10-18 18:09:07 -04:00
ttls.mid Add audio node graph editing 2025-10-25 03:29:54 -04:00