Another one on a 100x24 RGB panel. It's linked to the low music beats of the first music input.
A timer is used to avoid the simulation to be refresh rate dependent. Also, just as an example, the life formula is now using a temporary variable to store the sum of all neighbors. I think that's what you were looking for when you asked for the inBetween function since you wanted to avoid computing the sum twice. The formula is now:
if(!recall(1), /*not the time to update the simulation*/ last, /*put in a temp memory the sum of all neighbors*/ mem(0,(grid.powerat(x-1,y)+grid.powerat(x+1,y)+grid.powerat(x,y-1)+grid.powerat(x,y+1)+(grid.powerat(x-1,y-1)+grid.powerat(x+1,y+1)+grid.powerat(x-1,y+1)+grid.powerat(x+1,y-1)))/8)*0 + /*now the activation logic*/ (recall(0) >= 18.75 & recall(0) <=37.5))
(I'm adding the isBetween function in the next beta)
Another source is putting the result of a timer in the memory 1.