With the increasing availability of high-resolution screens on Windows machines, I’ve started to receive a few support requests about plugins that appear with a very tiny user interface. The problem stems from the fact that most plugins simply don’t support hi-res screens. This post attempts to explain the situation.
Recently monitor manufacturers have started producing real high-density screens. Apple calls this “Retina”, other manufacturers typically call them high-resolution or hi-DPI screens. Basically it means smaller pixels. The result is beautifully crisp text and graphics, but there’s a problem for most older programs.
For the longest time, Windows applications have been fairly safe to assume that the screen they’re running on has about 96 DPI — the standard pixel density for just about all monitors up to a few years ago. As such most developers built their user interface components to be a certain number of pixels in size. The problems is that on hi-DPI screens those pixels are smaller and the user-interface becomes smaller.
To help combat this, Windows has the ability to automatically scale up a program’s user-interface if it doesn’t declare itself “DPI Aware”. Programs that do declare themselves DPI Aware have full access to every pixel and are expected to scale themselves appropriately. Non-DPI aware programs are up-scaled by Windows to make them appear at a usable size.
Here’s the problem for Cantabile (and all other VST hosts for that matter). It’s not possible under Windows to say one window is DPI aware while another isn’t. Both Cantabile 2 and 3 are DPI aware and both declares themselves as such. Unfortunately most plugins and are not DPI aware and their UI is displayed at a small size.
For example, here’s Cantabile 3 and Kontakt 5 running in high-DPI mode:
And here again in low-DPI mode:
So what’s the solution? Well the best solution would be if plugin developers all updated their UI’s to be DPI aware. In reality that’s not going to happen for quite a while and possibly never for some plugins. In the meantime and as a work around, Cantabile includes the ability to disable its declaration of DPI awareness.
- In Cantabile 2 the latest experimental build from here now supports a new command line argument /stddpi (ie: standard DPI).
- In Cantabile 3, there will be a new option on the General page “Enable High-Resolution UI”
When high DPI mode is disabled, all of Cantabile’s user-interface will be up-scaled (and a little blurry) but at least plugins will appear at the correct size.
Moving forward I hope to see plugin developers embrace support for high-DPI screens. Unfortunately at this point in time VSTGUI, a popular library that many plugins use for their user-interface doesn’t fully support high-DPI rendering on Windows.