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
Пример #2
0
    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)
Пример #4
0
    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)]
Пример #5
0
 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)
Пример #6
0
    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
Пример #7
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
Пример #8
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()
Пример #10
0
    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
Пример #11
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)
Пример #12
0
    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)
Пример #13
0
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)
Пример #14
0
def setDimensions():
	print("Setting Subjects...\n")
	dimensions.append(Dimension(raw_input("Subject name : ")))
Пример #15
0
 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))
Пример #16
0
 def changeSize(self, size):
     self.updateSize(size=Dimension(2 * size - 1, 2 * size - 1))
Пример #17
0
 def changeSize(self, size) -> None:
     self.updateSize(size=Dimension(1, size))