Wanted: Sample Pack Provider - andremichelle/openDAW GitHub Wiki
Sample Pack Provider
openDAW will support using and publishing sample packs hosted on external services like Dropbox, SFTP, AWS, or any generic HTTP server — all based on a simple shared JSON format.
This contribution idea covers both sides:
- Making sample packs available to others
- Using sample packs in your own projects
Using Remote Sample Packs
Users can:
- Log in to a supported service (e.g. Dropbox) to access their own sample collection
- Paste a URL to a
opendaw.samples.json
file publicly hosted anywhere
openDAW will:
- Load the pack metadata
- Resolve sample URLs using a provider-specific runtime agent
- Let the user browse, tag, and audition samples directly in the app
Each provider (Dropbox, AWS, SFTP, etc.) has its own small agent module that:
- Knows how to construct valid public URLs or access files
- Is only loaded when needed, keeping the main codebase lean
- Can optionally support authentication to access private files
Publishing Sample Packs
We want to build a user interface at:
https://opendaw.studio/connect/samples/
This page should allow users to:
- Choose a provider (Dropbox, AWS, SFTP, etc.)
- Only load the provider-specific code when selected.
- Enter credentials or configure access
- Drag & drop
.wav
files or upload local audio files - Edit or auto-generate the
opendaw.samples.json
file - Upload everything to the selected provider
Sample Pack Format
Each sample pack is described by a JSON file named opendaw.samples.json
.
TypeScript suggestion:
export type SamplePackProvider = 'dropbox' | 'sftp' | 'aws' | 'https';
export interface SamplePack {
name: string;
description: string;
provider: SamplePackProvider;
baseUrl: string;
samples: SampleEntry[];
}
export interface SampleEntry {
uuid: string;
name: string;
bpm: number; // 0.0 for one-shot samples
key: Key;
duration: number; // in seconds
sample_rate: number; // in Hz
filename: string;
tags: string[];
}
What Needs to Be Built
- A clean UI in TSX under
/connect/samples/
- Dynamic provider card layout (Dropbox, AWS, SFTP, etc.)
- Credential inputs per provider
- Drag & drop file handling, browse local files (OPFS) for upload
- Catalogue editor with json schema validation
- Runtime agent loaders for both upload and usage
Want to contribute?
Join us on Discord or head to the GitHub repository.