Upon patch initialization, one might be tempted to use multiple loadbang objects attached to delay objects in order to control the order of operations. A different approach, however, would be to use a single loadbang at the top level and use send or forward to send the messages you want, where you want, and in the order you want.
Storage of large quantities of numerical data is exactly what Jitter is for. You might commonly think of the data in Jitter matrices as representing pixels of a video image, but in fact you can use the jit.matrix object to store any large sets of (multi-dimensional arrays of) numbers, which can be used for any purpose.
The cycle~ object allows you to read from a stored cosine function (use a phase offset of 0.75 to get a sine phase), and does high-quality interpolation to give you excellent resolution even though it only uses a 512-sample table. (See MSP Tutorial chapters 1-3).
But if you want to put a sine wave into a buffer~, here’s a way:
This patch is based on an example in the Max 3.5 Tutorial, chapter 44. It demonstrates a) the use of math functions to generate patterns for musical parameters and b) faster-than-realtime recording of MIDI data in the detonate object.
This patch shows four objects that are useful for generating numbers, each with a different behavior. The arguments to these objects determine how many different possible numbers the object will generate, and the range of those numbers. The range can be changed, though, by scaling (multiplying) them and/or by offsetting (adding something to) them.
Programming languages all provide some means of generating random numbers. Those numbers aren’t truly random, though. They’re what’s called pseudo-random. They’re actually generated by a known, deterministic process for generating a sequence of numbers, but that process generates a long series of apparently random numbers that doesn’t repeat for a very long time.
Recursion, feedback loops, and unlimited untimed (as fast as possible) loops are not feasible in Max. In effect, you’d be asking Max to do an unlimited number of things all at the same time. Its scheduler (its internal “to-do” list) would get filled and it would be unable to do anything more. In computer lingo, its “stack” (its inbox of tasks to do) would overflow.
In signal processing, a "window" is a function (shape) that is nonzero for some period of time, and zero before and after that period. When multiplied by another signal, it produces an output of 0 except during the nonzero portion of the window, when it exposes the other signal. The simplest example is a rectangular window, which is 0, then briefly is 1, then reverts to 0. The windowed signal will be audible only when it is being multiplied by 1––i.e., during the time when the rectangular windowing occurs.