musiclight2/pulsetunnel.lua

71 lines
1.5 KiB
Lua

COOLDOWN_FACTOR = 0.9998
num_modules = 20
center_module = 10
-- maximum energy values for each band
maxRedEnergy = 1
maxGreenEnergy = 1
maxBlueEnergy = 1
-- output color buffers
red = {}
green = {}
blue = {}
function periodic()
local redEnergy = get_energy_in_band(0, 400);
local greenEnergy = get_energy_in_band(400, 4000);
local blueEnergy = get_energy_in_band(4000, 22000);
maxRedEnergy = maxRedEnergy * COOLDOWN_FACTOR
if redEnergy > maxRedEnergy then
maxRedEnergy = redEnergy
end
maxGreenEnergy = maxGreenEnergy * COOLDOWN_FACTOR
if greenEnergy > maxGreenEnergy then
maxGreenEnergy = greenEnergy
end
maxBlueEnergy = maxBlueEnergy * COOLDOWN_FACTOR
if blueEnergy > maxBlueEnergy then
maxBlueEnergy = blueEnergy
end
-- move the color buffers on by one in each direction
for i = 2,center_module,1 do
red[i-1] = red[i]
green[i-1] = green[i]
blue[i-1] = blue[i]
end
for i = num_modules-1,center_module,-1 do
red[i+1] = red[i]
green[i+1] = green[i]
blue[i+1] = blue[i]
end
-- set the new value for the center module
red[center_module] = redEnergy / maxRedEnergy
green[center_module] = greenEnergy / maxGreenEnergy
blue[center_module] = blueEnergy / maxBlueEnergy
-- return the 3 color arrays
return red, green, blue
end
function init(nmod, cmod)
num_modules = nmod
center_module = cmod
for i = 1,nmod do
red[i] = 0
green[i] = 0
blue[i] = 0
end
-- don't use fading
return 0
end