What is Conformal?
Conformal is a framework for building audio plug-ins using TypeScript and Rust. But what actually is it? Really, Conformal is four things:
- Abstractions defining what needs to be implemented to create an audio plug-in. Plug-in authors will implement these abstractions to create their plug-ins.
- Wrappers that take these abstractions and turn them into various standard plug-in formats.
- Tools that make it easy to build and distribute your wrapped plug-ins.
- Helper libraries that make it easier to implement plug-ins.
For a guided tour of the framework, please see the build your first plug-in tutorial.
If you’re already familiar with Conformal but you want to start a new project, use bun create conformal
to create a new project that already has the basics set up for you.
For a better understanding of how a Conformal project is set up, please read on - we’ll take a quick look at how these three parts fit together to actually create a distributable plug-in!
Abstractions
In Conformal, you as the plug-in author have to write two main pieces of code:
- Signal processing code in Rust. This code must implement the
Component
trait. - User interface code in TypeScript. This is a web-based user interface that can connect to plugin settings by using the
@conformal/plugin
package.
Wrappers
Once you have these two pieces of code, you can use a wrapper to turn them into a standard plug-in format. Currently, Conformal supports VST3 synth and effect plug-ins on macOS, but we hope to support more platforms, plug-in types and plug-in formats in the future.
Note that the VST3 wrapper is already set up in the template project created by bun create conformal
, so you can start building your plug-in right away. However, here’s how you’d do it from scratch
Make a rust crate containing the wrapped binary
This should be a new crate of the cdylib
type. This should use the wrap_factory
to define the entry-points necessary for the plug-in.
Make a bundle.json
file in your UI package
This defines some additional metadata conformal needs to know about your plug-in, and also defines which crate implements the VST3.
Tools
Once you have a wrapped plug-in crate and a bundle.json
file that refers to it, you can use the conformal-scripts package
command to create the plug-in.
The included scripts can also help to create a macOS installer for your plug-in, see the macOS installers guide.
Helper libraries
Conformal includes helper libraries for common tasks in audio plug-in development. For example, the conformal_poly
crate includes helper functions for polyphonic synthesizers.