Version 1.0 proposal (with sample application and plug-ins)

jwatte's picture

This proposal is now obsolete. but served to start the discussion.

The Simple Audio Plugin Specification
Preview release 2009-01-11
Jon Watte (jwatte @ kvr forums)

Given that a lot of people are unhappy with VST 3.0 being so complex to develop even a simple effect for, and the lack of hosting documentation for most of the plug-in standards out there, I sat down for a number of week-ends and evenings and came up with my own proposal for a plug-in standard. The guiding principles were:

1) Define the hosting API as well as the plug-in API.
2) Use plain C function pointers for the interface, to allow multiple languages.
3) Define a system that is easy to extend in a compatible way in the future.
4) Clearly define threading.
5) Use a declarative plug-in GUI that is rich enough to let hosts generate good GUIs that integrate with the host, rather than putting that on the plug-in.
6) Support the integration and timing of MIDI with audio.
7) Multiple input and output busses, each with multiple channels of audio.
8) A working reference implementation of most kinds of plug-ins (effects, file and device I/O, MIDI I/O and synth).

I think I have something interesting so far. At this point, I'd like to hear some comments from potential users, be they plug-in authors or host authors.

The actual interface is defined in the SAPS directory, as a series of header files. You might want to start looking at SAPS_types.h and SAPS_plugin.h.

There is also an implementation of hosting of these plug-ins in the SAPSHostLib directory. This implementation requires Visual Studio 2008 and Windows, for now. Additionally, there is a GUI library that can general GUIs from the declaration of plug-ins (using Direct3D for rendering), an actual "wire graph" host that can load and run plug-ins, and a number of plug-in projects that build various interesting plug-ins.

To give it a spin, open up the "sln" file in Visual Studio 2008 SP1, build your target of choice (x86 or x64), and start the program.

I intend for this specification, and the code accompanying it, to be in the public domain. This means that there is no warranty of any kind, and there is also no liability or claim of any kind -- you can do what you want with this code, and you bear your own full responsibility for doing so.

If you have comments, please post them in the KVR DSP/plug-in development forum at kvraudio.com: http://www.kvraudio.com/forum/viewforum.php?f=33

This project will either die a silent death, or it will be powered by the community, so if you're interested in this topic, please contribute!

The download archive is http://www.enchantedage.com/sites/default/files/SAPS_20090111.zip