Exemplo n.º 1
0
        def go_into_dance_pose():
            for i in range(settings.servo_count):
                servo_settings = settings.get_servo(i)
                default_init_rotation = (servo_settings.max_rotation + servo_settings.min_rotation) / 2
                if i == 1:
                    timmy_device.set_servo_rotation(i, 14)  # magic const
                else:
                    timmy_device.set_servo_rotation(i, default_init_rotation)

            sleep(1)
Exemplo n.º 2
0
        def dance():
            def dance_processing():
                while not self.is_stopped:
                    elapsed_time = time() - start_time
                    # if elapsed_time > length:
                    #     break

                    # if elapsed_time > beats[current_beat]:
                    #     current_beat += 1
                    #     if current_beat >= len(beats):
                    #         break
                    #     state = 'min'
                    #     self.app.timmy_device.set_servo_rotation(servo_id, min_rotation)
                    # elif current_beat > 0 and elapsed_time > (beats[current_beat - 1] + beats[current_beat]) / 2 and state == 'min':
                    #     state = 'max'
                    #     self.app.timmy_device.set_servo_rotation(servo_id, max_rotation)

                    if elapsed_time >= total_duration:
                        break

                    t = int(elapsed_time / total_duration * length)
                    s = self.sound_data.signal[t] * scale
                    rotation = int((max_rotation + min_rotation) / 2 + (max_rotation - min_rotation) / 2 * s / 32768)
                    timmy_device.set_servo_rotation(servo_id, rotation)

            if not timmy_device.is_active():
                return False

            servo_id = 2 # !!! gui
            scale = 4 # ??? calc
            servo_settings = settings.get_servo(servo_id)
            min_rotation = servo_settings.min_rotation
            max_rotation = servo_settings.max_rotation
            timmy_device.set_servo_rotation(servo_id, max_rotation)
            state = 'max'
            current_beat = 0
            start_time = time()

            length = len(self.sound_data.signal) #!!!: already calc
            total_duration = float(length) / self.sound_data.rate

            dance_thread = Thread(target=dance_processing)
            dance_thread.start()
Exemplo n.º 3
0
            def dance_processing():
                while not self.is_stopped:
                    elapsed_time = time() - start_time
                    # if elapsed_time > length:
                    #     break

                    # if elapsed_time > beats[current_beat]:
                    #     current_beat += 1
                    #     if current_beat >= len(beats):
                    #         break
                    #     state = 'min'
                    #     self.app.timmy_device.set_servo_rotation(servo_id, min_rotation)
                    # elif current_beat > 0 and elapsed_time > (beats[current_beat - 1] + beats[current_beat]) / 2 and state == 'min':
                    #     state = 'max'
                    #     self.app.timmy_device.set_servo_rotation(servo_id, max_rotation)

                    if elapsed_time >= total_duration:
                        break

                    t = int(elapsed_time / total_duration * length)
                    s = self.sound_data.signal[t] * scale
                    rotation = int((max_rotation + min_rotation) / 2 + (max_rotation - min_rotation) / 2 * s / 32768)
                    timmy_device.set_servo_rotation(servo_id, rotation)
Exemplo n.º 4
0
 def on_slider_value_changed(self, slider_index, value):
     if not timmy_device.is_active():
         return
     timmy_device.set_servo_rotation(slider_index, int(value))