VST3 Data Exchange (Example and Architecture)

Overview ⚠️ This article assumes familiarity with VST3 Processor/Controller architecture and IMessage. I was working on my Audio-to-MIDI engine and needed to visualize FFT output in real time. I initially relied on the IMessage interface, but quickly ran into scaling issues: 1. It was really easy to gum…

VST3: Win32, SFML, and Embedded Graphics Management

Overview I've been redesigning my core library and I wanted to share the way that I manage Windows on the VST3 Controller side and some other Windows-related issues that I've come across. Roadmap We will be focusing on the Win32 Child Window process. SFML / Graphics…

VST3: Scheduling Midi Events

Overview Scheduling midi events is not as straightforward as one might think. We have to work with samples and sample rates rather than strictly with time (e.g., in 3 seconds do this, then stop in 2 seconds). There's some confusing nomenclature and there are some midi gotchas…

VST3: Controller ↔ Processor Communication Strategies

This post is intentionally long because it focuses on design constraints, not just APIs. These are the kinds of constraints that routinely trip up even experienced C++ developers. VST3 development has more in common with embedded C/C++ than typical desktop software: tight timing budgets, strict threading rules, and zero…

nyx.vfx: plugin

Overview nyx.vfx is a real-time 2D VFX engine that creates particle systems for midi events. It's a work-in-progress, but that shouldn't take away from making cool designs and exporting them for use in post-processing and video-editing tools. Tweaker's…

nyx.vfx: Expiration Scheduler

Terminology In this post, a "Mesh" refers to a single renderable line segment (internally treated as an edge). Higher-level meshes are just emergent behavior from many lines. A look ahead Let's start off with where we're going first. Here's a gif…