Merge pull request #2 from eBrnd/master

nicer spectrum animation
This commit is contained in:
Sebastian 2015-09-22 18:43:19 +02:00
commit d6a8e446e0
1 changed files with 27 additions and 4 deletions

View File

@ -25,12 +25,13 @@ BOX_MAP = [
COLORS = [
[50, 255, 50], [50, 255, 120], [50, 251, 255], [50, 120, 255],
[50, 50, 255], [180, 50, 255], [255, 50, 137], [255, 50, 50]
[50, 50, 255], [180, 50, 255], [255, 50, 198], [255, 50, 50]
]
channels = {}
def set_box(x,y,r,g,b):
if x >= 0 and y >= 0 and x < WIDTH and y < HEIGHT:
base_address = BOX_MAP[y][x]
@ -39,6 +40,16 @@ def set_box(x,y,r,g,b):
channels[base_address + 2] = b
def get_box(x, y):
base_address = BOX_MAP[y][x]
try:
res = [ channels[base_address], channels[base_address + 1], channels[base_address + 2] ]
except KeyError, e:
# If the array is still uninitialized, just return [0,0,0]
res = [ 0, 0, 0 ]
return res
def output_channels():
for channel, value in channels.items():
print("%d : %d" % (channel, value))
@ -73,9 +84,21 @@ class Background:
self._target_bg_color[i] = random.randint(0, 128)
self._bg_time = 0
for x in range(0, WIDTH):
for y in range(0, HEIGHT):
set_box(x, y, self._current_bg_color[0], self._current_bg_color[1], self._current_bg_color[2])
for x in range(WIDTH):
for y in range(HEIGHT):
color = get_box(x, y)
if y != HEIGHT - 1:
color_below = get_box(x, y + 1)
else:
color_below = self._current_bg_color
for i in range(3):
# fade into BG by adding just a little of the current BG color,
# add color from pixel below for a "upward flowing" effect
color[i] = 0.744 * color[i] + 0.056 * self._current_bg_color[i] + 0.2 * color_below[i]
set_box(x, y, color[0], color[1], color[2])
def audio_from_raw(raw):