A high-performance gRPC server for indexing and searching Ableton Live projects. This tool provides the fastest Ableton Live set parser available, offering comprehensive project analysis, search, and organization capabilities through a clean gRPC API.
The application is now feature-complete. It runs as a system tray application by default for seamless background operation.
- Extremely fast scanning and parsing of Ableton Live Set (.als) files (~160-270 MB/s)
- System tray application - runs silently in the background with minimal system impact
- gRPC API for remote access and integration with any client application
- Comprehensive project data extraction:
- Tempo
- Ableton version
- Time signature
- Length (bars)
- Plugins used
- Samples used (paths)
- Key + scale
- Estimated duration
- Plugin + Sample validation - per project, check which samples/plugins are present on the system
- 5NF SQLite database for storing project information
- FTS5 based search engine with operators:
plugin:serum
- search by plugin namebpm:128
- search by tempokey:Cmaj
- search by key signaturemissing:true
- find projects with missing plugins- And more fuzzy search capabilities across all project data
- Real-time file watching with gRPC streaming integration
- Notes - descriptions for each project
- Tags - tag projects for categorization (e.g., artists, genres)
- Collections - for making tracklists; collects to-do lists of contained projects, support for cover art
- Tasks/To-do lists per project for mix notes, reminders, and project management
- Batch operations - perform bulk actions on multiple projects, tags, collections, and tasks for efficient project management
- Media management - upload/download cover art and audio files with storage statistics and cleanup
- Advanced analytics - collection-level statistics, task completion trends, and historical analytics
- Data export - CSV export of statistics and analytics data
- Database statistics with enhanced filtering (date ranges, collections, tags, Ableton versions)
- Configurable settings via
config.toml
- Version control system - track project changes over time
- Audio file integration - reference and play demo audio files for auditioning
- Analytics dashboard frontend - visual dashboard for the existing analytics backend ("Ableton Wrapped" style)
- macOS support - currently Windows-focused
- Rust 1.70 or higher
- SQLite 3.35.0 or higher
- Protocol Buffers compiler (
protoc
)- Windows:
choco install protoc
(using Chocolatey)
- Windows:
- Clone the repository:
git clone <repository-url>
cd seula
- Build the project:
cargo build --release
- Run the application:
cargo run --release
The application will start in system tray mode by default, with the gRPC server running on localhost:50051
.
The application is configured via config.toml
. All settings are optional with sensible defaults:
# Project directories to scan
paths = [
'{USER_HOME}/Documents/Ableton Live Projects',
'{USER_HOME}/Music/Ableton Projects'
]
# Database location (optional - defaults to executable directory)
database_path = ""
# Ableton Live database directory for plugin detection
live_database_dir = '{USER_HOME}/AppData/Local/Ableton/Live Database'
# gRPC server port (default: 50051)
grpc_port = 50051
# Log level: error, warn, info, debug, trace (default: info)
log_level = "info"
paths
- Array of project directories to scandatabase_path
- SQLite database location (leave empty for executable directory)live_database_dir
- Ableton Live's database directory for plugin detectiongrpc_port
- Port for the gRPC server (default: 50051)log_level
- Logging verbosity level (default: "info")
The {USER_HOME}
placeholder will be automatically replaced with your user directory.
# Start as system tray application
./seula.exe
# Or with cargo
cargo run --release
The application will:
- Load configuration from
config.toml
- Initialize the SQLite database
- Start the gRPC server
- Run silently in the system tray
Right-click the tray icon to quit the application.
# Start in CLI mode (shows logs in terminal)
./seula.exe --cli
# Or with cargo
cargo run --release -- --cli
Use CLI mode for debugging or when you want to see log output directly. The log level is configurable in config.toml
### Client Integration
The gRPC service can be integrated with any language that supports gRPC. The protobuf definitions are available in `proto/seula.proto`.
## Deployment
1. **Build the release binary:**
```bash
cargo build --release
-
Copy the executable and config:
seula.exe config.toml
-
Run the application:
- Double-click the executable for tray mode
- Or run from command line:
./seula.exe
The application will automatically:
- Create the database if it doesn't exist
- Start the gRPC server
- Run in the system tray
You could then create or use any frontend you would like, or manually interact with the server using grpcurl. I am currently working on a first party frontend.
Cold Scan (First Run - 3,570 projects)
- Scanning speed: 38.6 projects/sec (average), 43.7 projects/sec (peak)
- Total time: 92.52 seconds
- Time per project: 0.026 seconds
- Throughput: 2,315 projects/minute
Warm Scan (Subsequent Runs - 3,570 projects)
- Scanning speed: 860.7 projects/sec (average), 860.8 projects/sec (peak)
- Total time: 4.15 seconds
- Time per project: 0.001 seconds
- Throughput: 51,645 projects/minute
- Memory usage: Minimal - designed for long-running operation
- Database: SQLite with FTS5 for fast full-text search
- Concurrency: Multi-threaded scanning and processing
Projects | Cold Scan | Warm Scan |
---|---|---|
100 | 2.6s | 0.1s |
500 | 13.0s | 0.6s |
1000 | 25.9s | 1.2s |
Benchmarks conducted on modern hardware with 3,570 Ableton Live projects
Contributions are welcome! Feel free to submit a PR, but please open an issue first for large contributions.