A subtle bug has been discovered in one of the logging functions in the IPlug portion of the WDL framework. Details below:
Most of us who have used C++ for a while have crossed path with sprintf once or twice. It comes in handy in a variety of places. There are all the standard things you can do with %d, %s, %f and even diving into precision with %.2f to write two decimal places of precision to the output. Recently I came across a shortcut formatting token .* which I was not previously familiar with. Here is a short example of how it works and where it could be applied to IPlug.
The IPlug framework has a convenient way to manage your VST plugin’s version numbers. By design though, these version numbers only print out to the last non-zero digit. So a VST plugin at development version 1.0.0 will print as v1. I’d rather have it at least print the first digit after the decimal instead of losing it if they are all zeros. Read on to find out how to make that mod.
If you’ve worked with a version control system then you know how powerful that tool can be. I work with such a system at my job every day where we have dedicated system administrators to keep it running. Having such a tool available for my VST development projects at home is very valuable but I find system administration to be a task I am not cut out for. That being the case, I searched for some easy to use tools that would allow me to get version control running on my Windows box at home without too much hassle or deep configuration. The two tools I was interested in choosing between were Git and Subversion. Here’s what I found.
The IPlug framework with its associated gui makes it fairly easy to allow audio engineers to type plugin parameter values directly. Using the IPlug gui you can right click any control (default behavior, but we also covered how to allow editing with the left mouse button too) and get an input box to type your parameter value. The problem I have with the default behavior is the size of the default edit box. The width is a hard coded value that doesn’t look good over any of my plugin’s parameters. They always seemed to leave the text underneath poking out behind the sides of the edit boxes. Here is a simple fix to make the edit boxes match the width of your parameter displays.
I stumbled across something I consider to be a bug while creating some custom controls for IPlug. This is not a bug that is going to cause any strange behavior or crashes but rather a slight inefficiency that does not seem to match the intent of the original coder. Let’s take a look.
Developing a slick and polished gui for your VST plugin is less about graphics and more about creating a smooth customer experience. The default behavior of IPlug is to block mouse input when an ICaptionControl has edit focus (that’s the object you use to allow someone to type values into your parameters). If I have clicked on a value to type in it and decide to tweak a knob instead, then I don’t want to have to click back in the edit field and hit enter before being able to turn that other knob. I want to directly click on that other knob and have the edit field just go away. Here is an IPlug mod that will allow your VST plugin interface to work this way.
The IPlug library for developing VST plugins has a bug causing the user edit window to get stuck open (but invisible) under some circumstances. This results in some sluggish UI behavior. This bug occurs in Windows with VST plugins and I have not been able to check for the bug in AU or Mac plugins using IPlug.
Having trouble compiling the LICE solution for your plugins because you’re getting lots of errors like about LIBCMT.lib? The fix should be relatively easy. Right click the LICE project in Visual Studio and open the properties panel. Navigate to:
Configuration Properties | C/C++ | Code Generation
And set the option for Runtime Library to the /MT value. It is set to /MD in the WDL download. All three projects in the LICE solution should be set to /MT if you are having linker problems. In fact, make sure all three projects are set to /MT for your Release configuration and /MTd for your Debug configuration.
VST plugin development is fun!
Deleting memory and settings pointers back to null is done quite frequently when coding in c++ and VST development is no exception. The WDL library includes a few macros to help with this task but I added another.