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 that define the building blocks of an audio plug-in — you implement these to create yours.
- Wrappers that turn your implementation into standard plug-in formats.
- Tools for building and distributing your plug-ins.
- Helper libraries for common tasks like polyphonic synthesis.
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 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
Componenttrait. - User interface code in TypeScript. This is a web-based user interface that can connect to plugin settings by using the
@conformal/pluginpackage.
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 VST synth and effect plug-ins on macOS and Windows, but we hope to support more platforms, plug-in types and plug-in formats in the future.
Note that the VST 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 VST.
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.