MRuby-Zest: a Scriptable Audio GUI Framework
Screenshot of framework in action
Abstract/Intro from paper
Audio tools face a set of uncommon user interface design and implementation challenges. These constraints make high quality interfaces within the open source realm particular difficult to execute on volunteer time. The challenges include producing a unique identity for the application, providing easy to use controls for the parameters of the application, and providing interesting ways to visualize the data within the application. Additionally, existing toolkits produce technical issues when embedding within plugin hosts. MRuby-Zest is a new toolkit that was build while the ZynAddSubFX user interface was rewritten. This toolkit possesses unique characteristics within open source toolkits which target the problems specific to audio applications.
MRuby-Zest was created to address long standing issues in the ZynAddSubFX user interface. The MRuby-Zest framework was built with 5 characteristics in mind. MRuby-Zest should be:
-
Scriptable: Implementation uses a first class higher level language
-
Dynamically Resizable: Fluid layouts which do not have any fixed sizes
-
Hot Reloadable: Reloads a modified implementation without restarting
-
Embeddable: Can be placed within another UI without conflicts
-
Maintainable: Relatively simple to read and write GUI code
To do this MRuby-Zest takes Qt’s QML language, replaced the scripting language with Ruby, integrated it with the nanovg OpenGL rendering library, and began to leverage parameter metadata that ZynAddSubFX produces via the rtosc library. Building the toolkit within Ruby instead of on-top of a pre-existing C/C++ toolkit has made MRuby-Zest particularly flexible when it comes to expanding it’s feature-set.