コード例 #1
0
ファイル: firemixgui.py プロジェクト: Openlights/firemix
    def draw_fft(self):
        """
        This method is slow.
        But, computers are fast.
        """
        #start = time.clock()
        if self.btn_receiving_audio.text() != "":
            self.btn_receiving_audio.setText("FFT Data Streaming")
        fft_data = self.mixer.audio.fft[0]
        self.fft_max.append(max(fft_data))
        if len(self.fft_max) > 64:
            self.fft_max.pop(0)
        max_val = max(self.fft_max)

        width = 256
        height = 64

        if self.fft_pixmap is None:
            self.fft_pixmap = np.full([height, width * 4], 0, dtype=np.uint8)

        for row in range(height - 1):
            self.fft_pixmap[row] = self.fft_pixmap[row + 1]

        if max_val > 0:
            for x in range(0, width * 4, 4):
                f = np.interp(old_div(x, 4), np.arange(len(fft_data)), fft_data)# / max_val
                #f = math.sqrt(math.sqrt(f))
                self.fft_pixmap[height - 1][x:x + 4] = \
                    (hsv_float_to_rgb_uint8((old_div(x, (4.0 * width)), 1.0, f)) + (255,))


        pm = self.fft_pixmap.flatten()
        img = QImage(pm, width, height, QImage.Format_ARGB32)
        self.fft_graphics_view.setPixmap(QPixmap.fromImage(img))
コード例 #2
0
    def draw(self, dt):
        if self._mixer.is_onset():
            self.hue_inner = math.fmod(
                self.hue_inner + self.parameter('hue-step').get(), 1.0)
            self.luminance_offset += self.parameter('hue-step').get()

        start = self.hue_inner + (dt * self.parameter('speed').get())
        self.wave1_offset += self.parameter('wave1-speed').get()
        self.wave2_offset += self.parameter('wave2-speed').get()
        self.luminance_offset += self.parameter('luminance-speed').get()

        for pixel in self.pixels:
            wave1 = abs(
                math.cos(self.wave1_offset + self.pixel_angles[pixel] *
                         self.parameter('wave1-period').get()) *
                self.parameter('wave1-amplitude').get())
            wave2 = abs(
                math.cos(self.wave2_offset + self.pixel_angles[pixel] *
                         self.parameter('wave2-period').get()) *
                self.parameter('wave2-amplitude').get())
            hue = self.pixel_distances[pixel] + wave1 + wave2
            luminance = abs(math.fmod(self.luminance_offset + hue, 1.0))
            hue = math.fmod(start + hue * self.parameter('hue-width').get(),
                            1.0)
            brightness = 0 if luminance > self.parameter(
                'blackout').get() else 1.0
            saturation = 0 if luminance < self.parameter(
                'whiteout').get() else 1.0
            self.setp(pixel,
                      hsv_float_to_rgb_uint8((hue, saturation, brightness)))
コード例 #3
0
ファイル: firemixgui.py プロジェクト: yazici/firemix
    def draw_fft(self):
        """
        This method is slow.
        But, computers are fast.
        """
        #start = time.clock()
        if self.btn_receiving_audio.text() != "":
            self.btn_receiving_audio.setText("FFT Data Streaming")
        fft_data = self.mixer.audio.fft[0]
        self.fft_max.append(max(fft_data))
        if len(self.fft_max) > 64:
            self.fft_max.pop(0)
        max_val = max(self.fft_max)

        width = 256
        height = 64

        if self.fft_pixmap is None:
            self.fft_pixmap = np.full([height, width * 4], 0, dtype=np.uint8)

        for row in range(height - 1):
            self.fft_pixmap[row] = self.fft_pixmap[row + 1]

        if max_val > 0:
            for x in range(0, width * 4, 4):
                f = np.interp(old_div(x, 4), np.arange(len(fft_data)),
                              fft_data)  # / max_val
                #f = math.sqrt(math.sqrt(f))
                self.fft_pixmap[height - 1][x:x + 4] = \
                    (hsv_float_to_rgb_uint8((old_div(x, (4.0 * width)), 1.0, f)) + (255,))

        pm = self.fft_pixmap.flatten()
        img = QImage(pm, width, height, QImage.Format_ARGB32)
        self.fft_graphics_view.setPixmap(QPixmap.fromImage(img))
コード例 #4
0
ファイル: spiral.py プロジェクト: underwatercolor/firemix
    def draw(self, dt):
        if self._mixer.is_onset():
            self.hue_inner = self.hue_inner + self.parameter('hue-step').get()

        start = self.hue_inner + (dt * self.parameter('speed').get())
        self.wave_offset += self.parameter('wave-speed').get()

        for pixel in self.pixels:
            angle = math.fmod(1.0 + self.pixel_angles[pixel] + math.sin(self.wave_offset + self.pixel_distances[pixel] * 2 * math.pi * self.parameter('wave-hue-period').get()) * self.parameter('wave-hue-width').get(), 1.0)
            hue = start + (self.parameter('radius-hue-width').get() * self.pixel_distances[pixel]) + (angle * self.parameter('angle-hue-width').get())
            self.setp(pixel, hsv_float_to_rgb_uint8((hue, 1.0, 1.0)))
コード例 #5
0
    def draw(self, dt):
        if self._mixer.is_onset():
            self.hue_inner = self.hue_inner + self.parameter('hue-step').get()

        start = self.hue_inner + (dt * self.parameter('speed').get())
        self.wave_offset += self.parameter('wave-speed').get()

        for pixel in self.pixels:
            angle = math.fmod(
                1.0 + self.pixel_angles[pixel] +
                math.sin(self.wave_offset + self.pixel_distances[pixel] * 2 *
                         math.pi * self.parameter('wave-hue-period').get()) *
                self.parameter('wave-hue-width').get(), 1.0)
            hue = start + (self.parameter('radius-hue-width').get() *
                           self.pixel_distances[pixel]) + (
                               angle * self.parameter('angle-hue-width').get())
            self.setp(pixel, hsv_float_to_rgb_uint8((hue, 1.0, 1.0)))
コード例 #6
0
    def draw(self, dt):
        if self._mixer.is_onset():
            self.hue_inner = math.fmod(self.hue_inner + self.parameter('hue-step').get(), 1.0)
            self.luminance_offset += self.parameter('hue-step').get()

        start = self.hue_inner + (dt * self.parameter('speed').get())
        self.wave1_offset += self.parameter('wave1-speed').get()
        self.wave2_offset += self.parameter('wave2-speed').get()
        self.luminance_offset += self.parameter('luminance-speed').get()
        
        for pixel in self.pixels:
            wave1 = abs(math.cos(self.wave1_offset + self.pixel_angles[pixel] * self.parameter('wave1-period').get()) * self.parameter('wave1-amplitude').get())
            wave2 = abs(math.cos(self.wave2_offset + self.pixel_angles[pixel] * self.parameter('wave2-period').get()) * self.parameter('wave2-amplitude').get())
            hue = self.pixel_distances[pixel] + wave1 + wave2
            luminance = abs(math.fmod(self.luminance_offset + hue, 1.0))
            hue = math.fmod(start + hue * self.parameter('hue-width').get(), 1.0)
            brightness = 0 if luminance > self.parameter('blackout').get() else 1.0
            saturation = 0 if luminance < self.parameter('whiteout').get() else 1.0
            self.setp(pixel, hsv_float_to_rgb_uint8((hue, saturation, brightness)))
コード例 #7
0
 def draw(self, dt):
     delta = dt * self.speed
     d3 = self.color_speed * dt
     posterization = self.parameter('resolution').get()
     setp = self.setp
     
     for pixel, location in self.pixel_locations:
         hue = (1.0 + snoise3(self.scale * (location[0] + delta), self.scale * (location[1] + delta), d3, 1, 0.5, 0.5)) / 2.0
         hue = self.hue_min + ((math.floor(hue * posterization) / posterization) * (self.hue_max - self.hue_min))
         
         brightness = (1.0 + snoise3(self.luminance_scale * (location[0] + delta), self.luminance_scale * (location[1] + delta), d3, 1, 0.5, 0.5)) / 2.0
         
         if brightness > self.parameter('whiteout').get():
             saturation = (brightness - self.parameter('whiteout').get()) / (1 - self.parameter('whiteout').get()) * 2
             if saturation > 1.0: saturation = 1.0
             saturation = math.floor(saturation * posterization) / posterization
             brightness = 1.0
         else:
             saturation = 1.0
         
         brightness = 0 if brightness < self.parameter('blackout').get() else 1.0
         
         setp(pixel, hsv_float_to_rgb_uint8((hue, saturation, brightness)))