Complete documentation for the Danzig VST3 plugin framework in Zig.
- Danzig Complete Guide - Full API reference, quickstart, and examples
- Real-World Guide - Practical development, pitfalls, and complete examples
- VST3 Architecture - Deep dive into VST3, COM, and how Danzig abstracts them
- Start here: Installation & Setup
- Verify installation: Verify Installation
- 10-minute tutorial: Quick Start
- Your first plugin: Your First Plugin in 10 Minutes
- Complete API docs: API Reference
- Plugin class: Plugin Class
- Parameters: Parameter System
- Audio processing: Audio Processing
- Full guide: Plugin Development Guide
- Audio processing patterns: Audio Processing
- Parameter handling: Parameter System
- Build & deployment: Build & Deployment
- Advanced Topics
- Memory allocation strategies
- SIMD optimization
- Error handling
- Multi-threading
- Project setup: Getting Started the Right Way
- Common pitfalls: Common Pitfalls
- Working examples: Real-World Examples
- Performance: Performance Optimization
- Testing: Testing Your Plugin
- Debugging: Debugging Techniques
- VST3 vs Other Formats
- COM/VST-MA Fundamentals
- GUIDs and Interface IDs
- Virtual Tables (VTables)
- The IUnknown Pattern
- Multi-Interface Objects
- VST3 Plugin Architecture
- Implementing in Zig
- Complete VST3 Example
- Gain plugin: Danzig-Gain
- Tremolo: Real-World Examples - Tremolo
- Soft Clipper: Real-World Examples - Soft Clipper
- Delay/Echo: Real-World Examples - Delay
- EQ: Plugin Development Guide - EQ Filter
- Troubleshooting
- Build issues
- Runtime issues
- Parameter problems
- Performance issues
-
Start: Danzig Complete Guide - Quick Start
- 10-minute setup and first plugin
-
Understand: Danzig Complete Guide - Core Concepts
- Learn plugin lifecycle, parameters, allocators
-
Learn API: Danzig Complete Guide - API Reference
- Understand the Plugin class and utilities
-
Build: Real-World Guide - Getting Started
- Set up a project properly
-
Explore Examples: Real-World Guide - Examples
- Tremolo, Soft Clipper, Delay plugins
-
Create Your Own: Follow Plugin Development Guide
-
Review: VST3 Architecture
- Understand why VST3 is complex, how Danzig helps
-
Deep Dive: VST3 Architecture - COM
- Learn what's happening under the hood
-
Reference: API Reference
- Use as needed for your project
-
Optimize: Real-World Guide - Performance
- Make your plugins efficient
-
Distribute: Real-World Guide - Distribution
- Package and share your creation
-
Architecture Review: VST3 Architecture - Complete
- See how Danzig implements VST3 abstractions
-
Extend Danzig: Read source code in
src/danzig/- Add your own abstractions on top
-
Advanced Examples: Real-World Guide - Optimization
- SIMD, denormals, profiling
-
Threading: Advanced Topics - Multi-threading
- Lock-free UI communication
Type: Tutorial + Reference Length: ~26 KB Topics:
- Full installation and setup guide
- Quick start in 10 minutes
- Complete API reference
- Plugin development walkthrough
- Audio processing techniques
- Parameter system deep dive
- Build and deployment
- Advanced topics
- Troubleshooting
Best for: Learning Danzig from scratch, API reference, how to build different plugin types
Type: Technical Deep Dive Length: ~22 KB Topics:
- VST3 vs other plugin formats
- COM (Component Object Model) explained
- GUIDs and interface IDs
- Virtual tables (VTables)
- IUnknown pattern
- Multi-interface objects
- Implementing VST3 in Zig
- Complete working example
- Why COM/VST3 is complex
Best for: Understanding VST3 architecture, learning COM, implementing custom interfaces
Type: Practical Guide Length: ~18 KB Topics:
- Project setup templates
- Common pitfalls and how to fix them
- 3 complete, real-world plugin examples
- Performance optimization techniques
- Testing strategies
- Debugging techniques
- Multi-threading considerations
- Distribution and packaging
Best for: Avoiding mistakes, practical implementation, complete working examples, performance tuning
- Gain: See
examples/danzig-gain/root.zig - Pass-through: Real-World Guide - Project Template
- Tremolo: Real-World Guide - Example 1
- Soft Clipper: Real-World Guide - Example 2
- EQ: Complete Guide - EQ Example
- Delay/Echo: Real-World Guide - Example 3
- Synthesizer Skeleton: Complete Guide - Compressor
const MyPlugin = struct {
plugin: danzig.Plugin,
pub fn init(allocator) !*MyPlugin {
const self = try allocator.create(MyPlugin);
self.plugin = danzig.Plugin.init(allocator);
return self;
}
};try plugin.addParameter(.{
.id = 0,
.minValue = -48.0,
.maxValue = 12.0,
.defaultValue = 0.0,
});pub fn process(self, inputs, outputs, channels, samples) void {
for (0..channels) |ch| {
for (0..samples) |s| {
outputs[ch][s] = self.dsp(inputs[ch][s]);
}
}
}pub fn setParameterNormalized(self, id, normalized) void {
const plain = danzig.denormalize(normalized, -48.0, 12.0);
// Use plain value
}bash gen_build_spec.sh
zig build
# Output: zig-out/lib/libplugin_name.dylib- VST3 Official Documentation
- Steinberg VST3 C API
- COM in Plain C - Jeff Glatt's seminal article
- Audio DSP Learning
- CLAP Plugin Standard
- Superelectric VST3/COM/Zig Post - Excellent reference for this framework
- Quick lookup: Check API Reference
- How-to: Check Real-World Guide
- Understanding concepts: Check VST3 Architecture
- Debugging: Check Troubleshooting
- Examples: Check Real-World Examples
Q: How do I add a parameter? A: See Parameter System and Real-World Guide - Example 1
Q: How do I process audio? A: See Audio Processing and Real-World Examples
Q: What's happening under the hood? A: See VST3 Architecture
Q: How do I avoid common mistakes? A: See Common Pitfalls
Q: How do I optimize for performance? A: See Performance Optimization
- Danzig Version: 1.0
- Zig Requirement: 0.14.0+
- VST3: 3.7.0+
- Last Updated: 2026-03-15
- Documentation Status: Complete ✅
- Framework Homepage: Danzig README
- Example Plugin: danzig-gain
- Source Code: danzig library
- Build System: Azazel
Happy plugin development! 🎵