49adf8c41cea45eea15557bdd36f5af579eed31b
Stefan Schuermans bbm2Chaosknoten

Stefan Schuermans authored 5 years ago

1) #! /usr/bin/env python3
2) 
3) import argparse
4) import struct
5) import sys
6) 
7) 
8) class Movie(object):
9)     class Frame(object):
10) 
11)         LED_COORDS = [
12)             408, 414, 420, 468, 492, 677, 684, 863, 945, 951, 957, 963, 971,
13)             975, 1034, 1209, 1215, 1221, 1227, 1259, 1299, 1304, 1373, 1469,
14)             1476, 1497, 1572, 1633, 1656, 1680, 1728, 1734, 1740, 1832, 1968,
15)             2106, 2163, 2225, 2365, 2559, 2620, 2956
16)         ]
17) 
18)         LED_COORDS_OUT = [
19)             [408, 407, 409], [414, 413, 415], [420, 419, 421], [468, 533, 403],
20)             [492, 425, 559], [677, 610, 744], [684, 617, 751], [863, 797, 929],
21)             [945, 944, 946], [951, 950, 952], [957, 956, 958], [963, 962, 964],
22)             [971, 904, 1038], [975, 908, 1042], [1034, 967, 1101],
23)             [1209, 1208, 1210], [1215, 1214, 1216], [1221, 1220, 1222],
24)             [1227, 1226, 1228], [1259, 1193, 1325], [1299, 1298, 1300],
25)             [1304, 1369, 1239], [1373, 1438, 1308], [1469, 1534, 1404],
26)             [1476, 1541, 1411], [1497, 1496, 1498], [1572, 1637, 1507],
27)             [1633, 1698, 1568], [1656, 1589, 1723], [1680, 1745, 1615],
28)             [1728, 1727, 1729], [1734, 1733, 1735], [1740, 1739, 1741],
29)             [1832, 1897, 1767], [1968, 1901, 2035], [2106, 2105, 2107],
30)             [2163, 2097, 2229], [2225, 2290, 2160], [2365, 2299, 2431],
31)             [2559, 2493, 2625], [2620, 2619, 2621], [2956, 2889, 3023]
32)         ]
33) 
34)         def __init__(self):
35)             self.duration = 100
36)             self.leds = len(self.LED_COORDS) * [0]
37) 
38)         def from_frame_data(self, duration, data):
39)             self.duration = duration
40)             for i in range(len(self.LED_COORDS)):
41)                 ledno = self.LED_COORDS[i]
42)                 self.leds[i] = data[ledno * 3 + 1]
43) 
44)         def to_frame_data(self):
45)             pixels = 51 * 66 * [0, 0, 255]
46)             for i in range(len(self.LED_COORDS_OUT)):
47)                 for ledno in self.LED_COORDS_OUT[i]:
48)                     pixels[ledno * 3 + 0] = self.leds[i]
49)                     pixels[ledno * 3 + 1] = self.leds[i]
50)                     pixels[ledno * 3 + 2] = 0
51)             data = bytes(pixels)
52)             return self.duration, data
53) 
54)         def to_firmware_data(self):
Stefan Schuermans frame time unit is 6 ms

Stefan Schuermans authored 5 years ago

55)             duration = (self.duration + 3) // 6