$npx -y skills add iPlug3/audio-plugin-dev-skills --skill validate-vst3-editorhostTest VST3 plugin UIs (.vst3 bundles) using Steinberg's EditorHost without a full DAW. Use when user says "test the plugin UI", "open in editorhost", "show the .vst3 editor", or wants to visually inspect the VST3 editor. For functional validation use validate-vst3 instead.
| 1 | # VST3 EditorHost |
| 2 | |
| 3 | Minimal VST3 host for testing plugin UIs without a full DAW. |
| 4 | |
| 5 | ## Plugin Install Locations |
| 6 | |
| 7 | `editorhost` accepts a direct path to a `.vst3` bundle. |
| 8 | |
| 9 | | Platform | User Location | System Location | |
| 10 | |----------|--------------|-----------------| |
| 11 | | macOS | `~/Library/Audio/Plug-Ins/VST3/` | `/Library/Audio/Plug-Ins/VST3/` | |
| 12 | | Windows | `%LOCALAPPDATA%\Programs\Common\VST3\` | `C:\Program Files\Common Files\VST3\` | |
| 13 | | Linux | `~/.vst3/` | `/usr/lib/vst3/` or `/usr/local/lib/vst3/` | |
| 14 | |
| 15 | ## Instructions |
| 16 | |
| 17 | 1. Build EditorHost from the VST3 SDK if not already built (see Building EditorHost below) |
| 18 | 2. Run: `editorhost /path/to/plugin.vst3` |
| 19 | 3. The plugin UI window should appear — verify layout, controls, and resizing |
| 20 | 4. Test multiple editor instances with `--secondWindow` |
| 21 | 5. If the UI doesn't appear, verify the plugin passes `validator` tests first |
| 22 | |
| 23 | ## Usage |
| 24 | |
| 25 | ```bash |
| 26 | # Basic usage - load plugin and show UI |
| 27 | editorhost /path/to/plugin.vst3 |
| 28 | |
| 29 | # With component handler (tests host callbacks) |
| 30 | editorhost --componentHandler /path/to/plugin.vst3 |
| 31 | |
| 32 | # Open second window (tests multiple editor instances) |
| 33 | editorhost --secondWindow /path/to/plugin.vst3 |
| 34 | |
| 35 | # Specify a particular effect class by UID |
| 36 | editorhost --uid "ABCD1234..." /path/to/plugin.vst3 |
| 37 | ``` |
| 38 | |
| 39 | ### Binary Locations |
| 40 | |
| 41 | | Platform | Typical Path | |
| 42 | |----------|-------------| |
| 43 | | macOS | `<vst3sdk>/build/bin/Release/editorhost.app/Contents/MacOS/editorhost` | |
| 44 | | Windows | `<vst3sdk>\build\bin\Release\editorhost.exe` | |
| 45 | | Linux | `<vst3sdk>/build/bin/Release/editorhost` | |
| 46 | |
| 47 | ## Building EditorHost |
| 48 | |
| 49 | Clone the [VST3 SDK](https://github.com/steinbergmedia/vst3sdk) if you don't have it, then build: |
| 50 | |
| 51 | ```bash |
| 52 | cd <vst3sdk> |
| 53 | cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release |
| 54 | cmake --build build --target editorhost |
| 55 | ``` |
| 56 | |
| 57 | **Linux**: Requires X11 and GTK3 development libraries: |
| 58 | ```bash |
| 59 | # Debian/Ubuntu |
| 60 | sudo apt install libx11-dev libgtkmm-3.0-dev libxcb-util-dev libxcb-cursor-dev libxcb-keysyms1-dev libxcb-xkb-dev |
| 61 | |
| 62 | # Fedora |
| 63 | sudo dnf install libX11-devel gtkmm3.0-devel xcb-util-devel xcb-util-cursor-devel xcb-util-keysyms-devel libxkbcommon-x11-devel |
| 64 | ``` |
| 65 | |
| 66 | ## Troubleshooting |
| 67 | |
| 68 | ### Plugin doesn't load |
| 69 | - Check the plugin path is correct |
| 70 | - Verify the plugin passes `validator` tests first |
| 71 | - Check logs: Console.app (macOS), Event Viewer (Windows), or stderr (Linux) |
| 72 | |
| 73 | ### UI doesn't appear |
| 74 | - The plugin might not have an editor (`hasEditor()` returns false) |
| 75 | - Check if `createEditor()` is returning a valid view |
| 76 | - **Linux**: Ensure X11 display is available (`echo $DISPLAY`) |
| 77 | |
| 78 | ### UI appears but is blank/wrong size |
| 79 | - Check `defaultEditorSize()` returns valid dimensions |
| 80 | - For WebView UIs, check the HTML content is being set correctly |
| 81 | - Try with `--secondWindow` to see if the issue is with first-time setup |