Atlas Audio: Plugin Formats (VST / AU / AAX / CLAP)

The Plugin Formats extractor reads metadata from macOS audio plugin bundles — VST2, VST3, AU, AAX, and CLAP. It’s part of the Atlas Audio extractor pack.

Extension: .plist

How It Works

On macOS, every audio plugin is a directory bundle (e.g., Pro-Q 3.vst3/) containing a Contents/Info.plist file. Atlas watches individual files, not directories — so when a user watches a plugin folder, the Info.plist files inside bundles are what Atlas hashes and tracks.

The extractor registers for the .plist extension and uses the file’s parent directory path to detect whether it belongs to a plugin bundle. If the path matches *.<bundle_ext>/Contents/, it parses the plist and extracts metadata as traits. Non-plugin plists are ignored.

Supported Bundle Types

ExtensionFormat
.vstVST2
.vst3VST3
.componentAudio Unit (AU)
.aaxpluginAAX (Pro Tools)
.clapCLAP

What It Extracts

The extractor produces traits only (no edges). Plugin plists don’t reference external files — plugins are leaf nodes referenced by DAW projects, not the other way around.

Common Traits (All Formats)

TraitSourceExample
plugin_nameCFBundleName or AudioComponents name"FabFilter Pro-Q 3"
plugin_vendorParsed from CFBundleIdentifier"Fabfilter"
plugin_versionCFBundleShortVersionString"3.27"
plugin_formatDetected from bundle extension"vst3"
plugin_bundle_idCFBundleIdentifier"com.fabfilter.Pro-Q.vst3.3"

AU-Specific Traits

When an AudioComponents array is present (AU bundles, and some CLAP bundles that include AU metadata):

TraitSourceExample
au_typeAudioComponents type"aumu"
au_subtypeAudioComponents subtype"FQ3p"
au_manufacturerAudioComponents manufacturer"FabF"
au_versionAudioComponents version"199940"
au_api_versionDetected from plist keys"v2" or "v3"
plugin_categoryDerived from au_type"instrument", "effect", or "music-effect"

Vendor Parsing

The vendor name is extracted using two strategies:

  1. AU name field — AudioComponents names often follow "Vendor: Plugin Name". Splitting on ": " gives the cleanest vendor name.
  2. Bundle identifier — The CFBundleIdentifier follows reverse-DNS (com.vendorname.product). The second segment is title-cased as a fallback.

Example Usage

# Watch a plugin directory
atlas watch /Library/Audio/Plug-Ins/VST3/

# View extracted traits for a plugin
atlas info /Library/Audio/Plug-Ins/VST3/FabFilter\ Pro-Q\ 3.vst3/Contents/Info.plist

DAW Project Resolution

When the Reaper extractor finds a plugin reference like <VST "VST3i: Pro-Q 3 (FabFilter)"> in an RPP file, it creates an input edge with a canonical match key as the reference path:

plugin://fabfilter/pro-q 3/vst3

The Plugin Formats extractor stores the same canonical key as a plugin_match_key trait on the plugin’s Info.plist entity. At query time, Atlas resolves the edge by matching the RPP’s reference path against plugin entities’ match key traits — connecting DAW project to plugin entity automatically.

This means atlas inputs my-song.rpp shows resolved plugin entities with their full metadata (name, vendor, version), and atlas trace --backward on a plugin entity shows every project that uses it.

The match key normalizes vendor names (stripping spaces, hyphens, lowercasing) so that "Native Instruments" from an RPP and "NativeInstruments" from a CFBundleIdentifier both resolve correctly. The human-readable plugin_vendor trait is preserved separately for display.

Use Cases

  • Plugin inventory — Catalog every plugin installed on the system with name, vendor, version, and format
  • Version tracking — Atlas hashes Info.plist on every change, so plugin updates create new hash history entries with updated plugin_version traits
  • Cross-format awareness — The same plugin across VST3, AU, AAX, and CLAP formats produces separate entities, but shared plugin_name and plugin_vendor traits make them queryable as a group
  • DAW dependency resolution — Tracing from a project shows the actual plugin entities it depends on, with version info
  • Reverse lookup — Tracing backward from a plugin shows every project that uses it — useful for assessing impact before removing or updating a plugin