Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :

Go Back   Cockos Incorporated Forums > Other Software Discussion > WDL users forum

Thread Tools Display Modes
Prev Previous Post   Next Post Next
Old 05-16-2007, 12:23 PM   #1
schwa's Avatar
Join Date: Mar 2007
Location: NY
Posts: 9,424
Default IPlug C++ code framework for VST and AU audio plugins and GUIs

Here is a code framework for developing audio plugins and GUIs, which includes:

- A platform independent IPlug class that handles all communication with the audio host.

- A platform independent IGraphics class that handles managing the controls on the GUI.

- A set of platform independent IControl classes that handle moving and rotating images, vector graphics, mouse input, etc. Classes like "static bitmap", "switch", "fader", "rotating knob", etc. These classes can be easily extended.

- Windows and OSX graphics implementation classes, which handle window management, and use LICE (Cockos graphics lib) to draw GUIs.

- VST and AU implementation classes, which handle communication between the audio host and the plugin.

The idea is that you can derive a new plugin class from IPlug, and with a small number of readable lines of code, you can assemble the plugin and GUI without caring what the OS, plugin format, or graphics implementation is.

The framework and the code for the sample plugin can be found in the latest WDL package. This code should compile into a Windows VST, an OSX Audio Unit, or an OSX VST with no changes.

Here is an example of the source code (from the package) for the constructor of the example plugin.

To compile VSTs, you will need the VST SDK from Steinberg. You only need two files out of the SDK: aeffect.h and aeffectx.h. To compile AUs, you will need the Core Audio SDK from Apple (this comes with XCode).

The IPlug example project in WDL links in the Cockos LICE graphics library statically, but if you are making one-off plugins you may find it easier to simply add the necessary LICE source files to your plugin project.



This is code I use, so it's designed for users who are comfortable using C++. It doesn't offer any sort of GUI assembling graphical interface, everything is done in the user's code. Although it supports all the plugin/GUI functionality I happen to use, it may not support the functionality you want, for example it doesn't support common Windows controls like dropdowns and checkboxes. However, it should be straightforward to extend the framework to add features.

Last edited by schwa; 11-02-2009 at 07:04 AM.
schwa is offline   Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -7. The time now is 10:40 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.