This weekend I updated one of my first Max for Live devices, LineFO to version 1.4.
When M4L first came out, there were quickly many devices shared to modulate parameters. In the most recent M4L update, Ableton even added their own standard LFO to the default content. Many other examples exist such as this one and this one you can download for free in the LFO Section of maxforlive.com.
But most of these LFO's are variations on what you would expect. They are oscillators used to modulate a parameter based on the wave form of the oscillator. LineFO is something different...
LineFO is a simulated LFO that uses the [line] object instead of an oscillator as the source of modulation. This method has some advantages and drawbacks.
Drawbacks: You cannot manipulate the parameters of the LFO in real time. With a normal LFO, you an slow down and speed up the rate, for example, and hear the effect immediately. LineFO triggers the shape according to the rate you set. So if you have the rate at 2n, your change will not take effect until the next half note.
Advantages: As LineFO does not actually use the audio engine required by Max/MSP to create oscillator signals, it should be lower CPU utilization. This doesn't really matter until you have many LFO's loaded but the impact is certainly measurable. With LineFO you can load many instances with little impact. Perhaps the best advantage though is the same one I list as a drawback. LineFO behaves similar to how clip quantization works in Ableton Live. when you fire a clip or scene it doesn't happen until the next downbeat determined by the Global Quantization setting (by default).
How is this similar to LinFO? Let's say you assign LineFO to the transpose knob of an Operator instance. and set it to 1n for rate with a triangle shape. If you then change that to a "ramp up" at 2n, the change does not take effect until the next measure. You'd have to try it to really get what I'm saying. It's unique and sometimes quirky behavior.
Version 1.4 takes advantage of the new "live_set view selected_parameter" path that allows you to implement your own "midi learn" to assign modulation to whatever parameter you want on any device. I removed the device select drop downs in favor of this approach where you easily "Learn" any parameter to create mappings. I also changed up the interface, added a Help window option, and fixed the random LFO types so they respect ranges just like the others.
One day I will post a video of youtube showing how to use the device but I think it's pretty obvious:
Add LineFO to a midi track
Browse to any track and click on a parameter you want it to control
Select the "shape"
Optionally, set speed and range
Press play (it doesn't do anything unless the global transport is running)
The toggle next to "Learn" determines how Learn behalves once you select the target parameter to modulate. If turned on, "Learn" will instantly turn off when select a parameter. If turned off, you can click around to find the target you want, then go back and turn off "Learn" mode.