Custom Views

ASPiK supports heavy GUI customization with custom views and sub-controllers. This part of the SDK will explain the DemoCustomViews plugin example which will show you how to create your own custom views. For ASPiK projects, you typically only ever need to modify the plugincore.h and plugincore.cpp files from the kernel. For custom views, you will also need to modify the plugingui.cpp file, in addition to creating the custom view objects. The WaveSpectrumView plugin includes the customviews.h and customviews.cpp files (which are automatically installed into every ASPiK project). These files contain the implementation of the three custom view objects and the sub-controller mentioned previously.

The figure below shows the GUI for the DemoCustomViews plugin project with the Custom View objects labeled. There are two visualizer views and one custom knob control. In this tutorial, you will learn all about these objects' construction and communication. The linked knobs are part of the sub-controller paradigm and are described separately.


The custom view and sub-controller objects share two similarities:

• They inherit from ICustomView and expose one or more of its functions
• They use a single producer single consumer (SPSC) lock-free ring buffer for buffering incoming data

The sub-controller object also inherits from ICustomView because the communication interface is identical and there is no reason to create yet another base class for sub-controllers.

The sample plugin project also uses a lock-free ring buffer to pump audio samples into from the audio thread. The ring buffer used here is called moodycamel::ReaderWriterQueue and its files are also included with each ASPiK project.