This Max object provides a thumbnail of the current pitch tracking that, when clicked, opens a window for fine-tune control. The tracking may be disabled overall providing a uniform shift; or adjusted with one breakpoint with linear or adjustable curvature above and below the breakpoint.
1. Design Implementation
The Godel 2 instrument used an LCD object to display the control curve. The problem with the LCD object (besides the fact that that Cycling74 wishes to deprecate it) is that it is not easily resizable. Godel 3.1 (currently in alpha) therefore uses a FUNCTION object for displaying and enabling pitch tracking. In the redesign, as before, control values are sent to a GEN~ object which then contains its own audio-rate tracking logic, with the same CODEBOX equations as the FUNCTION object. However, for the UI, it was found the function object cannot be reduced in size to the 25x25-pixel thumbnail desired for the main display.
Therefore, the LCD object is still present in the design, but only for drawing the thumbnail. the FUNCTION object then permits mouse control in a popup window. A subpatch in Godel 3.1 (still in alpha) contains nine instances and four variants of this design for pitch, FM, feedback, filter, and envelope velocity-response shaping across the overall design.
The elements in the above subpatch are for rendering the small thumbnail, and for permitting on-screen controls to set FUNCTION values directly, if more precision is desired than possible by clicking and dragging the breakpoint. They also provide for setting the control values to defaults for each instance, if defaults are desired without using the main INIT method to set the entire instrument to defaults. To render the thumbnail, an iterator draws the 25 pixels individually, using the same scaling factors as the FUNCTION object. The same functions as this iterator are then implemented as GENEXPR functions inside GEN~ on the received parameter values from the PATTRSTORAGE object when any of them change. The PATTRSTORAGE object provides internal filtering on values that do not change when the PRESET changes, resulting in a typical reduction of several thousand messages to individual voices on preset change, so this feature is maintained in Godel 3.1. Nonetheless, as the screen controls also mirror the values set in the FUNCTION object, and the Uzi iterator creates values for the LCD display, any of these objects in the subpatcher could be used for signal shaping, as well as the FUNCTION object itself.
A demonstration patch is available in the Synthcore2 bundle.