Add files via upload
Added opts for amount of r,g,b in "Energy", "Spectrum", and "Scroll"
This commit is contained in:
parent
3ae736bffe
commit
06f775fc92
@ -84,12 +84,18 @@ class Visualizer():
|
|||||||
# Configurable options for effects go in this dictionary.
|
# Configurable options for effects go in this dictionary.
|
||||||
# Usage: self.effect_opts[effect][option]
|
# Usage: self.effect_opts[effect][option]
|
||||||
self.effect_opts = {"Energy":{"blur": 1, # Amount of blur to apply
|
self.effect_opts = {"Energy":{"blur": 1, # Amount of blur to apply
|
||||||
"scale":0.9}, # Width of effect on strip
|
"scale":0.9, # Width of effect on strip
|
||||||
|
"r_multiplier": 1.0, # How much red
|
||||||
|
"g_multiplier": 1.0, # How much green
|
||||||
|
"b_multiplier": 1.0}, # How much blue
|
||||||
"Wave":{"color_wave": "Red", # Colour of moving bit
|
"Wave":{"color_wave": "Red", # Colour of moving bit
|
||||||
"color_flash": "White", # Colour of flashy bit
|
"color_flash": "White", # Colour of flashy bit
|
||||||
"wipe_len":5, # Initial length of colour bit after beat
|
"wipe_len":5, # Initial length of colour bit after beat
|
||||||
"decay": 0.7, # How quickly the flash fades away
|
"decay": 0.7, # How quickly the flash fades away
|
||||||
"wipe_speed":2}, # Number of pixels added to colour bit every frame
|
"wipe_speed":2}, # Number of pixels added to colour bit every frame
|
||||||
|
"Spectrum":{"r_multiplier": 1.0, # How much red
|
||||||
|
"g_multiplier": 1.0, # How much green
|
||||||
|
"b_multiplier": 1.0}, # How much blue
|
||||||
"Wavelength":{"roll_speed": 0, # How fast (if at all) to cycle colour overlay across strip
|
"Wavelength":{"roll_speed": 0, # How fast (if at all) to cycle colour overlay across strip
|
||||||
"color_mode": "Spectral", # Colour gradient to display
|
"color_mode": "Spectral", # Colour gradient to display
|
||||||
"mirror": False, # Reflect output down centre of strip
|
"mirror": False, # Reflect output down centre of strip
|
||||||
@ -97,7 +103,10 @@ class Visualizer():
|
|||||||
"reverse_roll": False, # Reverse movement of gradient roll
|
"reverse_roll": False, # Reverse movement of gradient roll
|
||||||
"blur": 3.0, # Amount of blur to apply
|
"blur": 3.0, # Amount of blur to apply
|
||||||
"flip_lr":False}, # Flip output left-right
|
"flip_lr":False}, # Flip output left-right
|
||||||
"Scroll":{"decay": 0.95, # How quickly the colour fades away as it moves
|
"Scroll":{"decay": 0.995, # How quickly the colour fades away as it moves
|
||||||
|
"r_multiplier": 1.0, # How much red
|
||||||
|
"g_multiplier": 1.0, # How much green
|
||||||
|
"b_multiplier": 1.0, # How much blue
|
||||||
"blur": 0.2}, # Amount of blur to apply
|
"blur": 0.2}, # Amount of blur to apply
|
||||||
"Power":{"color_mode": "Spectral", # Colour gradient to display
|
"Power":{"color_mode": "Spectral", # Colour gradient to display
|
||||||
"s_count": config.N_PIXELS//6, # Initial number of sparks
|
"s_count": config.N_PIXELS//6, # Initial number of sparks
|
||||||
@ -150,12 +159,18 @@ class Visualizer():
|
|||||||
# 1 - To make it easy to add options to your effects for the user
|
# 1 - To make it easy to add options to your effects for the user
|
||||||
# 2 - To give a consistent GUI for the user. If every options page was set out differently it would all be a mess
|
# 2 - To give a consistent GUI for the user. If every options page was set out differently it would all be a mess
|
||||||
self.dynamic_effects_config = {"Energy":[["blur", "Blur", "float_slider", (0.1,4.0,0.1)],
|
self.dynamic_effects_config = {"Energy":[["blur", "Blur", "float_slider", (0.1,4.0,0.1)],
|
||||||
["scale", "Scale", "float_slider", (0.4,1.0,0.05)]],
|
["scale", "Scale", "float_slider", (0.4,1.0,0.05)],
|
||||||
|
["r_multiplier", "Red", "float_slider", (0.05,1.0,0.05)],
|
||||||
|
["g_multiplier", "Green", "float_slider", (0.05,1.0,0.05)],
|
||||||
|
["b_multiplier", "Blue", "float_slider", (0.05,1.0,0.05)]],
|
||||||
"Wave":[["color_flash", "Flash Color", "dropdown", self.colors],
|
"Wave":[["color_flash", "Flash Color", "dropdown", self.colors],
|
||||||
["color_wave", "Wave Color", "dropdown", self.colors],
|
["color_wave", "Wave Color", "dropdown", self.colors],
|
||||||
["wipe_len", "Wave Start Length", "slider", (0,config.N_PIXELS//4,1)],
|
["wipe_len", "Wave Start Length", "slider", (0,config.N_PIXELS//4,1)],
|
||||||
["wipe_speed", "Wave Speed", "slider", (1,10,1)],
|
["wipe_speed", "Wave Speed", "slider", (1,10,1)],
|
||||||
["decay", "Flash Decay", "float_slider", (0.1,1.0,0.05)]],
|
["decay", "Flash Decay", "float_slider", (0.1,1.0,0.05)]],
|
||||||
|
"Spectrum":[["r_multiplier", "Red", "float_slider", (0.05,1.0,0.05)],
|
||||||
|
["g_multiplier", "Green", "float_slider", (0.05,1.0,0.05)],
|
||||||
|
["b_multiplier", "Blue", "float_slider", (0.05,1.0,0.05)]],
|
||||||
"Wavelength":[["color_mode", "Color Mode", "dropdown", self.multicolor_mode_names],
|
"Wavelength":[["color_mode", "Color Mode", "dropdown", self.multicolor_mode_names],
|
||||||
["roll_speed", "Roll Speed", "slider", (0,8,1)],
|
["roll_speed", "Roll Speed", "slider", (0,8,1)],
|
||||||
["blur", "Blur", "float_slider", (0.1,4.0,0.1)],
|
["blur", "Blur", "float_slider", (0.1,4.0,0.1)],
|
||||||
@ -164,7 +179,10 @@ class Visualizer():
|
|||||||
["reverse_roll", "Reverse Roll", "checkbox"],
|
["reverse_roll", "Reverse Roll", "checkbox"],
|
||||||
["flip_lr", "Flip LR", "checkbox"]],
|
["flip_lr", "Flip LR", "checkbox"]],
|
||||||
"Scroll":[["blur", "Blur", "float_slider", (0.05,4.0,0.05)],
|
"Scroll":[["blur", "Blur", "float_slider", (0.05,4.0,0.05)],
|
||||||
["decay", "Decay", "float_slider", (0.95,1.0,0.005)]],
|
["decay", "Decay", "float_slider", (0.97,1.0,0.0005)],
|
||||||
|
["r_multiplier", "Red", "float_slider", (0.05,1.0,0.05)],
|
||||||
|
["g_multiplier", "Green", "float_slider", (0.05,1.0,0.05)],
|
||||||
|
["b_multiplier", "Blue", "float_slider", (0.05,1.0,0.05)]],
|
||||||
"Power":[["color_mode", "Color Mode", "dropdown", self.multicolor_mode_names],
|
"Power":[["color_mode", "Color Mode", "dropdown", self.multicolor_mode_names],
|
||||||
["s_color", "Spark Color ", "dropdown", self.colors],
|
["s_color", "Spark Color ", "dropdown", self.colors],
|
||||||
["s_count", "Spark Amount", "slider", (0,config.N_PIXELS//6,1)],
|
["s_count", "Spark Amount", "slider", (0,config.N_PIXELS//6,1)],
|
||||||
@ -291,13 +309,14 @@ class Visualizer():
|
|||||||
def visualize_scroll(self, y):
|
def visualize_scroll(self, y):
|
||||||
"""Effect that originates in the center and scrolls outwards"""
|
"""Effect that originates in the center and scrolls outwards"""
|
||||||
global p
|
global p
|
||||||
y = y**2.0
|
#print(max(y), min(y))
|
||||||
|
y = y**4.0
|
||||||
gain.update(y)
|
gain.update(y)
|
||||||
y /= gain.value
|
y /= gain.value
|
||||||
y *= 255.0
|
y *= 255.0
|
||||||
r = int(np.max(y[:len(y) // 3]))
|
r = int(np.max(y[:len(y) // 3])*self.effect_opts["Scroll"]["r_multiplier"])
|
||||||
g = int(np.max(y[len(y) // 3: 2 * len(y) // 3]))
|
g = int(np.max(y[len(y) // 3: 2 * len(y) // 3])*self.effect_opts["Scroll"]["g_multiplier"])
|
||||||
b = int(np.max(y[2 * len(y) // 3:]))
|
b = int(np.max(y[2 * len(y) // 3:])*self.effect_opts["Scroll"]["b_multiplier"])
|
||||||
# Scrolling effect window
|
# Scrolling effect window
|
||||||
p[:, 1:] = p[:, :-1]
|
p[:, 1:] = p[:, :-1]
|
||||||
p *= self.effect_opts["Scroll"]["decay"]
|
p *= self.effect_opts["Scroll"]["decay"]
|
||||||
@ -320,9 +339,9 @@ class Visualizer():
|
|||||||
# Scale by the width of the LED strip
|
# Scale by the width of the LED strip
|
||||||
y *= float((config.N_PIXELS * scale) - 1)
|
y *= float((config.N_PIXELS * scale) - 1)
|
||||||
# Map color channels according to energy in the different freq bands
|
# Map color channels according to energy in the different freq bands
|
||||||
r = int(np.mean(y[:len(y) // 3]**scale))
|
r = int(np.mean(y[:len(y) // 3]**scale)*self.effect_opts["Energy"]["r_multiplier"])
|
||||||
g = int(np.mean(y[len(y) // 3: 2 * len(y) // 3]**scale))
|
g = int(np.mean(y[len(y) // 3: 2 * len(y) // 3]**scale)*self.effect_opts["Energy"]["g_multiplier"])
|
||||||
b = int(np.mean(y[2 * len(y) // 3:]**scale))
|
b = int(np.mean(y[2 * len(y) // 3:]**scale)*self.effect_opts["Energy"]["b_multiplier"])
|
||||||
# Assign color to different frequency regions
|
# Assign color to different frequency regions
|
||||||
p[0, :r] = 255.0
|
p[0, :r] = 255.0
|
||||||
p[0, r:] = 0.0
|
p[0, r:] = 0.0
|
||||||
@ -385,6 +404,9 @@ class Visualizer():
|
|||||||
r = r_filt.update(y - common_mode.value)
|
r = r_filt.update(y - common_mode.value)
|
||||||
g = np.abs(diff)
|
g = np.abs(diff)
|
||||||
b = b_filt.update(np.copy(y))
|
b = b_filt.update(np.copy(y))
|
||||||
|
r *= self.effect_opts["Spectrum"]["r_multiplier"]
|
||||||
|
g *= self.effect_opts["Spectrum"]["g_multiplier"]
|
||||||
|
b *= self.effect_opts["Spectrum"]["b_multiplier"]
|
||||||
# Mirror the color channels for symmetric output
|
# Mirror the color channels for symmetric output
|
||||||
r = np.concatenate((r[::-1], r))
|
r = np.concatenate((r[::-1], r))
|
||||||
g = np.concatenate((g[::-1], g))
|
g = np.concatenate((g[::-1], g))
|
||||||
|
Loading…
Reference in New Issue
Block a user