max / audiofiles
1 file changed,
+12 insertions,
-12 deletions
| @@ -1,12 +1,12 @@ | |||
| 1 | 1 | # audiofiles | |
| 2 | 2 | ||
| 3 | - | A sample manager with content-addressed storage and a virtual file system. Standalone desktop app built with Rust, egui, and SQLite. | |
| 3 | + | A sample manager with content-addressed storage and a virtual file system. Standalone desktop app built with [Rust](https://www.rust-lang.org/), [egui](https://github.com/emilk/egui), and [SQLite](https://sqlite.org/). | |
| 4 | 4 | ||
| 5 | 5 | ## Prerequisites | |
| 6 | 6 | ||
| 7 | - | - **Rust** (stable toolchain, 2021 edition) | |
| 7 | + | - **[Rust](https://www.rust-lang.org/)** (stable toolchain, 2021 edition) | |
| 8 | 8 | ||
| 9 | - | No platform-specific audio libraries are required. Audio decoding uses Symphonia (pure Rust), SQLite is bundled via rusqlite, and the standalone app uses cpal for system audio output. | |
| 9 | + | No platform-specific audio libraries are required. Audio decoding uses [Symphonia](https://github.com/pdeljanov/Symphonia) (pure Rust), SQLite is bundled via [rusqlite](https://github.com/rusqlite/rusqlite), and the standalone app uses [cpal](https://github.com/RustAudio/cpal) for system audio output. | |
| 10 | 10 | ||
| 11 | 11 | ## Build and Run | |
| 12 | 12 | ||
| @@ -27,11 +27,11 @@ Five crates: | |||
| 27 | 27 | ||
| 28 | 28 | | Crate | Path | Role | | |
| 29 | 29 | |-------|------|------| | |
| 30 | - | | `audiofiles-core` | `crates/audiofiles-core/` | Domain library. SQLite database, content-addressed store (SHA-256), audio decoding (Symphonia), analysis pipeline (loudness, BPM, key, spectral, classification), VFS, tag system. | | |
| 31 | - | | `audiofiles-browser` | `crates/audiofiles-browser/` | Shared egui UI. File list, detail panel, waveform display, search/filter, import wizard, analysis progress, export, themes. | | |
| 32 | - | | `audiofiles-app` | `crates/audiofiles-app/` | Standalone desktop app via eframe. System audio output (cpal), drag-and-drop import, native drag-out to Finder/DAWs, CLI argument import, OTA updates. | | |
| 33 | - | | `audiofiles-sync` | `crates/audiofiles-sync/` | Cloud sync integration via SyncKit. Pushes/pulls sample metadata, tags, and VFS structure across devices. E2E encrypted. | | |
| 34 | - | | `audiofiles-rhai` | `crates/audiofiles-rhai/` | Rhai scripting engine for device export profiles. Transforms sample metadata and file layout for 14 hardware samplers. | | |
| 30 | + | | `audiofiles-core` | `crates/audiofiles-core/` | Domain library. [SQLite](https://sqlite.org/) database, content-addressed store (SHA-256), audio decoding ([Symphonia](https://github.com/pdeljanov/Symphonia)), analysis pipeline (loudness, BPM, key, spectral, classification), VFS, tag system. | | |
| 31 | + | | `audiofiles-browser` | `crates/audiofiles-browser/` | Shared [egui](https://github.com/emilk/egui) UI. File list, detail panel, waveform display, search/filter, import wizard, analysis progress, export, themes. | | |
| 32 | + | | `audiofiles-app` | `crates/audiofiles-app/` | Standalone desktop app via [eframe](https://github.com/emilk/egui/tree/master/crates/eframe). System audio output ([cpal](https://github.com/RustAudio/cpal)), drag-and-drop import, native drag-out to Finder/DAWs, CLI argument import, OTA updates. | | |
| 33 | + | | `audiofiles-sync` | `crates/audiofiles-sync/` | Cloud sync integration via [SyncKit](https://makenot.work). Pushes/pulls sample metadata, tags, and VFS structure across devices. E2E encrypted. | | |
| 34 | + | | `audiofiles-rhai` | `crates/audiofiles-rhai/` | [Rhai](https://rhai.rs/) scripting engine for device export profiles. Transforms sample metadata and file layout for 14 hardware samplers. | | |
| 35 | 35 | ||
| 36 | 36 | Dependency flow: `audiofiles-core` is the leaf -> `audiofiles-rhai` and `audiofiles-sync` depend on core -> `audiofiles-browser` depends on core, sync, and rhai -> `audiofiles-app` depends on browser and core. | |
| 37 | 37 | ||
| @@ -42,13 +42,13 @@ Dependency flow: `audiofiles-core` is the leaf -> `audiofiles-rhai` and `audiofi | |||
| 42 | 42 | - **Analysis pipeline** -- loudness (peak/RMS/LUFS), BPM detection, key detection, spectral analysis, loop detection, classification into 12 categories | |
| 43 | 43 | - **Tag system** -- hierarchical dot-notation tags with auto-suggestions from analysis results | |
| 44 | 44 | - **Search and filtering** -- text search, BPM/duration ranges, key selector, classification filters, tag prefix matching, smart folders | |
| 45 | - | - **Rhai export engine** -- scriptable device profiles for exporting to 14 hardware samplers (SP-404, Digitakt, MPC, Deluge, OP-1, etc.) | |
| 46 | - | - **Cloud sync** -- cross-device sync of metadata, tags, and VFS via SyncKit (E2E encrypted, ChaCha20-Poly1305 + Argon2) | |
| 45 | + | - **[Rhai](https://rhai.rs/) export engine** -- scriptable device profiles for exporting to 14 hardware samplers (SP-404, Digitakt, MPC, Deluge, OP-1, etc.) | |
| 46 | + | - **Cloud sync** -- cross-device sync of metadata, tags, and VFS via [SyncKit](https://makenot.work) (E2E encrypted, [ChaCha20-Poly1305](https://docs.rs/chacha20poly1305) + [Argon2](https://docs.rs/argon2)) | |
| 47 | 47 | - **Native drag-out** -- drag samples from the file list directly to Finder, Desktop, or any DAW | |
| 48 | 48 | - **MIDI instrument** -- chromatic and multi-sample playback modes with 8-voice polyphony and ADSR envelopes | |
| 49 | - | - **17 bundled themes** -- dark, light, and high-contrast variants in TOML format | |
| 49 | + | - **17 bundled themes** -- dark, light, and high-contrast variants in [TOML](https://toml.io/) format | |
| 50 | 50 | - **Audio formats** -- WAV, FLAC, MP3, OGG, AIFF | |
| 51 | 51 | ||
| 52 | 52 | ## License | |
| 53 | 53 | ||
| 54 | - | PolyForm Noncommercial 1.0.0 | |
| 54 | + | [PolyForm Noncommercial 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0/) |