Chaotic signal synthesis with real-time control: solving differential equations in PD, MAX/MSP, and JMAX
Chaotic signals are useful in two different levels in audio synthesis: as sound material or control structure. Patching languages such as Pd, Max/MSP, and jMAX provide easier mechanisms for generating chaotic structures at control level. We can generate deterministic chaotic signals either by finding numerical solutions to differential equations or by using first return maps. While generating the next sample, both of these methods require calculations with the knowledge of the previous sample. Most signal processing environments for computer music, such as Pd, Max/MSP, and jMAX, transfer audio data among their objects by vectors (blocks). In such environments, finding numerical solutions to differential equations or generating signals based on first return maps, will require writing external objects or setting the block-size to 1. Writing external objects can be time consuming and the real-time control of the calculations have to be embedded in the external object, which will require a recompilation for every change to the mechanism. Setting the block-size to 1 can make writing the patch cumbersome and sometimes very confusing. In this paper we shall present the fexpr∼ object, implemented for Pd, Max/MSP, and jMAX, which can be used for finding numerical solutions to differential equations by simply entering the difference equations as part of the object arguments. The object parameters can then be controlled in real-time using the host patching language. As examples, solutions to Lorenz Equations, Chua’s Oscillators, Duffing’s equation, and the use of first return maps will be presented using the fexpr∼ object.