Welcome to Teragon Audio, provider of audio plugins, utilities, and guides for those looking to develop their own audio software. This is the development blog, if you are looking for the official website please visit http://www.teragonaudio.com.

Text for everybody!

Today I implemented a StatusBar component in TeragonGuiComponents, which shows the current value of a parameter as it is being modified or moused over. The component was quite easy to write thanks to the flexible architecture of PluginParameters and the power of Juce. The entire implementation is only 71 lines of code!

In these 71 lines, the component takes in a PluginParameterSet and registers itself as a listener on all parameters. However, it only shows updates for parameters which are not BooleanParameters (since the button states are already quite obvious IMHO), and have at least one other component listening (to avoid displaying updates for internal parameters). The status bar is two lines and displays the parameter name on top with the formatted value on the bottom.

In addition to displaying parameter values when a component is being modified, it can also display the current value when the user mouses over the control. For this part to work, it requires all parameters in the GUI to add the StatusBar as a listener after construction. This could theoretically be done automatically, but doing so would require things to be instantiated in a certain order, which is difficult to guarantee when building GUIs using the Introjucer.

As a final touch, the text field is cleared after about a second of visibility, along with a subtle fade-out.

I have decided to postpone building any bitmap fonts for the time being, given that I got relatively nice results out of Juce's default monospace typeface. I think that I'll implement this in the future should the need arise, which primarily means overriding juce::Font and adding proper ellipsizing rather than scrunching the text together in a nasty mess.