A complete system for automatically organizing Splice samples into a structured library on download. Splice Alt consists of a Rust daemon that watches for new downloads and a browser extension that captures metadata from Splice.
- Automatic detection of downloaded samples
- Smart organization into categories
- SQLite database for metadata and deduplication
- Tag-based category mapping
- Duplicate prevention using file hashing
- Lightweight background operation
- Robust error handling and recovery
- Browser integration for metadata capture
- Rust (latest stable version)
- Linux system with inotify support
- Chrome or Firefox browser
Run the installation script from the project root:
git clone https://github.com/erelsop/splice-alt.git
cd splice-alt
./install.shThe script will:
- Build the Rust daemon
- Package the browser extension
- Optionally install the daemon to
/usr/local/bin/
After running install.sh, install the packaged extension (frontend/splice-alt-extension-v1.0.0.zip):
Firefox:
- Open
about:debugging - Click "This Firefox"
- Click "Load Temporary Add-on"
- Select
manifest.jsonfrom the extension package
Chromium (Chrome, Edge, etc.):
- Open
chrome://extensions/ - Enable "Developer mode"
- Drag and drop the
.zipfile onto the page
# Recommended approach
./target/release/splice-alt-daemon run --daemonize
# Or traditional approach
./target/release/splice-alt-daemon start./target/release/splice-alt-daemon stop./target/release/splice-alt-daemon status- Start the daemon using one of the commands above
- Configure the browser extension:
- Click the Splice Alt extension icon
- Enable "Extension Enabled" and "Auto-create JSON files"
- Download samples from Splice.com - they will be automatically organized into
~/Music/Samples/SpliceLib/
The daemon logs activity to ~/.cache/splice-alt-daemon.log and stores its process ID in ~/.cache/splice-alt-daemon.pid.
Samples are organized by category and pack:
~/Music/Samples/SpliceLib/
├── Category1/
│ └── Pack Name/
│ └── sample_file.wav
├── Category2/
│ └── Pack Name/
│ └── sample_file.wav
└── ...
Default locations:
- Watch directory:
~/Downloads - Library directory:
~/Music/Samples/SpliceLib - Database:
~/.local/share/splice-alt/samples.db - Log file:
~/.cache/splice-alt-daemon.log
The SQLite database stores comprehensive metadata:
CREATE TABLE samples (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL UNIQUE,
pack_name TEXT NOT NULL,
filename TEXT NOT NULL,
file_hash TEXT NOT NULL UNIQUE,
bpm INTEGER,
audio_key TEXT,
mapped_category TEXT NOT NULL,
tags TEXT, -- JSON array
date_downloaded TEXT NOT NULL,
sample_id TEXT,
artist_name TEXT,
genre TEXT,
duration_ms INTEGER,
sample_rate INTEGER,
bit_depth INTEGER,
file_size INTEGER,
download_url TEXT,
preview_url TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_samples_hash ON samples(file_hash);
CREATE INDEX idx_samples_category ON samples(mapped_category);
CREATE INDEX idx_samples_pack ON samples(pack_name);
CREATE INDEX idx_samples_tags ON samples(tags);This project is not affiliated with, endorsed by, or connected to Splice in any official way. It is a personal utility that helps users locally organize sample files they have legally downloaded via their own Splice accounts. This tool does not access, modify, or interact with Splice systems beyond observing client-side metadata and file downloads already authorized to the user. No Splice content is redistributed. Use of this tool assumes that the user adheres to Splice's Terms of Use.
This project is dedicated to the public domain under the CC0 1.0 Universal License.