Developer Guide - Generators, Components and Controls

(Relevant reading: generator.h, component.h, and control.h)


Generators are the primitive components of the system that actually do all the work. They receive events, send events, and send processed audio forward through the mesh.

Generators do not have a user-interface - they are pure "model", in the MVC sense. Components provide an abstract "view" for Generators and other visible components. The file gencomp.c provides a concrete "view" (and "controller") class for manipulating Generators.


Components are the visible elements that the user places on the worksheet and manipulates with the mouse when building a mesh. Note that Components are not tied to representing Generators - in future, there will be a Component for allowing links to "bend around corners" - but that the only concrete implementation of a Component class at the moment is provided by gencomp.c, the Component class for Generators.


Controls are the user interface elements that allow the user to change Generator parameters and send AEvents through the system. There are four predefined kinds of Control, and programmers have the option of implementing their own (eg. trigseq.c, patsel.c):

  • CONTROL_KIND_SLIDER - for a vertical slider
  • CONTROL_KIND_KNOB - for a rotary knob/dial
  • CONTROL_KIND_TOGGLE - for a two-state button (on/off)
  • CONTROL_KIND_BUTTON - for a one-shot button
  • CONTROL_KIND_USERDEF - for when a custom control is needed

Next Section