Date: 28th October 2024
Status: Review
Authors:
- Kim T, StudioRack
- Arthur P, OwlPlug
This document is licensed under a Creative Commons 4.0 license.
This document describes an open specification for audio package metadata stored in a registry. The goal is to enable interoperability between multiple audio platforms and the software installed locally on users computers.
This dotted line in the diagram indicates the scope of this specification. A second specification focuses on the lower area of the diagram: audio package managers (apps, cli, websites): Open Audio Stack - Manager - Specification 1.0.0
- Developer - Audio plugin developer who releases audio plugins.
- Package - Collection of files to be distributed along with metadata about those files:
- Plugin - File which adds digital signal processing or sound synthesis to audio software.
- Preset - File containing predefined settings for an audio plugin.
- Project - File which contains song data, in a format only for a specific DAW(s).
- Registry - Database containing audio package metadata with an API for read access.
- Audio plugin manager - Search, view, download and install audio plugins, using one of:
- App - Via a native application.
- Cli - Via a command-line tool.
- Website - Via a web page within a web browser.
- Plugin - Via an existing audio plugin, install additional features/presets.
- User - Musician using a computer to run audio software.
- Digital Audio Workstation (DAW) - software that allows users to record, edit, and produce audio.
Musicians install Digital Audio Workstation (DAW) software on computers to record and arrange music. They add audio plugins such as instruments and effects to extend their DAW functionality. The method of downloading and installing audio plugins differs depending on the company or individual distributing the software. The result is:
- Manual installation of audio plugins.
- Broken links.
- Unsupported systems/versions.
- Different audio plugin formats.
- Insecure binaries.
- Multiple audio plugin manager accounts.
- Multiple audio plugin managers with different interfaces and settings.
- No version control.
- No portability to other systems or collaborators.
- Difficulty expanding plugins with new presets.
This specification aims to solve these issues by applying established conventions and best practices from other well-known software package managers such as npm, pip, maven, gems and composer. Audio plugin managers adopting this specification will be compatible and interoperable with each other. Musicians using compatible audio plugin managers will benefit from well-established package management features.
- Search for audio plugins and filter by metadata attributes such as platform or license.
- View audio plugin details such as description and size and preview image and audio.
- Download and install audio plugins, including specific versions.
- Install a list of multiple plugin versions automatically choosing the best version for your system.
- Downloading and extracting files into configured directories.
- Extend existing plugin functionality by installing additional presets.
Registries are a database containing audio package metadata with an API for read access. Registries can be built in any technology or language, but they must have an API and make metadata available in the json format. They can optionally support other formats if they choose (such as xml). Registries can be implemented with backend server rendering or static site generation depending on the implementation. This specification favors paths (/example/hello) over query params (?example=hello) to allow flexibility in choice of technology stack.
Each registry has a root url such as:
https://open-audio-stack.github.io/open-audio-stack-registry
If a registry needs to launch new features without breaking previous features, it can be versioned using:
https://open-audio-stack.github.io/open-audio-stack-registry/v1
All endpoints in this specification are assumed to start with root url and optionally, version.
| Field | Type | Description | Example |
|---|---|---|---|
| name | string | Registry name brand-specific | "Open Audio Registry" |
| apps | [slug: string]: Package | Registry app packages | "apps": { ... } |
| plugins | [slug: string]: Package | Registry plugin packages | "plugins": { ... } |
| presets | [slug: string]: Package | Registry preset packages | "presets": { ... } |
| projects | [slug: string]: Package | Registry project packages | "projects": { ... } |
| url | string | Registry url (https) where it is hosted, also can be used for base/root url for other requests. | "https://open-audio-stack.github.io/open-audio-stack-registry" |
| version | string | Registry Semantic Version which should match this specification version. | "1.0.0" |
GET /
{
"name": "Open Audio Registry",
"apps": { ... },
"plugins": { ... },
"presets": { ... },
"projects": { ... },
"url": "https://open-audio-stack.github.io/open-audio-stack-registry",
"version": "1.0.0"
}
| Name | Description | Value |
|---|---|---|
| Advanced RISC Machine - 32-bit | ARM processors are commonly used in battery-powered devices, such as smartphones and tablets. | arm32 |
| Advanced RISC Machine - 64-bit | ARM processors are commonly used in battery-powered devices, such as smartphones and tablets. | arm64 |
| Advanced RISC Machine - 64-bit - Emulation Compatible | Windows 11 on Arm feature which allows native ARM64 and x64 code within the same process. | arm64ec |
| x86 machine - 32-bit | X86 processors are commonly used in desktop computers and laptops. | x32 |
| x86 machine - 64-bit | X86 processors are commonly used in desktop computers and laptops. | x64 |
Managers will detect the current architecture as the default platform, but allow users to override to install plugins from another architecture. Compatibility rules depend entirely on the Host (DAW). Plugin Manager cannot always rely on the system's "Runtime Platform" (which would be ARM64 for a native app) because the user's DAW might be running in a different mode.
For example, if the Plugin Manager is native ARM64, but the DAW is emulated x64, installing a native ARM64 plugin will result in the DAW failing to see or load the plugin. The best practice is that users can manually set a Desired Platform to ensure compatibility with their specific DAW configuration.
GET /config/architectures
{
"items": [
{ "name": "Advanced RISC Machine - 32-bit", "value": "arm32" },
]
}
GET /config/architectures/{id}
{
"name": "Advanced RISC Machine - 32-bit",
"value": "arm32",
}
| Name | Description | Value |
|---|---|---|
| Linux | Open-source operating system. One of the most widely used for IT computers and servers. | linux |
| Macintosh | Operating system designed and sold by Apple, and is known for its ease of use. | mac |
| Windows | Most popular home operating system, preloaded on most new personal computers. | win |
GET /config/systems
{
"items": [
{ "name": "Linux", "value": "linux" },
]
}
GET /config/systems/{id}
{
"name": "Linux",
"value": "linux",
}
List curated by Choose a license.
GET /config/licenses
{
"items": [
{ "name": "BSD Zero Clause License", "value": "0bsd" },
]
}
GET /config/licenses/{id}
{
"name": "BSD Zero Clause License",
"value": "0bsd",
}
Package is a common wrapper for all Plugin, Project and Preset metadata which handles unique slug/id and versioning.
| Field | Type | Description | Example |
|---|---|---|---|
| slug | string | Package slug | "surge-synthesizer/surge" |
| version | string | Package latest version using Semantic Version | "1.3.1" |
| versions | [version: string] | Package versions Object containing all released versions. | "versions": [ ... ] |
Default app installation path per platform. Users are able to change the path via settings.
| Platform | Path |
|---|---|
| Linux platform | $HOME/.local/bin |
| Mac platform | /Applications |
| Windows platform | C:\Program Files or C:\Program Files (x86) |
Recommended sub-directory hierarchy to keep installed apps separate and easier to manage:
$app_dir/$app_slug/$app_version/
For example:
$app_dir/free-audio/clapinfo/1.2.2/clap-info
| Field | Type | Description | Example |
|---|---|---|---|
| author | string | App author name | "Free Audio" |
| changes | string | App changes made since previous version | "- Fixed bug with CLI\n- New feature added" |
| date | string | App release datetime in Unix timestamp format in UTC timezone. | "2024-03-02T00:00:00.000Z" |
| description | string | App description | "Command-line tool to display information about CLAP plugins" |
| donate | string | Donation url | "https://paypal.me/example" |
| files | array<AppFile> | App files available | { "open": "clap-info", "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" } |
| image | string | Image preview url (https). Allows users to preview the user interface of the app before downloading. Technically this could be any image file format, but we recommend .jpg as it is compressed and widely supported. Tips: Crop to app UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of apps. |
"https://myapp.com/image.jpg" |
| license | License | App license id | "mit" |
| name | string | App name | "Clapinfo" |
| tags | array<string> | App tags/keywords | [ "CLI", "Plugin", "Information" ] |
| type | AppType | App type from table below | "tool" |
| url | string | Website url (https). This could be anywhere, but we recommend GitHub. | "https://github.com/free-audio/clap-info" |
| verified | boolean | Computed during registry build, set to true if the package slug matches the download url |
true |
GET /apps
{
"free-audio/clapinfo": { "slug": "free-audio/clapinfo", "version": "1.2.2", "versions": [ ... ]},
}
GET /apps/{org}
{
"free-audio/clapinfo": {
"slug": "free-audio/clapinfo",
"version": "1.2.2",
"versions": [ ... ]
}
}
GET /apps/{slug}
{
"slug": "free-audio/clapinfo",
"version": "1.2.2",
"versions": [ ... ]
}
GET /apps/{slug}/{version}
{
"author": "Free Audio",
"changes": "- Fixed bug with CLI\n- New feature added",
"date": "2024-03-02T00:00:00.000Z",
"description": "Command-line tool to display information about CLAP plugins",
"donate": "https://paypal.me/example",
"files": [ ... ],
"image": "https://myapp.com/image.jpg",
"license": "mit",
"name": "Clapinfo",
"tags": ["CLI", "Plugin", "Information"],
"type": "tool",
"url": "https://github.com/free-audio/clap-info"
}
| Name | Description | Value |
|---|---|---|
| DAW | Digital Audio Workstation software for recording, editing, and producing audio. | daw |
| Editor | Audio editing software for manipulating and processing audio files. | editor |
| Manager | Package manager or installer for audio plugins and related software. | manager |
| Player | Audio player software for playing back audio files and media. | player |
| Recorder | Audio recording software for capturing audio input from various sources. | recorder |
| Tool | Command-line or utility tool for audio processing, analysis, or other audio-related functions. | tool |
| Validator | Software for validating, testing, or analyzing audio plugins and files. | validator |
Recommended minimum cross-platform binaries:
app-name-linux-x64.zipapp-name-mac-x64.zipapp-name-win-x64.zip
Recommended image preview:
app-name.jpg
Recommended file formats:
.zip- which has cross-platform support and can be extracted automatically..jpg- to optimize loading times on compatible websites.
Default plugin installation path per platform. Users are able to change the path via settings.
| Platform | Path |
|---|---|
| Linux platform | $HOME/usr/local/lib/$format |
| Mac platform | $HOME/Library/Audio/Plug-ins/$format |
| Windows platform | C:\Program Files\Common Files\$format C:\Program Files (x86)\Common Files\$format |
Recommended sub-directory hierarchy to keep installed plugins separate and easier to manage:
$plugin_dir/$plugin_slug/$plugin_version/
For example:
$plugin_dir/surge-synthesizer/surge/1.3.1/surge.vst3
| Field | Type | Description | Example |
|---|---|---|---|
| audio | string | Audio preview url (https). Allows users to preview the sound of the plugin before downloading. Technically this could be any audio file format, but we recommend .flac as it is compressed and widely supported. Tips: Keep the length short, show off the plugin, if unsure, play a middle-C note using a default piano instrument. |
"https://myplugin.com/audio.flac" |
| author | string | Plugin author name | "Surge Synth Team" |
| changes | string | Plugin changes made since previous version | "- Fixed bug with audio\n- New feature added" |
| date | string | Plugin release datetime in Unix timestamp format in UTC timezone. | "2024-03-02T00:00:00.000Z" |
| description | string | Plugin description | "Hybrid synthesizer featuring many synthesis techniques, a great selection of filters, a flexible modulation engine, a smorgasbord of effects, and modern features like MPE and microtuning." |
| donate | string | Donation url | "https://paypal.me/example" |
| files | array<PluginFile> | Plugin files available | { "contains": ["vst3"], "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" } |
| image | string | Image preview url (https). Allows users to preview the user interface of the plugin before downloading. Technically this could be any image file format, but we recommend .jpg as it is compressed and widely supported. Tips: Crop to plugin UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of plugins. |
"https://myplugin.com/image.jpg" |
| license | License | Plugin license id | "gpl-3.0" |
| name | string | Plugin name | "Surge XT" |
| tags | array<string> | Plugin tags/keywords | [ "80s", "Synth", "Modulation" ] |
| type | PluginType | Plugin type from table below | "instrument" |
| url | string | Website url (https). This could be anywhere, but we recommend GitHub. | "https://github.com/surge-synthesizer/surge" |
| verified | boolean | Computed during registry build, set to true if the package slug matches the download url |
true |
GET /plugins
{
"surge-synthesizer/surge": { "slug": "surge-synthesizer/surge", "version": "1.3.1", "versions": [ ... ]},
}
GET /plugins/{org}
{
"surge-synthesizer/surge": {
"slug": "surge-synthesizer/surge",
"version": "1.3.1",
"versions": [ ... ]
}
}
GET /plugins/{slug}
{
"slug": "surge-synthesizer/surge",
"version": "1.3.1",
"versions": [ ... ]
}
GET /plugins/{slug}/{version}
{
"audio": "https://myplugin.com/audio.flac",
"author": "Surge Synth Team",
"changes": "- Fixed bug with audio\n- New feature added",
"date": "2024-03-02T00:00:00.000Z",
"description": "Hybrid synthesizer featuring many synthesis techniques, a great selection of filters, a flexible modulation engine, a smorgasbord of effects, and modern features like MPE and microtuning.",
"donate": "https://paypal.me/example",
"files": [ ... ],
"image": "https://myplugin.com/image.jpg",
"license": "gpl-3.0",
"name": "Surge XT",
"tags": ["80s", "Synth", "Modulation"],
"type": "instrument",
"url": "https://github.com/surge-synthesizer/surge"
}
| Name | Description | Value |
|---|---|---|
| Audio Units | Apple's proprietary plugin format for macOS and iOS. | component |
| Avid Audio Extension | Avid's plugin format for Pro Tools, offering deep integration. | aax |
| Clever Audio Plugin | Modern open-source plugin format designed for performance and flexibility. | clap |
| LADSPA Version 2 | Linux-friendly plugin format primarily used in open-source environments. | lv2 |
| Linux Standalone | Linux standalone application. | elf |
| MacOS Standalone | MacOS standalone application. | app |
| Real-Time AudioSuite | Real-time plugin format used in Avid's Pro Tools. | rta |
| SoundFont 2 | Widely used format for sound samples in musical instruments. | sf2 |
| SFZ | An open standard for defining instrument patches and sound samples. | sfz |
| Time-Division-Multiplexing | Legacy plugin format used in early Pro Tools systems. | tdm |
| Virtual Studio Technology (Linux) | Linux version of the VST plugin format for audio effects and instruments. | so |
| Virtual Studio Technology (Mac) | Mac version of the VST plugin format used in DAWs like Logic and Ableton. | vst |
| Virtual Studio Technology (Win) | Windows version of the VST plugin format for digital audio workstations. | dll |
| Virtual Studio Technology 3 | Third-generation VST format, offering better performance and features. | vst3 |
| Windows Standalone | Windows standalone application. | exe |
| Name | Description | Value |
|---|---|---|
| Effect | Digital signal processing based on an existing audio signal. | effect |
| Generator | Generates midi patterns or samples which can be fed into other instruments/effects. | generator |
| Instrument | Sound synthesis based on audio or midi input. | instrument |
| Sampler | Sample playback based on audio or midi input. | sampler |
| Tool | Helper tool which provides automations and other useful functions for music. | tool |
Recommended minimum cross-platform binaries:
plugin-name-linux-x64.zipplugin-name-mac-x64.zipplugin-name-win-x64.zip
Recommended image and audio previews:
plugin-name.jpgplugin-name.flac
Recommended file formats:
.zip- which has cross-platform support and can be extracted automatically..jpg- to optimize loading times on compatible websites..flac- to optimize loading times and cross-browser compatibility.
Default project installation path per platform. Users are able to change the path via settings.
| Platform | Path |
|---|---|
| Mac platform | $HOME/Documents/Audio |
| Linux platform | $HOME/Documents/Audio |
| Windows platform | $HOME\Documents\Audio |
Recommended sub-directory hierarchy to keep installed plugins separate and easier to manage:
$project_dir/$project_slug/$project_version/
For example:
$project_dir/kmt/banwer/1.2.0/Banwer.als
Same as a plugin metadata except for an additional field for plugin dependencies
| Field | Type | Description | Example |
|---|---|---|---|
| audio | string | Audio preview url (https). Allows users to preview the sound of the project before downloading. Technically this could be any audio file format, but we recommend .flac as it is compressed and widely supported. Tips: Keep the length short, show off the project, if unsure, loop a bar of the song. |
"https://myproject.com/audio.flac" |
| author | string | Project author name | "KMT" |
| changes | string | Project changes made since previous version | "- Fixed levels\n- New instrument added" |
| date | string | Project datetime in Unix timestamp format in UTC timezone. | "2024-08-02T05:32:40.394Z" |
| description | string | Project description | "Song idea using synthesizers" |
| donate | string | Donation url | "https://paypal.me/example" |
| files | array<ProjectFile> | Project files available | { "contains": ["als"], "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" } |
| image | string | Image preview url (https). Allows users to preview the interface of the project before downloading. Technically this could be any image file format, but we recommend .jpg as it is compressed and widely supported. Tips: Crop to project UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of projects. |
"https://myproject.com/image.jpg" |
| license | License | Project license id | "gpl-3.0" |
| name | string | Project name | "Banwer" |
| open | string | Project entry point, main file to open. | "Banwer.als" |
| plugins | object<[slug: string]: string> | Project plugin dependencies | { "freepats/glasses": "1.0.0", "surge-synthesizer/surge": "1.3.1", } |
| tags | array <string> | Project tags/keywords | [ "Idea", "Synth", "Rock" ] |
| type | ProjectType | Project type see from table below | "song" |
| url | string | Website url (https). This could be anywhere, but we recommend GitHub. | "https://myproject.com" |
| verified | boolean | Computed during registry build, set to true if the package slug matches the download url |
true |
GET /projects
`[
{ "slug": "kmt/banwer", "version": "1.0.1", "versions": [ ... ]},
]`
GET /projects/{slug}
{
"slug": "kmt/banwer",
"version": "1.0.1",
"versions": [ ... ]
}
GET /projects/{slug}/{version}
{
"audio": "https://myproject.com/audio.flac",
"author": "KMT",
"changes": "- Fixed levels\n- New instrument added",
"date": "2024-03-02T00:00:00.000Z",
"description": "Song idea using synthesizers",
"donate": "https://paypal.me/example",
"files": [ ... ],
"image": "https://myproject.com/image.jpg",
"license": "cc0-1.0",
"plugins": {
"surge-synthesizer/surge": "1.3.1"
},
"open": "Banwer.als",
"name": "Banwer",
"tags": ["Idea", "Synth", "Rock"],
"type": "song",
"url": "https://myproject.com"
}
| Name | Description | Value |
|---|---|---|
| Ableton Live Project | Used to store all information about a Live set. | als |
| Bitwig Project | Containing all Bitwig project-related information. | bwproject |
| Cubase Project | Used to save Steinberg Cubase arrangements and settings. | cpr |
| DAWproject Project | Open standard for storing various audio project settings. | dawproject |
| FL Studio Project | Used for saving FL Studio compositions and arrangements. | flp |
| Garageband Project | A package containing audio files and Garageband timeline and settings. | band |
| LMMS Project | Music project for open-source, cross-platform software. | mmp |
| Logic Project | Containing all Apple's Logic Pro audio, MIDI, and arrangement data. | logic |
| Musescore Project | Compressed Musescore project along with metadata and image preview. | mscz |
| Pro Tools Project | Used for Avid Pro Tools audio recording and production. | ptx |
| Reaper Project | Containing Reaper tracks, arrangements, and settings. | rpp |
| Sonar Project | Used for Cakewalk Sonar music production and audio editing. | cwp |
| Name | Description | Value |
|---|---|---|
| Audiobook | Spoken audio for books or literature. | audiobook |
| DJ set | Live DJ performances, often including mixes of various tracks. | dj |
| Performance | Solo or ensemble musical performance, showcasing artistic expression. | performance |
| Podcast | Discussions, interviews, or other content for audio broadcast.. | podcast |
| Remix | Reworking or improving an existing song or track to create a new version. | remix |
| Song | Composing, recording, and producing original songs with multiple instruments and vocals. | song |
| Score | Composing and producing music for film, TV, video games, or other visual media. | score |
Default preset installation path per platform. Users are able to change the path via settings.
| Platform | Path |
|---|---|
| Linux platform | $HOME/.vst3/presets |
| Mac platform | $HOME/Library/Audio/Presets |
| Windows platform | $HOME/Documents/VST3 Presets |
Recommended sub-directory hierarchy to keep installed plugins separate and easier to manage:
$preset_dir/$preset_slug/$preset_version/
For example:
$preset_dir/acme-corp/woodstock/2.1.0/jimi.vstpreset
Same as a plugin metadata except for an additional field for plugin dependencies.
| Field | Type | Description | Example |
|---|---|---|---|
| audio | string | Audio preview url (https). Allows users to preview the sound of the preset before downloading. Technically this could be any audio file format, but we recommend .flac as it is compressed and widely supported. Tips: Keep the length short, show off the preset, if unsure, play a middle-C note using a default piano instrument. Previews can be shared across versions or specific to a version. |
"https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.flac" |
| author | string | Preset author name | "JH" |
| changes | string | Preset changes made since previous version | "- First version" |
| date | string | Preset datetime in Unix timestamp format in UTC timezone. | "2024-03-02T00:00:00.000Z" |
| description | string | Preset description | "Floating Rhodes sounds." |
| donate | string | Donation url | "https://paypal.me/example" |
| files | array<PresetFile> | Preset files available | { "contains": ["vstpreset"], "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" } |
| image | string | Image preview url (https). Allows users to preview the user interface of the preset before downloading. Technically this could be any image file format, but we recommend .jpg as it is compressed and widely supported. Tips: Crop to plugin UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of preset. Previews can be shared across versions or specific to a version. |
"https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.jpg" |
| license | License | Preset license id | "gpl-3.0" |
| name | string | Preset name | "Floating Rhodes" |
| plugins | object<[slug: string]: string> | Preset plugin dependencies | { "surge-synthesizer/surge": "1.3.1", } |
| tags | array <string> | Preset tags/keywords | [ "Preset", "Synth", "Rhodes" ] |
| type | PresetType | Preset type from table below | "patch" |
| url | string | Website url (https). This could be anywhere, but we recommend GitHub. | "https://presetshare.com/p763" |
| verified | boolean | Computed during registry build, set to true if the package slug matches the download url |
true |
GET /presets
`[
{ "slug": "jh/floating-rhodes", "version": "2.2.0", "versions": [ ... ]},
]`
GET /presets/{slug}
{
"slug": "jh/floating-rhodes",
"version": "1.0.0",
"versions": [ ... ]
}
GET /presets/{slug}/{version}
{
"audio": "https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.flac",
"author": "JH",
"changes": "- First version",
"date": "2024-03-02T00:00:00.000Z",
"description": "Floating Rhodes sounds.",
"donate": "https://paypal.me/example",
"files": [ ... ],
"image": "https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.jpg",
"license": "gpl-3.0",
"plugins": {
"surge-synthesizer/surge": "1.3.1"
},
"name": "Floating Rhodes",
"tags": ["Preset", "Synth", "Rhodes"],
"type": "patch",
"url": "https://presetshare.com/p763"
}
| Name | Description | Value |
|---|---|---|
| Audio Unit preset | Apple's proprietary plugin format for macOS and iOS. | aupreset |
| Avid Audio preset | Avid's plugin format for Pro Tools, offering deep integration. | tfx |
| Clever Audio preset | Modern open-source plugin format designed for performance and flexibility. | clap |
| LADSPA Version 2 preset | Linux-friendly plugin format primarily used in open-source environments. | preset.lv2 |
| Native Instruments preset | Used by Native Instruments for their software instruments and effects. | nksf |
| Real-Time AudioSuite preset | Real-time plugin format used in Avid's Pro Tools. | rtas |
| SoundFont 2 preset | Widely used format for sound samples in musical instruments. | preset.sf2 |
| SFZ preset | An open standard for defining instrument patches and sound samples. | preset.sfz |
| Time-Division-Multiplexing preset | Legacy plugin format used in early Pro Tools systems. | tdm |
| Virtual Studio Technology bank preset | Standard bank preset format for VST plugins. | fxb |
| Virtual Studio Technology preset | Standard preset format for VST plugins, allowing users to save and load settings. | fxp |
| Virtual Studio Technology 3 preset | Preset format for VST3 plugins including new features. | vstpreset |
| Name | Description | Value |
|---|---|---|
| Chain | Saved configurations of multiple plugins with specific routing, processing order, and parameter settings, often used in mixing and mastering plugins. | chain |
| Layout | Saved configurations of a plugin’s overall layout or workspace, especially in modular plugins, which help streamline specific workflows or user preferences. | layout |
| Mapping | Preset mappings that assign plugin parameters to external MIDI controllers, making it easier to manipulate sounds in real-time or during live performances. | mapping |
| Patch | Sound presets containing saved parameter settings for synths or instruments, often focused on specific sounds or tonal qualities. | patch |
| Pattern | Rhythmic and harmonic variations of MIDI data. | pattern |
| Theme | Visual customizations that change the interface design, colors, or style of a plugin, providing a personalized or visually enhanced experience. | theme |
| Field | Type | Description | Example |
|---|---|---|---|
| architectures | Architecture[] | System architectures supported by this binary file. | [ "x32" , "x64" ] |
| contains | array<PluginFormat | PresetFormat | ProjectFormat> | Plugin/Project/Preset formats (see tables for list of possible values). | ["vst3"] |
| sha256 | string | File checksum for security validation that the published file matches the downloaded file. | "3af35f02121a3c7ad6375bfe9c29a382f5882fa443bbf4c2df347a255c0edf2a" |
| size | number | Total size of the file in bits. | 94448096 |
| systems | System[] | Operating systems supported, optionally including min/max version check. | [ { "min": 11.1, "max": 20.5, "type": "linux"} ] |
| type | FileType | File type from list in below table. | "archive" |
| url | string | File download url (https). Files can be hosted anywhere on the web, but we recommend using GitHub Releases because it provides auditability of who changed the files and when. | "https://github.com/surge-synthesizer/releases-xt/releases/download/1.3.1/surge-xt-linux-1.3.1-pluginsonly.tar.gz" |
| Name | Description | Value | Recommended format |
|---|---|---|---|
| AppImage | App package for Linux systems. Does not support headless installation. | appimage |
|
| Apple Disk Image | Disk image format used on macOS. User friendly, but can result in nested installers. | dmg |
|
| Apple package | macOS and iOS software package installer. | pkg |
✅ Mac installer |
| Debian package | Package for Debian-based Linux such as Ubuntu | deb |
✅ Linux installer |
| Executable installer | Executable file format used by Windows. | exe |
|
| Red Hat package | Originally developed for Red Hat based enterprise systems. | rpm |
|
| Tarball | Compressed archive format common on Linux and Unix systems. | tar.gz |
|
| Tarball (alt) | Legacy compressed archive format similar to .tar.gz. | tgz |
|
| Windows installer | Installer format for Windows. | msi |
✅ Windows installer |
| Zip | Widely-used compressed file format compatible with many operating systems. | zip |
✅ Archive |
| 7-Zip | Archive file format which compresses files and folders into a single file. | 7z |
- Use an installer if you want to specify the installation paths
- Archives will be extracted and installed based on the package manager configuration.
- Avoid file formats which don't support automatic installation e.g. appimage
- Avoid nesting files such as an archive
plugin.zipwhich contains an installerplugin.msi. - Consider using a package generator such as CPack or JUCE to build cross-platform packages for distribution.
- WiX creates Microsoft Installer (.msi) files, which is a standard Windows installation format. This standard nature might inherently be viewed as slightly more legitimate by some AV engines compared to custom .exe installers.
Plugin manager will download and extract archives into a temporary directory. Then copy corresponding files into the correct Plugin and Preset locations. If an installer, plugin manager will run the installer via the command line and delegate responsibility of paths to the installer.
| Name | Description | Value |
|---|---|---|
| Archive | Composed of one or more files along with metadata and compression. | archive |
| Installer | Installs one or multiple files into specific locations along with script automations. | installer |