Well, I don't like having to reach over and grab the rodent just to have to find the pointer on the screen and drag it around to click on a menu item. So yes. I also think that key stroke menus are way faster.
OK!
Now we are getting to the meat and potatoes.
A generator is what causes LB to create a new frame_set and populate it with whatever the generator function does. This makes a frame_set of real numbers (double floating point X Y Z) and loads the result into the (invisable) registers.
The "math render" function is what causes LB to scale the real numbers of the last frame_set loaded into the registers to fit inside of short integer space and load the scaled copy into the LB viewing space so you can see it and save it as ilda, wave, etc....
All parameters that are changed from their default values must be done before the generator is called.
So, a simple circle of radius 1 sitting around the origin (the unit circle) looks like this
Code:
math LBO1 phase 90.0
# x = LBO1(t)
# y = LBO2(t)
math lissajou
math render
All of the other parameters are already set to the default values.
The math lissajou generator uses
Code:
math phase_cycle 360.0
math interval_cycle 1.0
math start 0.0
math duration 1.0
math iterations 100.0
math LBO1 function sin
math LBO1 amplitude 1.0
math LBO1 frequency 1.0
math LBO1 phase 0.0
math LBO1 duty_cycle 0.5
math LBO1 damping 0.0
math LBO1 offset 0.0
math LBO1 sin 1.0
math LBO1 triangle 0.0
math LBO1 ramp 0.0
math LBO1 square 0.0
math LBO1 pulse 0.0
math LBO1 trapeziod 0.0
math LBO1 circle 0.0
math LBO2 function sin
math LBO2 amplitude 1.0
math LBO2 frequency 1.0
math LBO2 phase 0.0
math LBO2 duty_cycle 0.5
math LBO2 damping 0.0
math LBO2 offset 0.0
math LBO2 sin 1.0
math LBO2 triangle 0.0
math LBO2 ramp 0.0
math LBO2 square 0.0
math LBO2 pulse 0.0
math LBO2 trapeziod 0.0
math LBO2 circle 0.0
Setting
Code:
math LBO1 phase 90.0
causes LBO1 to act like the cos function, because cos(t) == sin(t + 90.0).
Phase is in degrees because
Code:
math phase_cycle 360.0
says that one cycle is 360.0.
The interval from start to start + duration is noted as
Code:
math interval_cycle 1.0
math start 0.0
math duration 1.0
A duration of 1.0 is based on the value of interval_cycle. In this case one whole trip around the unit circle (0.0 to two_pi). It's much easier to think in terms of whole periods of two_pi rather than having to use a calculator to figure out all the digits you'd have to type for multiples of two_pi.
LaserBoy can only read tokens from the text. It cannot read expressions and evaluate them. So saying that duration is "100 * two_pi" won't work. With interval_cycle set to 1.0, it's just a duration 100.0 (multiples of two_pi).
The value of "start" is also effected by interval_cycle in the same way. So you could start at some point on the real number line other than 0.0.
The value of "iterations" is how many vertices are calculated over the interval to generate a frame of the generator function.
There's no harm in reiterating default values so you could make a txt file like this:
Code:
math phase_cycle 360.0
math interval_cycle 1.0
math start 0.0
math duration 1.0
math iterations 100.0
math LBO1 function sin
math LBO1 amplitude 1.0
math LBO1 frequency 1.0
math LBO1 phase 90.0
math LBO1 duty_cycle 0.5
math LBO1 damping 0.0
math LBO1 offset 0.0
math LBO1 sin 1.0
math LBO1 triangle 0.0
math LBO1 ramp 0.0
math LBO1 square 0.0
math LBO1 pulse 0.0
math LBO1 trapeziod 0.0
math LBO1 circle 0.0
math LBO2 function sin
math LBO2 amplitude 1.0
math LBO2 frequency 1.0
math LBO2 phase 0.0
math LBO2 duty_cycle 0.5
math LBO2 damping 0.0
math LBO2 offset 0.0
math LBO2 sin 1.0
math LBO2 triangle 0.0
math LBO2 ramp 0.0
math LBO2 square 0.0
math LBO2 pulse 0.0
math LBO2 trapeziod 0.0
math LBO2 circle 0.0
# x = LBO1(t)
# y = LBO2(t)
math lissajou
math render
and tweak away all day at the values to see what happens.
Valid values for LBO function are:
Code:
math LBO1 function sin
math LBO1 function triangle
math LBO1 function ramp
math LBO1 function square
math LBO1 function pulse
math LBO1 function trapeziod
math LBO1 function circle
Setting the value of function to one of these actually sets the function mixer of an LBO to be of only one of the "pure" periodic functions. The mixer is also available to set the relative levels of each function for a blend. So, after an LBO function is set, you can tweak the mixer to get other function shapes by changing the relative values of
Code:
math LBO1 sin 1.0
math LBO1 triangle 0.0
math LBO1 ramp 0.0
math LBO1 square 0.0
math LBO1 pulse 0.0
math LBO1 trapeziod 0.0
math LBO1 circle 0.0
As you can see the mixer is set to output sin (1.0) and all others are set to 0.0. Setting the value of "function" resets all of the mixer values. So if you want to mix functions you have to set these mixer values after setting the function.
If you want to generate and render multiple math forms in the same file, you can easily get back to the default values of the LBOs by directly resetting each one like this:
or all of them like this
I think I'm going to start a new ambient music group called Invisible Registers.