The Philosophy
All C++ based Plug-In APIs require that you implement the same basic functionality by creating C++ objects that are derived from a special base class. You then fill in several functions that setup your variables, process data and deal with GUI interactions. Once you’ve learned how to program one manufacturer’s API, you realize the others are basically variations. A similar concept might be learning to fly; you start out with an easy to fly trainer. Once you’ve mastered solo flight, learning to fly other aircraft is easy since the concepts of pitch, yaw, thrust and drag are the same for all airplanes. You only need to learn the peculiarities of each new aircraft. RackAFX is your Plug-In flight trainer; if you can write a RackAFX Plug-In, learning other formats is easy – but RackAFX is also a whole lot more. It’s fully MIDI connected so you can control your Plug-Ins with MIDI controllers, and you can write Software Synthesizers too. A GUI Designer lets you make an interface with knobs, sliders, buttons and other controls. You can also customize the main window appearance.
The History
In the mid 1990s, I taught DirectX Plug-In programming and later switched to a newer, leaner API called Steinberg VST®. Here is an excerpt from the Forward of my new book:
“After half a dozen semesters teaching VST programming, a few things had become clear. For any given project, the students were spending more time dealing with setting up and maintaining a GUI than they were with the audio signal processing code. Instead of being on the internet to look for cool processing algorithms, they were searching for knob and switch bitmaps. While I can certainly appreciate a nice looking GUI, I was trying to teach audio signal processing and not graphic design.
Around 2004, as a result of a consulting job, I had the need to come up with a simple C++ based audio signal processing API – my own Plug-In format. I would also need to write my own Plug-In Client; the software that would load and process data through my Plug-Ins. I was determined to write an API that was far simpler and leaner than even VST. And, I wanted my Client software to handle 100% of the GUI details so I could focus on the signal processing work for my consulting client. This would also make great software to teach Audio Signal Processing and Plug-In programming simultaneously. Moreover, I would not be tied to a single manufacturer’s product. For example DirectX, Microsoft’s Plug-In format is essentially obsolete and other manufacturer’s may choose to invent new formats or the public opinion may shift from one API to the next. RackAFX frees me from these issues.
Since 2009 I’ve been using my RackAFXâ„¢ software in the classroom at both the graduate and undergraduate levels. My students never cease to amaze me with what they design. Currently, RackAFX runs on the Windows® OS and generates plug-ins that are compatible with it and optionally VST as well. You can develop your plug-in in RackAFX, then use it in any Windows VST client. RackAFX runs in tandem with Microsoft Visual Studio compilers, even the free ones. It sets up your project ï¬les, writes GUI code for you, and allows you to remotely launch some compiler functions from its control surface. Once you understand how the RackAFX API works, learning other commercial plug-in APIs will be much easier because most plug-in APIs share similar methods and set-up sequences. And, since RackAFX plug-ins are written in C++, the plug-in objects can be compiled on different platforms and embedded (or wrapped) to operate in just about any signal processing environment.”
What is your Experience Level?
(1) I can program in C++ but don’t know any DSP theory and haven’t written a Plug-In
This book combines DSP theory and Plug-In API training all in one. You will write Plug-Ins and develop your DSP theory together and you will find that they reinforce one another. Over the course of the book, your User Plug-Ins menu in RackAFX will fill up with the Plug-Ins on the Project Page. You can even add GUI elements to create your own unique design – if you are a programming student, consider using RackAFX to design your Senior Project!Â
(2) I already know how to write VST or AU Plug-Ins but don’t have a DSP background or collection of algorithms.
The book shows you the basic DSP theory you will need to turn algorithms, block diagrams, transfer functions and equations into C++ code. The DSP examples are all worked out with no tricks. Plus it is full of audio signal processing algorithms. Just check out this list. You can easily move the objects and code into your VST or AU Plug-In projects because they are all straight C++. Or you can write a simple wrapper for the RackAFX object as explained in Appendix A of the book.
(3)Â I already know DSP but have never written a Plug-In
You will be writing your first Plug-Ins in Chapter 3, before any DSP theory is explained. You can skip Chapters 4 & 5 Â and go straight into the audio signal processing chapters on filtering, delay lines, oscillators, modulated delays, reverb, dynamics processing, etc… The code is fully explained and RackAFX makes is easy to get up and running writing your own Plug-Ins.
(4) I just want to learn VST or AU Plug-Ins; why do I need your book and RackAFX?
You can download the VST Plug-In SDK or the Apple AU Documentation and begin coding. Maybe you have already done that and don’t understand the Plug-In concept, or you are confused by the documentation or DSP theory. RackAFX isn’t tied to a large corporation’s vison and it is fully documented in my Book; its API is lean. You can read the book through Chapter 3 and do the first three simple Plug-Ins; at that point, you will have the basics of how a Plug-In fits in with the client and processes audio. Then, read Appendix A to compare the three APIs (RackAFX, VST and AU). Now the VST and AU APIs will be much easier to grasp. If you need the DSP theory, it’s there for you. And, there are tons of algorithms that you can code into your VST or AU Plug-Ins by going through the book. RackAFX Plug-Ins are written in C++ and the code can be exported to other compilers like XCode for AU with the new export tools.