Changeset - 97a7c71b952a
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 6 years ago 2019-06-10 01:39:26
drewp@bigasterisk.com
1 file changed with 15 insertions and 9 deletions:
0 comments (0 inline, 0 general)
light9/effect/effecteval.py
Show inline comments
 
@@ -8,13 +8,12 @@ import logging
 
from light9.effect.settings import DeviceSettings
 
from light9.effect.scale import scale
 
from typing import Dict, Tuple, Any
 
from PIL import Image
 
import random
 

	
 

	
 
SKY = Namespace('http://light9.bigasterisk.com/theater/skyline/device/')
 

	
 
random.seed(0)
 

	
 
log = logging.getLogger('effecteval')
 
log.info("reload effecteval")
 
@@ -61,12 +60,13 @@ def clamp255(x):
 

	
 
def _8bit(f):
 
    if not isinstance(f, (int, float)):
 
        raise TypeError(repr(f))
 
    return clamp255(int(f * 255))
 

	
 

	
 
class EffectEval(object):
 
    """
 
    runs one effect's code to turn effect attr settings into output
 
    device settings. No state; suitable for reload().
 
    """
 

	
 
@@ -418,16 +418,16 @@ def effect_image(effectSettings, strengt
 
    imgPath = f'cur/anim/{imageSetting}'
 
    t_offset = effectSettings.get(L9['tOffset'], 0)
 
    pxPerSec = effectSettings.get(L9['pxPerSec'], 30)
 
    img = Image.open(imgPath)
 
    x = (noteTime * pxPerSec)
 
    
 
    colorScale = hex_to_rgb(effectSettings.get(L9['colorScale'],
 
                                               '#ffffff'))
 
    colorScale = hex_to_rgb(effectSettings.get(L9['colorScale'], '#ffffff'))
 

	
 
    for dev, y in [(SKY['strip1'], 0),
 
    for dev, y in [
 
        (SKY['strip1'], 0),
 
                   (SKY['strip2'], 1),
 
                   (SKY['strip3'], 2),
 
                   (SKY['par3'], 3), # dl
 
                   (SKY['par4'], 4), # ul
 
                   (SKY['par7'], 5), # ur
 
                   (SKY['par1'], 6), # dr
 
@@ -452,12 +452,13 @@ def effect_image(effectSettings, strengt
 
            out[(SKY[f'cycGreen{column}'], L9['brightness'])] = color[1]
 
            out[(SKY[f'cycBlue{column}'],  L9['brightness'])] = color[2]
 
        else:
 
            out[(dev, L9['color'])] = rgb_to_hex(map(_8bit, color))
 
    return out
 

	
 

	
 
def effect_cyc(effectSettings, strength, songTime, noteTime):
 
    colorScale = effectSettings.get(L9['colorScale'], '#ffffff')
 
    r, g, b = map(lambda x: strength * x / 255, hex_to_rgb(colorScale))
 

	
 
    out ={
 
        (SKY['cycRed1'], L9['brightness']): r,
 
@@ -469,17 +470,17 @@ def effect_cyc(effectSettings, strength,
 
        (SKY['cycGreen3'], L9['brightness']): g,
 
        (SKY['cycGreen4'], L9['brightness']): g,
 
        (SKY['cycBlue1'], L9['brightness']): b,
 
        (SKY['cycBlue2'], L9['brightness']): b,
 
        (SKY['cycBlue3'], L9['brightness']): b,
 
        (SKY['cycBlue4'], L9['brightness']): b,
 
         
 
        }
 

	
 
    return out
 

	
 

	
 
cycChase1_members = [
 
       SKY['cycRed1'], 
 
       SKY['cycRed2'], 
 
       SKY['cycRed3'], 
 
       SKY['cycRed4'], 
 
       SKY['cycGreen1'], 
 
@@ -491,12 +492,13 @@ cycChase1_members = [
 
       SKY['cycBlue3'], 
 
       SKY['cycBlue4'],
 
    ]
 
cycChase1_members = cycChase1_members * 20
 
random.shuffle(cycChase1_members)
 

	
 

	
 
def effect_cycChase1(effectSettings, strength, songTime, noteTime):
 
    colorScale = effectSettings.get(L9['colorScale'], '#ffffff')
 
    r, g, b = map(lambda x: x / 255, hex_to_rgb(colorScale))
 
    tintAmount = {'Red': r, 'Green': g, 'Blue': b}
 

	
 
    members = cycChase1_members
 
@@ -515,19 +517,23 @@ def effect_cycChase1(effectSettings, str
 
                (dev, L9['brightness']): (1 - dist / radius) * scale,
 
            })
 
    return out
 

	
 

	
 
def effect_parNoise(effectSettings, strength, songTime, noteTime):
 
    
 
    colorScale = effectSettings.get(L9['colorScale'], '#ffffff')
 
    r, g, b = map(lambda x: x / 255, hex_to_rgb(colorScale))
 
    out = {}
 
    speed = 10
 
    gamma = .6
 
    for dev in [SKY['strip1'], SKY['strip2'], SKY['strip3']]:
 
        out[(dev, L9['color'])] = scale(rgb_to_hex(
 
        out[(dev, L9['color'])] = scale(
 
            rgb_to_hex(
 
            (_8bit(r * math.pow(max(.01, noise(speed * songTime)), gamma)),
 
             _8bit(g * math.pow(max(.01, noise(speed * songTime + 10)), gamma)),
 
             _8bit(b * math.pow(max(.01, noise(speed * songTime + 20)), gamma)))), strength)
 
                 _8bit(g *
 
                       math.pow(max(.01, noise(speed * songTime + 10)), gamma)),
 
                 _8bit(
 
                     b *
 
                     math.pow(max(.01, noise(speed * songTime + 20)), gamma)))),
 
            strength)
 

	
 
    return out
0 comments (0 inline, 0 general)