---
title: "Managing Vamp Plugin Paths"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Managing Vamp Plugin Paths}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(ReVAMP)
```

## Overview

Vamp plugins are distributed as separate binary libraries that ReVAMP loads at runtime. Understanding how Vamp finds plugins is important for:

- Installing new plugins
- Troubleshooting missing plugins
- Managing multiple plugin versions
- Deploying applications that use ReVAMP

This vignette covers plugin search paths, installation locations, and troubleshooting.

## Plugin Search Paths

### Viewing Current Paths

Use `vampPaths()` to see where ReVAMP searches for plugins:

```{r eval=FALSE}
# View plugin search paths
paths <- vampPaths()
print(paths)
```

This returns a character vector of directories searched in order. ReVAMP will find the first matching plugin in this list.

### Default Search Paths

Search paths vary by operating system:

#### macOS

1. `~/Library/Audio/Plug-Ins/Vamp` (user plugins)
2. `/Library/Audio/Plug-Ins/Vamp` (system plugins)

#### Linux

1. `~/.vamp` (user plugins)
2. `/usr/local/lib/vamp` (locally installed)
3. `/usr/lib/vamp` (system packages)

#### Windows

1. `%APPDATA%\Vamp Plugins` (user plugins)
2. `C:\Program Files\Vamp Plugins` (all users)
3. `C:\Program Files (x86)\Vamp Plugins` (32-bit on 64-bit)

### Custom Search Paths

You can add custom plugin directories using the `VAMP_PATH` environment variable:

#### macOS/Linux

```bash
# In ~/.bashrc or ~/.zshrc
export VAMP_PATH=$HOME/my-vamp-plugins:/opt/vamp-plugins

# Or for single R session
Sys.setenv(VAMP_PATH = "/path/to/plugins:/another/path")
```

#### Windows

```powershell
# PowerShell (persistent)
[Environment]::SetEnvironmentVariable("VAMP_PATH", 
  "C:\MyPlugins;D:\MorePlugins", "User")

# Or in R session
Sys.setenv(VAMP_PATH = "C:\\MyPlugins;D:\\MorePlugins")
```

Path separator is `:` on Unix/macOS and `;` on Windows.

### Verifying Installation

After installing plugins, verify they're detected:

```{r eval=FALSE}
# List all plugins
plugins <- vampPlugins()

# View plugin details
plugin_info <- plugins[plugins$id == "vamp-aubio:aubiotempo", ]
print(plugin_info)
```
