def __init__(self, queue: Queue): super().__init__() # Window settings self.minsize(width=1100, height=700) self.maxsize(width=1100, height=700) self.resizable(width=False, height=False) self.protocol("WM_DELETE_WINDOW", self.quit) # self.state('zoomed') self.config(menu=LedMenubar(self)) self.title(info["programName"]) # Led List settings self.ledList = LedList() self.saveDir = "" # Toolbar settings self.toolbar = LedToolbar(self) self.sidebar = LedSidebar(self) # Canvas settings self.canvasSize = Dimension(0, 0) self.ledCanvas = LedCanvas(self) # Connection self.queue = queue self.transmitting = False self.connection = conn.Shredder(self) self.toolbar.transmit() self.packEverything() self.setTool("add") self.RUNNING = True
def __init__(self, audioDevice: AudioInput.AudioInput, size: int = 31, freqs: tuple = (), pixel: Dimension = Dimension(10, 10), pxDist: int = 0, sens: float = 0.05, clipping=40): super().__init__(audioDevice, size=Dimension(size, 1), freqs=freqs, pixel=pixel, pxDist=pxDist, sens=sens) self.barLength = clipping # self.changePalette("gradient", (0, 184, 18), (224, 7, 7)) self.changePalette("gradient", (255, 255, 0), (255, 0, 0))
def openLayout(self): ans = filedialog.askopenfilename(parent=self, initialdir=os.getcwd(), title="Select Layout File", filetypes=[('LED Layout files', '.ledlayout'), ('JSON files', '.json'), ('All files', '.*')]) self.saveDir = ans self.toolbar.saveBtn['state'] = NORMAL try: x, y = self.ledList.read(ans) self.canvasSize = Dimension(x, y) self.ledCanvas.begin() except Exception as e: self.saveDir = '' self.toolbar.saveBtn['state'] = DISABLED self.canvasSize = Dimension(0, 0) print(e)
def __init__(self, audioDevice: AudioInput.AudioInput, size: Dimension = Dimension(31, 40), freqs: tuple = (), pixel: Dimension = Dimension(17, 7), pxDist: int = 5, sens: float = 0.05, topDelay: int = 0): self.name = self.__class__.__name__ + ' - ' + str(Spectrum.number) Spectrum.number += 1 # Audio setup self.audioDevice = audioDevice if not freqs: freqs = (20, 25, 31.5, 40, 50, 63, 80, 100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1000, 1250, 1600, 2000, 2500, 3150, 4000, 5000, 6300, 8000, 10000, 12500, 16000, 20000) self.findex = [self.audioDevice.indexFromFreq(f) for f in freqs] # print(self.findex) # Screen attributes self.sens = sens self.topDelay = topDelay self.topFrameDrop = 1 self.fillDelay = False super().__init__(size, pixel, pxDist) self.addBand() self.calcBars() self.changePalette("gradientBeat") self.counter = 0 # Colour Crossfade Variables self.crossfadeSpeed = 8 self.r = 255 self.g = 75 self.b = 76 # Beat Detection Variables self.beatDetectSensitivity = 2.2 self.beatDetectThreshold = 12 self.beatDetectionBar = 6 self.beatDetect = [0 for i in range(20)]
def updateSize(self, size: Dimension = None, pixel: Dimension = None, pxDist: int = None): if size is not None: self.size = size if pixel is not None: self.pixel = pixel if pxDist is not None: self.pxDist = pxDist self.barLength = self.size.y self.resolution = Dimension( self.size.x * (self.pixel.x + self.pxDist) - self.pxDist, self.size.y * (self.pixel.y + self.pxDist) - self.pxDist)
def __init__(self, audioDevice: AudioInput.AudioInput, freq: int = 100, size: int = 15, pixel: int = 10, pxDist: int = 0, sens: float = 0.03, topDelay: int = 0): self.freq = freq Spectrum.__init__(self, audioDevice, size=Dimension(2 * size - 1, 2 * size - 1), pixel=Dimension(pixel, pixel), pxDist=pxDist, sens=sens, topDelay=topDelay) self.barLength = size self.beatDetectionBar = 0
def __init__(self, audioDevice: AudioInput.AudioInput, freq: int = 100, size: int = 40, pixel: Dimension = Dimension(17, 7), pxDist: int = 5, sens: float = 0.05, topDelay: int = 0, align: int = 1): self.align = align # Align 0:Bottom, 1:Top, 2:Center self.freq = freq super().__init__(audioDevice, size=Dimension(1, size), pixel=pixel, pxDist=pxDist, sens=sens, topDelay=topDelay) self.beatDetectionBar = 0
def __init__(self, size: Dimension = Dimension(50, 40), pixel: Dimension = Dimension(5, 5), pxDist=0): self.name = self.__class__.__name__ + ' - ' + str(Video.number) Video.number += 1 self.size = size self.pixel = pixel self.pxDist = pxDist super().__init__(size, pixel, pxDist) videoFile = askopenfilename(initialdir="/visuals", title="Select video file", filetypes=[('AVI files', '.avi'), ('MP4 files', '.mp4')]) pickleFile = ''.join(videoFile.split('.')[:-1]) + '.frames' if os.path.isfile(pickleFile): self.frames = pickle.load(open(pickleFile, 'rb')) else: self.frames = [] cap = cv2.VideoCapture(videoFile) if not cap.isOpened(): cap.open() fc = cap.get(7) i = 0 while cap.isOpened(): ret, frame = cap.read() if ret: print(i, fc) i += 1 frame = cv2.resize(frame, tuple(self.size)) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) self.frames.append(frame.tolist()) else: break cv2.destroyAllWindows() cap.release() pickle.dump(self.frames, open(pickleFile, 'wb')) self.iter = 0 self.vidLen = len(self.frames)
def newLayout(self): sizex = simpledialog.askinteger( 'Input X size', 'Provide width in number of pixels (LEDs): ', parent=self) if sizex is None: return sizey = simpledialog.askinteger( 'Input Y size', 'Provide height in number of pixels (LEDs): ', parent=self) if sizey is None: return self.saveDir = '' self.toolbar.saveBtn['state'] = DISABLED self.ledList = LedList() self.canvasSize = Dimension(sizex, sizey) self.ledCanvas.begin()
def __init__(self, audioDevice: AudioInput.AudioInput, freq: int = 80, pixel: int = 120, pxDist: int = 0, delay=3): SpectrumBar.__init__(self, audioDevice, size=1, pixel=Dimension(pixel, pixel), pxDist=pxDist, sens=0.05, freq=freq) self.beatDetectThreshold = 6 self.delay = delay self.c = 0
def __init__(self, parent, screen, callback, placeholder: Dimension = Dimension(0, 0), title: str = "", xLim=float('inf'), yLim=float('inf'), secondDimension=True): tk.Frame.__init__(self, parent) self.screen = screen self.callback = callback self.parent = parent self.second = secondDimension def limit(*args): temp = self.xVar.get() if temp == '': temp = "0" if not temp.isdigit(): temp = temp[:-1] self.xVar.set(temp) if int(temp) > xLim: self.xVar.set(str(xLim)) temp = self.yVar.get() if secondDimension and temp == '': temp = "0" if secondDimension and not temp.isdigit(): temp = temp[:-1] self.yVar.set(temp) if secondDimension and int(temp) > yLim: self.yVar.set(str(yLim)) self.xVar = StringVar() self.yVar = StringVar() try: self.xVar.set(str(placeholder.x)) self.yVar.set(str(placeholder.y)) except AttributeError: self.xVar.set(str(placeholder)) self.yVar.set('-') self.xVar.trace('w', limit) self.yVar.trace('w', limit) Label(self, text=title).grid(column=0, row=0) Label(self, text="X:").grid(column=1, row=0) x = Entry(self, textvariable=self.xVar, width=5) x.grid(column=2, row=0, padx=5) Label(self, text="Y:").grid(column=3, row=0) y = Entry(self, textvariable=self.yVar, width=5) y.grid(column=4, row=0, padx=5) if not secondDimension: y.config(state='disabled') Button(self, text="Set", command=self.set).grid(column=5, row=0, padx=15)
def set(self, event=None): if self.second: try: x = int(self.xVar.get()) except ValueError: x = 0 try: y = int(self.yVar.get()) except ValueError: y = 0 self.callback(Dimension(x, y)) else: try: x = int(self.xVar.get()) except ValueError: x = 0 self.callback(x) self.parent.parent.window.updateSize(self.parent.parent.parent)
from Dimension import Dimension from Population import Population from Candidat import Candidat jeanLuc = Candidat("Jean-luc") marieRenee = Candidat("Marie-Renee") ecology = Dimension("Ecology") jobs = Dimension("Jobs") infrastructure = Dimension("Infrastructure") catholics = Population("Catholics", 30) youngEducated = Population("Young educated", 20) ecology.addPopulation(catholics, importance=15, position=75, clout=35) ecology.addPopulation(youngEducated, importance=50, position=99, clout=15) jobs.addPopulation(catholics, importance=12, position=99, clout=25) jobs.addPopulation(youngEducated, importance=20, position=99, clout=70) infrastructure.addPopulation(catholics, importance=70, position=99, clout=30) infrastructure.addPopulation(youngEducated, importance=70, position=5, clout=50) ecology.addCandidate(marieRenee, 85) jobs.addCandidate(marieRenee, 99) infrastructure.addCandidate(marieRenee, 99) ecology.addCandidate(jeanLuc, 97)
def setDimensions(): print("Setting Subjects...\n") dimensions.append(Dimension(raw_input("Subject name : ")))
def addBand(self, x=0) -> None: if x > 0: self.findex.append(self.audioDevice.indexFromFreq(x)) self.tops = [[0, 0] for i in range(len(self.findex))] self.updateSize(size=Dimension(len(self.findex), self.size.y))
def changeSize(self, size): self.updateSize(size=Dimension(2 * size - 1, 2 * size - 1))
def changeSize(self, size) -> None: self.updateSize(size=Dimension(1, size))