896 lines
23 KiB
Markdown
896 lines
23 KiB
Markdown
---
|
||
argument-hint: "[format] [platform] [--quick|--full]"
|
||
description: "Comprehensive DAW compatibility testing across Logic Pro, Ableton Live, Pro Tools, Cubase, Reaper, FL Studio, Bitwig, and Ardour"
|
||
allowed-tools: Bash, Read, Write, AskUserQuestion
|
||
model: sonnet
|
||
---
|
||
|
||
# /run-daw-tests - DAW Compatibility Testing
|
||
|
||
Execute comprehensive compatibility testing across multiple DAWs to ensure your JUCE plugin works correctly in all major digital audio workstations.
|
||
|
||
## Overview
|
||
|
||
This command automates DAW compatibility testing, guiding you through validation in Logic Pro, Ableton Live, Pro Tools, Cubase, Reaper, FL Studio, Bitwig, and Ardour. It ensures automation, state save/load, offline rendering, and format-specific features work correctly across platforms.
|
||
|
||
## Syntax
|
||
|
||
```bash
|
||
/run-daw-tests [format] [platform] [--quick|--full]
|
||
```
|
||
|
||
### Arguments
|
||
|
||
- `format` (optional): Target format - `vst3`, `au`, `aax`, `standalone`, or `all` (default: `all`)
|
||
- `platform` (optional): Target platform - `macos`, `windows`, `linux`, or `current` (default: `current`)
|
||
- `--quick`: Run essential tests only (3 DAWs, 30 min)
|
||
- `--full`: Run comprehensive test matrix (all DAWs, 2-3 hours)
|
||
|
||
### Examples
|
||
|
||
```bash
|
||
# Quick test in 3 major DAWs on current platform
|
||
/run-daw-tests --quick
|
||
|
||
# Full test matrix for VST3 on macOS
|
||
/run-daw-tests vst3 macos --full
|
||
|
||
# Test all formats on current platform
|
||
/run-daw-tests all current --full
|
||
|
||
# Test AU format only (macOS)
|
||
/run-daw-tests au macos --quick
|
||
```
|
||
|
||
## Instructions
|
||
|
||
### Step 1: Pre-Flight Validation
|
||
|
||
**@test-automation-engineer** - Verify builds are ready for DAW testing.
|
||
|
||
1. **Check plugin builds exist:**
|
||
```bash
|
||
# macOS
|
||
ls -la ~/Library/Audio/Plug-Ins/VST3/MyPlugin.vst3
|
||
ls -la ~/Library/Audio/Plug-Ins/Components/MyPlugin.component
|
||
|
||
# Windows
|
||
dir "%CommonProgramFiles%\VST3\MyPlugin.vst3"
|
||
|
||
# Linux
|
||
ls -la ~/.vst3/MyPlugin.vst3
|
||
```
|
||
|
||
2. **Verify plugin loads in standalone validator:**
|
||
```bash
|
||
# Run pluginval first
|
||
pluginval --strictness-level 10 --validate MyPlugin.vst3
|
||
```
|
||
|
||
3. **Check for critical issues:**
|
||
- Build is Release configuration (not Debug)
|
||
- No debug assertions enabled
|
||
- Splash screen disabled (if commercial JUCE license)
|
||
- Code signed (macOS/Windows production builds)
|
||
|
||
**If pluginval fails, STOP and fix issues before DAW testing.**
|
||
|
||
### Step 2: DAW Testing Matrix
|
||
|
||
**@daw-compatibility-engineer** + **@qa-engineer** - Execute systematic testing across DAWs.
|
||
|
||
Claude will guide you through DAW-by-DAW testing with standardized test procedures.
|
||
|
||
---
|
||
|
||
## Platform-Specific Test Plans
|
||
|
||
### macOS DAW Testing
|
||
|
||
#### 1. Logic Pro (AU and VST3)
|
||
|
||
**Time Estimate:** 20-30 minutes
|
||
|
||
**Prerequisites:**
|
||
- Logic Pro installed (latest version recommended)
|
||
- AU format: `~/Library/Audio/Plug-Ins/Components/MyPlugin.component`
|
||
- VST3 format: `~/Library/Audio/Plug-Ins/VST3/MyPlugin.vst3`
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **AU Validation:**
|
||
```bash
|
||
# Run Apple's auval
|
||
auval -v aufx Plug Manu # Replace with your plugin type, code, manufacturer
|
||
# Must show "PASS" - if it fails, fix before continuing
|
||
```
|
||
|
||
2. **Plugin Loading (AU):**
|
||
- Open Logic Pro
|
||
- Create new empty project
|
||
- Add audio track
|
||
- Load plugin from AU menu
|
||
- **Verify:** Plugin window opens without errors
|
||
- **Verify:** UI displays correctly on Retina displays
|
||
- **Check:** No console errors: `Console.app → Filter: Logic`
|
||
|
||
3. **Plugin Loading (VST3):**
|
||
- Reset plugin manager: `Logic Pro → Preferences → Plug-In Manager → Reset & Rescan`
|
||
- Load plugin from VST3 menu
|
||
- **Verify:** VST3 and AU versions don't conflict
|
||
|
||
4. **Automation Recording:**
|
||
- Enable automation: `A` key
|
||
- Adjust plugin parameter while playing
|
||
- **Verify:** Automation curve appears in track
|
||
- **Verify:** Playback follows automation smoothly
|
||
|
||
5. **Automation Playback:**
|
||
- Create automation ramps (slow and fast)
|
||
- **Test:** Parameter changes are smooth (no zipper noise)
|
||
- **Test:** Modulation tracks automation precisely
|
||
|
||
6. **State Save/Load:**
|
||
- Adjust several parameters
|
||
- Save project: `⌘S`
|
||
- Close Logic Pro
|
||
- Reopen project
|
||
- **Verify:** All parameters restored exactly
|
||
- **Verify:** Plugin state is identical
|
||
|
||
7. **Offline Bounce:**
|
||
- Set project tempo to 120 BPM
|
||
- Create automation on tempo-synced parameter
|
||
- Bounce: `⌘B` → set format
|
||
- Also record realtime pass
|
||
- **Verify:** Offline bounce matches realtime render (compare waveforms)
|
||
|
||
8. **Multiple Instances:**
|
||
- Add 10+ instances of plugin
|
||
- **Verify:** No crashes or performance issues
|
||
- **Verify:** Each instance maintains independent state
|
||
- **Check:** CPU meter stays reasonable
|
||
|
||
9. **Logic-Specific Features:**
|
||
- **Verify:** Plugin appears in correct category
|
||
- **Test:** Side-chain routing (if applicable)
|
||
- **Test:** Plugin delay compensation works
|
||
|
||
**Report Issues:**
|
||
- Screenshot any visual glitches
|
||
- Note exact steps to reproduce any bugs
|
||
- Check Console.app for crash logs: `~/Library/Logs/DiagnosticReports/`
|
||
|
||
---
|
||
|
||
#### 2. Ableton Live (VST3)
|
||
|
||
**Time Estimate:** 15-20 minutes
|
||
|
||
**Prerequisites:**
|
||
- Ableton Live installed
|
||
- VST3 format: `~/Library/Audio/Plug-Ins/VST3/MyPlugin.vst3`
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Loading:**
|
||
- Launch Ableton Live
|
||
- Rescan plugins: `Preferences → Plug-Ins → Rescan`
|
||
- Drag plugin onto track
|
||
- **Verify:** Device view displays correctly
|
||
- **Verify:** Plugin responds to input
|
||
|
||
2. **Automation:**
|
||
- Show automation lane
|
||
- Record automation on key parameter
|
||
- **Test:** Breakpoint automation (not just lines)
|
||
- **Verify:** Automation playback is smooth
|
||
|
||
3. **Undo/Redo:**
|
||
- Change multiple parameters
|
||
- Undo: `⌘Z` repeatedly
|
||
- Redo: `⌘⇧Z`
|
||
- **Verify:** All parameter changes tracked correctly
|
||
- **Verify:** No crashes on undo/redo
|
||
|
||
4. **Project Save/Load:**
|
||
- Save Live set
|
||
- Close and reopen
|
||
- **Verify:** Plugin state restored
|
||
- **Verify:** Automation preserved
|
||
|
||
5. **Freeze/Flatten:**
|
||
- Freeze track with plugin
|
||
- **Verify:** Frozen audio is correct
|
||
- Flatten to audio
|
||
- **Verify:** Result matches realtime
|
||
|
||
6. **CPU Efficiency:**
|
||
- Check Live's CPU meter with plugin active
|
||
- **Verify:** CPU usage is reasonable
|
||
- Test with high track count (20+ instances)
|
||
|
||
**Ableton-Specific Tests:**
|
||
- **Test:** Macro mapping (map plugin param to Live macro)
|
||
- **Test:** Plug-in delay compensation indicator
|
||
- **Verify:** Plugin works in both Arrangement and Session view
|
||
|
||
---
|
||
|
||
#### 3. Reaper (VST3 and AU)
|
||
|
||
**Time Estimate:** 15 minutes
|
||
|
||
**Prerequisites:**
|
||
- Reaper installed
|
||
- Both VST3 and AU formats available
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Scanning:**
|
||
- `Preferences → Plug-ins → VST → Re-scan`
|
||
- `Preferences → Plug-ins → AU → Re-scan`
|
||
- **Verify:** Both formats appear
|
||
|
||
2. **Basic Functionality:**
|
||
- Add plugin to track FX chain
|
||
- **Verify:** UI displays correctly
|
||
- **Test:** Parameter changes reflect immediately
|
||
|
||
3. **State Management:**
|
||
- Adjust parameters
|
||
- Save project
|
||
- Reload project
|
||
- **Verify:** State restored perfectly
|
||
|
||
4. **Automation:**
|
||
- Show track envelope for plugin parameter
|
||
- Draw automation curve
|
||
- **Verify:** Playback follows automation
|
||
- **Test:** Both slow and fast parameter changes
|
||
|
||
5. **Reaper-Specific:**
|
||
- **Test:** Plugin works in FX chain and track input FX
|
||
- **Test:** Offline processing mode
|
||
- **Verify:** Plugin bypasses cleanly
|
||
|
||
---
|
||
|
||
#### 4. Pro Tools (AAX) - If Available
|
||
|
||
**Time Estimate:** 20 minutes
|
||
|
||
**Prerequisites:**
|
||
- Pro Tools installed
|
||
- AAX format code-signed with PACE iLok
|
||
- iLok with valid developer account
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **AAX Validation:**
|
||
- Launch Pro Tools
|
||
- Check plugin appears in correct category
|
||
- **Verify:** No "damaged" or "unsigned" warnings
|
||
|
||
2. **Plugin Loading:**
|
||
- Create audio track
|
||
- Add plugin as insert
|
||
- **Verify:** Plugin GUI opens
|
||
- **Verify:** AAX wrapper reports correct latency
|
||
|
||
3. **Automation:**
|
||
- Enable automation mode
|
||
- Write automation (Latch mode)
|
||
- **Verify:** Automation writes correctly
|
||
- Switch to Read mode
|
||
- **Verify:** Automation plays back accurately
|
||
|
||
4. **AudioSuite Mode (Offline Processing):**
|
||
- Select audio region
|
||
- `AudioSuite → [Your Plugin Category] → MyPlugin`
|
||
- Process audio offline
|
||
- **Verify:** Result matches realtime processing
|
||
|
||
5. **Session Save/Load:**
|
||
- Save session
|
||
- Close Pro Tools
|
||
- Reopen session
|
||
- **Verify:** Plugin state and automation restored
|
||
|
||
6. **Pro Tools Specifics:**
|
||
- **Test:** Plugin delay compensation (PDC) reporting
|
||
- **Verify:** No clicks on bypass enable/disable
|
||
- **Test:** Works in both Mono and Stereo formats
|
||
|
||
---
|
||
|
||
### Windows DAW Testing
|
||
|
||
#### 5. Ableton Live (Windows - VST3)
|
||
|
||
**Time Estimate:** 15 minutes
|
||
|
||
**Prerequisites:**
|
||
- Ableton Live (Windows)
|
||
- VST3: `C:\Program Files\Common Files\VST3\MyPlugin.vst3`
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Loading:**
|
||
- Launch Live
|
||
- Rescan VST plugins
|
||
- Load plugin
|
||
- **Verify:** No missing dependencies (MSVC runtime)
|
||
- **Verify:** UI displays on high-DPI displays (125%, 150%, 200%)
|
||
|
||
2. **Functionality Tests:**
|
||
- Follow macOS Ableton tests (Steps 2-6 from above)
|
||
- **Additional:** Test on multiple monitors
|
||
|
||
3. **Windows-Specific:**
|
||
- **Verify:** No antivirus false positives
|
||
- **Check:** Task Manager for memory leaks during long sessions
|
||
|
||
---
|
||
|
||
#### 6. FL Studio (VST3)
|
||
|
||
**Time Estimate:** 15 minutes
|
||
|
||
**Prerequisites:**
|
||
- FL Studio installed
|
||
- VST3 format in plugin path
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Loading:**
|
||
- Add plugin to mixer track
|
||
- **Verify:** Plugin loads without errors
|
||
- **Verify:** Wrapper integration works correctly
|
||
|
||
2. **FL Studio Wrapper:**
|
||
- **Test:** Generic wrapper GUI vs plugin GUI
|
||
- **Verify:** Parameter automation works
|
||
- **Check:** No conflicts with FL's internal routing
|
||
|
||
3. **State Save/Load:**
|
||
- Save project (.flp)
|
||
- Reload
|
||
- **Verify:** Plugin state preserved
|
||
- **Test:** Preset saving in FL's browser
|
||
|
||
4. **Multiple Instances:**
|
||
- Load 10+ instances
|
||
- **Verify:** No multi-instance issues (FL Studio has had issues here)
|
||
- **Verify:** Each instance independent
|
||
|
||
5. **Rendering:**
|
||
- Render to audio file
|
||
- **Verify:** No artifacts or glitches
|
||
- **Compare:** Realtime vs. offline render
|
||
|
||
---
|
||
|
||
#### 7. Cubase/Nuendo (VST3)
|
||
|
||
**Time Estimate:** 15 minutes
|
||
|
||
**Prerequisites:**
|
||
- Cubase or Nuendo installed
|
||
- VST3 format
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Loading:**
|
||
- VST Plug-in Manager → Rescan
|
||
- Add plugin to audio track
|
||
- **Verify:** Plugin appears in correct category
|
||
|
||
2. **Automation:**
|
||
- Show automation track
|
||
- Write automation (W mode)
|
||
- **Test:** Ramp automation
|
||
- **Verify:** Playback is smooth
|
||
|
||
3. **Expression Maps (If Applicable):**
|
||
- Test MIDI/parameter interactions
|
||
- Verify plugin responds correctly
|
||
|
||
4. **Offline Processing:**
|
||
- Direct Offline Processing
|
||
- Apply plugin to region
|
||
- **Verify:** Matches realtime
|
||
|
||
5. **Project Save/Load:**
|
||
- Standard save/load test
|
||
- **Verify:** State restoration
|
||
|
||
---
|
||
|
||
#### 8. Reaper (Windows - VST3)
|
||
|
||
**Time Estimate:** 10 minutes
|
||
|
||
**Prerequisites:**
|
||
- Reaper (Windows)
|
||
- VST3 format
|
||
|
||
**Test Procedure:**
|
||
- Follow macOS Reaper tests (adapted for Windows paths)
|
||
- **Verify:** No Windows-specific issues
|
||
|
||
---
|
||
|
||
### Linux DAW Testing
|
||
|
||
#### 9. Reaper (Linux - VST3)
|
||
|
||
**Time Estimate:** 10 minutes
|
||
|
||
**Prerequisites:**
|
||
- Reaper for Linux
|
||
- VST3: `~/.vst3/MyPlugin.vst3`
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Loading:**
|
||
- Rescan VST3 plugins
|
||
- Load plugin
|
||
- **Verify:** No missing dependencies: `ldd MyPlugin.vst3`
|
||
|
||
2. **Basic Functionality:**
|
||
- Parameter changes work
|
||
- State save/load works
|
||
- Automation works
|
||
|
||
3. **Linux-Specific:**
|
||
- **Test:** Different desktop environments (GNOME, KDE, XFCE)
|
||
- **Verify:** UI scaling on HiDPI displays
|
||
- **Check:** No X11/Wayland issues
|
||
|
||
---
|
||
|
||
#### 10. Ardour (VST3)
|
||
|
||
**Time Estimate:** 10 minutes
|
||
|
||
**Prerequisites:**
|
||
- Ardour installed
|
||
- VST3 format
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Manager:**
|
||
- Rescan plugins
|
||
- Verify plugin appears
|
||
|
||
2. **Basic Tests:**
|
||
- Add to track
|
||
- Test automation
|
||
- Save/load session
|
||
- **Verify:** State preservation
|
||
|
||
3. **Ardour-Specific:**
|
||
- **Test:** Plugin latency compensation
|
||
- **Verify:** Works with Ardour's routing
|
||
|
||
---
|
||
|
||
#### 11. Bitwig Studio (VST3)
|
||
|
||
**Time Estimate:** 10 minutes
|
||
|
||
**Prerequisites:**
|
||
- Bitwig Studio
|
||
- VST3 format
|
||
|
||
**Test Procedure:**
|
||
|
||
1. **Plugin Loading:**
|
||
- Rescan plugins
|
||
- Load plugin on track
|
||
- **Verify:** UI displays correctly
|
||
|
||
2. **Bitwig Modulation:**
|
||
- Map Bitwig modulator to plugin parameter
|
||
- **Verify:** Modulation works smoothly
|
||
- **Test:** No conflicts with plugin's internal modulation
|
||
|
||
3. **Project Management:**
|
||
- Save project
|
||
- Reload
|
||
- **Verify:** State restored
|
||
|
||
---
|
||
|
||
## Step 3: Cross-DAW Compatibility Validation
|
||
|
||
**@daw-compatibility-engineer** - Verify consistency across DAWs.
|
||
|
||
After testing individual DAWs, perform cross-DAW validation:
|
||
|
||
### 1. Preset Compatibility
|
||
|
||
**Test:** Do presets work across all DAWs?
|
||
|
||
```bash
|
||
# Save preset in Logic Pro (AU)
|
||
# Load same preset in Ableton Live (VST3)
|
||
# Verify parameters are identical
|
||
```
|
||
|
||
**Expected:** Presets should transfer seamlessly between DAW formats.
|
||
|
||
**Common Issue:** AU `.aupreset` vs VST3 `.vstpreset` - ensure both save correctly.
|
||
|
||
### 2. Automation Consistency
|
||
|
||
**Test:** Does automation sound identical across DAWs?
|
||
|
||
- Create same automation curve in 3 different DAWs
|
||
- Bounce/render each
|
||
- Compare waveforms (should be bit-identical or very close)
|
||
|
||
**Expected:** Sample-accurate automation across DAWs.
|
||
|
||
**Common Issue:** Different smoothing algorithms can cause minor differences.
|
||
|
||
### 3. Offline vs Realtime Rendering
|
||
|
||
**Test:** Does offline rendering match realtime in all DAWs?
|
||
|
||
- Test in Logic Pro, Ableton Live, Reaper, Pro Tools
|
||
- Compare realtime and offline bounces
|
||
|
||
**Expected:** Bit-perfect match (or extremely close).
|
||
|
||
**Red Flag:** If renders differ significantly, investigate:
|
||
- Buffer size assumptions in DSP code
|
||
- Tempo-sync calculations
|
||
- Randomization/non-determinism
|
||
|
||
### 4. State Serialization Compatibility
|
||
|
||
**Test:** Can projects transfer between DAWs?
|
||
|
||
- Save plugin state in one DAW
|
||
- Manually load that state data in another DAW
|
||
- Verify parameter values match
|
||
|
||
**Expected:** Same underlying state representation.
|
||
|
||
**Implementation:** Ensure `getStateInformation()` / `setStateInformation()` are format-agnostic.
|
||
|
||
---
|
||
|
||
## Step 4: Generate Compatibility Matrix
|
||
|
||
**@qa-engineer** - Document test results.
|
||
|
||
Create a compatibility matrix spreadsheet:
|
||
|
||
| DAW | Platform | Format | Load | Automation | State Save | Offline Render | Issues |
|
||
|-----|----------|--------|------|------------|------------|----------------|--------|
|
||
| Logic Pro | macOS | AU | ✅ | ✅ | ✅ | ✅ | None |
|
||
| Logic Pro | macOS | VST3 | ✅ | ✅ | ✅ | ✅ | None |
|
||
| Ableton Live | macOS | VST3 | ✅ | ✅ | ✅ | ✅ | None |
|
||
| Ableton Live | Windows | VST3 | ✅ | ⚠️ | ✅ | ✅ | Minor: Undo lag |
|
||
| Pro Tools | macOS | AAX | ✅ | ✅ | ✅ | ✅ | None |
|
||
| Reaper | macOS | AU | ✅ | ✅ | ✅ | ✅ | None |
|
||
| Reaper | macOS | VST3 | ✅ | ✅ | ✅ | ✅ | None |
|
||
| FL Studio | Windows | VST3 | ✅ | ✅ | ⚠️ | ✅ | State lost on crash |
|
||
| Cubase | Windows | VST3 | ✅ | ✅ | ✅ | ✅ | None |
|
||
| Bitwig | Linux | VST3 | ✅ | ✅ | ✅ | ✅ | None |
|
||
|
||
**Legend:**
|
||
- ✅ Pass
|
||
- ⚠️ Pass with minor issues
|
||
- ❌ Fail
|
||
- ➖ Not tested
|
||
|
||
**Save to:** `test-results/daw-compatibility-matrix-[date].md`
|
||
|
||
---
|
||
|
||
## Step 5: Issue Documentation and Triage
|
||
|
||
**@support-engineer** - Document issues for engineering.
|
||
|
||
For each issue found, create structured bug report:
|
||
|
||
### Bug Report Template
|
||
|
||
```markdown
|
||
## Issue: [Brief description]
|
||
|
||
**DAW:** Logic Pro 11.0.1
|
||
**Platform:** macOS 14.5 (Sonoma)
|
||
**Format:** AU
|
||
**Severity:** Medium
|
||
|
||
### Steps to Reproduce
|
||
1. Load plugin on audio track
|
||
2. Enable automation
|
||
3. Record automation on Cutoff parameter
|
||
4. Save project and reopen
|
||
|
||
### Expected Behavior
|
||
Automation curve should be preserved and play back smoothly.
|
||
|
||
### Actual Behavior
|
||
Automation curve appears but playback has zipper noise on parameter changes.
|
||
|
||
### Additional Info
|
||
- Happens only in Logic Pro (not in Live or Reaper)
|
||
- Only affects Cutoff parameter (other parameters fine)
|
||
- Console shows warning: "Parameter smoothing issue"
|
||
|
||
### Files
|
||
- Project file: `repro-logic-automation.logicx`
|
||
- Screen recording: `automation-bug.mov`
|
||
- Console log: `console-errors.txt`
|
||
```
|
||
|
||
**@daw-compatibility-engineer** - Investigate root cause and implement fixes.
|
||
|
||
---
|
||
|
||
## Step 6: Performance Benchmarking
|
||
|
||
**@qa-engineer** - Measure performance in each DAW.
|
||
|
||
Document CPU usage across DAWs:
|
||
|
||
1. **Single Instance CPU:**
|
||
- Load plugin on single track
|
||
- Play audio through it
|
||
- Record CPU usage from DAW's performance meter
|
||
|
||
2. **Multi-Instance Stress Test:**
|
||
- Load 50 instances
|
||
- Measure total CPU
|
||
- Check for performance degradation (should scale linearly)
|
||
|
||
3. **Latency Reporting:**
|
||
- Verify plugin reports latency correctly
|
||
- Check that DAW's latency compensation works
|
||
|
||
**Expected:** Consistent performance across DAWs (within 10% variance).
|
||
|
||
**Red Flag:** If one DAW shows 2x CPU usage, investigate wrapper or host-specific issues.
|
||
|
||
---
|
||
|
||
## Quick Test Mode (--quick)
|
||
|
||
For rapid validation (30 minutes), test these 3 DAWs only:
|
||
|
||
### macOS:
|
||
1. Logic Pro (AU) - 10 min
|
||
2. Ableton Live (VST3) - 10 min
|
||
3. Reaper (VST3) - 10 min
|
||
|
||
### Windows:
|
||
1. Ableton Live (VST3) - 10 min
|
||
2. FL Studio (VST3) - 10 min
|
||
3. Reaper (VST3) - 10 min
|
||
|
||
### Linux:
|
||
1. Reaper (VST3) - 10 min
|
||
2. Bitwig (VST3) - 10 min
|
||
3. Ardour (VST3) - 10 min
|
||
|
||
Run core tests only:
|
||
- Plugin loads
|
||
- Automation works
|
||
- State saves/loads
|
||
- No crashes
|
||
|
||
---
|
||
|
||
## Full Test Mode (--full)
|
||
|
||
Comprehensive testing (2-3 hours):
|
||
- All DAWs listed above
|
||
- All test procedures
|
||
- Cross-DAW validation
|
||
- Performance benchmarking
|
||
- Issue documentation
|
||
|
||
---
|
||
|
||
## Automated Checks (Where Possible)
|
||
|
||
Some tests can be scripted:
|
||
|
||
### 1. Plugin Availability Check
|
||
|
||
```bash
|
||
# macOS
|
||
function check_plugin_installed() {
|
||
local format=$1
|
||
local name=$2
|
||
|
||
case $format in
|
||
vst3)
|
||
[ -d ~/Library/Audio/Plug-Ins/VST3/$name.vst3 ] && echo "✅ VST3 found" || echo "❌ VST3 missing"
|
||
;;
|
||
au)
|
||
[ -d ~/Library/Audio/Plug-Ins/Components/$name.component ] && echo "✅ AU found" || echo "❌ AU missing"
|
||
;;
|
||
aax)
|
||
[ -d "/Library/Application Support/Avid/Audio/Plug-Ins/$name.aaxplugin" ] && echo "✅ AAX found" || echo "❌ AAX missing"
|
||
;;
|
||
esac
|
||
}
|
||
|
||
check_plugin_installed vst3 MyPlugin
|
||
check_plugin_installed au MyPlugin
|
||
```
|
||
|
||
### 2. AU Validation (macOS)
|
||
|
||
```bash
|
||
# Automated AU validation
|
||
auval -v aufx Plug Manu 2>&1 | tee auval-results.txt
|
||
|
||
if grep -q "PASSED" auval-results.txt; then
|
||
echo "✅ AU Validation Passed"
|
||
else
|
||
echo "❌ AU Validation Failed"
|
||
cat auval-results.txt
|
||
exit 1
|
||
fi
|
||
```
|
||
|
||
### 3. Check for Missing Dependencies (Windows)
|
||
|
||
```powershell
|
||
# Check for DLL dependencies
|
||
$dllCheck = dumpbin /dependents "C:\Program Files\Common Files\VST3\MyPlugin.vst3\Contents\x86_64-win\MyPlugin.vst3"
|
||
|
||
if ($dllCheck -match "MSVCP|VCRUNTIME") {
|
||
Write-Host "⚠️ Warning: MSVC runtime dependencies detected" -ForegroundColor Yellow
|
||
Write-Host "Ensure static linking or distribute runtime"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Integration with CI/CD
|
||
|
||
Add DAW testing to GitHub Actions workflow:
|
||
|
||
```yaml
|
||
# .github/workflows/daw-testing.yml
|
||
name: DAW Compatibility Testing
|
||
|
||
on:
|
||
release:
|
||
types: [created]
|
||
|
||
jobs:
|
||
daw-tests-macos:
|
||
runs-on: macos-latest
|
||
steps:
|
||
- uses: actions/checkout@v3
|
||
|
||
- name: Build plugin
|
||
run: |
|
||
cmake -B build -DCMAKE_BUILD_TYPE=Release
|
||
cmake --build build
|
||
|
||
- name: Install plugin
|
||
run: |
|
||
cp -r build/MyPlugin_artefacts/VST3/MyPlugin.vst3 ~/Library/Audio/Plug-Ins/VST3/
|
||
cp -r build/MyPlugin_artefacts/AU/MyPlugin.component ~/Library/Audio/Plug-Ins/Components/
|
||
|
||
- name: Run auval
|
||
run: |
|
||
auval -v aufx Plug Manu
|
||
|
||
# Manual DAW testing must be done locally
|
||
- name: Reminder
|
||
run: echo "⚠️ Manual DAW testing required - see /run-daw-tests command"
|
||
```
|
||
|
||
---
|
||
|
||
## Definition of Done
|
||
|
||
DAW testing is complete when:
|
||
|
||
- ✅ All targeted DAWs tested (quick or full mode)
|
||
- ✅ Compatibility matrix generated and saved
|
||
- ✅ All critical issues documented with repro steps
|
||
- ✅ Performance benchmarks recorded
|
||
- ✅ Cross-DAW consistency verified (presets, automation, rendering)
|
||
- ✅ Results shared with team for triage
|
||
- ✅ Regression testing plan created for future releases
|
||
|
||
---
|
||
|
||
## Common Issues and Solutions
|
||
|
||
### Issue: Plugin doesn't appear in DAW
|
||
|
||
**Cause:** Plugin not in correct location or not scanned.
|
||
|
||
**Solution:**
|
||
- Verify plugin path (see platform-specific paths above)
|
||
- Rescan plugins in DAW preferences
|
||
- Check file permissions (should be readable)
|
||
- macOS: Remove quarantine attribute: `xattr -dr com.apple.quarantine MyPlugin.vst3`
|
||
|
||
### Issue: AU validation fails on macOS
|
||
|
||
**Cause:** Apple's auval is very strict.
|
||
|
||
**Solution:**
|
||
- Check `JucePlugin_*` defines in PluginProcessor.h
|
||
- Ensure manufacturer code and plugin code are correct
|
||
- Verify bundle ID matches: `com.yourcompany.pluginname`
|
||
- Check Info.plist in AU bundle
|
||
|
||
### Issue: Automation has zipper noise
|
||
|
||
**Cause:** Insufficient parameter smoothing.
|
||
|
||
**Solution:**
|
||
```cpp
|
||
// In PluginProcessor.cpp
|
||
void prepareToPlay(double sampleRate, int samplesPerBlock) {
|
||
// Smooth parameters over ~20ms
|
||
parameterSmoother.reset(sampleRate, 0.02);
|
||
}
|
||
|
||
void processBlock(AudioBuffer<float>& buffer, MidiBuffer&) {
|
||
auto cutoffTarget = *cutoffParam;
|
||
auto smoothedCutoff = parameterSmoother.getNextValue(cutoffTarget);
|
||
// Use smoothedCutoff in DSP
|
||
}
|
||
```
|
||
|
||
### Issue: Offline render doesn't match realtime
|
||
|
||
**Cause:** Non-deterministic behavior or tempo-sync assumptions.
|
||
|
||
**Solution:**
|
||
- Remove any randomization or ensure seeded RNG
|
||
- Use `getPlayHead()` for tempo info, don't assume fixed tempo
|
||
- Ensure `prepareToPlay()` resets all state
|
||
|
||
### Issue: State doesn't restore correctly
|
||
|
||
**Cause:** `getStateInformation()` / `setStateInformation()` mismatch.
|
||
|
||
**Solution:**
|
||
- Use `ValueTree::toXmlString()` and `ValueTree::fromXml()` for robust serialization
|
||
- Test round-trip: save → load → save → compare
|
||
- Version your state format for backward compatibility
|
||
|
||
---
|
||
|
||
## Expert Help
|
||
|
||
Delegate DAW testing tasks:
|
||
|
||
- **@daw-compatibility-engineer** - Lead DAW testing, investigate compatibility issues
|
||
- **@qa-engineer** - Execute manual test procedures, document results
|
||
- **@support-engineer** - Triage and document bug reports
|
||
- **@test-automation-engineer** - Automate checks where possible
|
||
- **@technical-lead** - Review critical issues and prioritize fixes
|
||
|
||
---
|
||
|
||
## Related Documentation
|
||
|
||
- **TESTING_STRATEGY.md** - Overall testing approach
|
||
- **RELEASE_CHECKLIST.md** - Pre-release validation (includes DAW testing)
|
||
- **daw-compatibility-guide** skill - DAW-specific quirks and solutions
|
||
- `/run-pluginval` command - Plugin format validation
|
||
|
||
---
|
||
|
||
**Remember:** DAW compatibility testing is critical for user satisfaction. Each DAW has unique quirks and behaviors. Thorough testing prevents support headaches and builds trust with users.
|