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

Possible Provider Selector UI


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.