-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisualizer.py
92 lines (76 loc) · 3.04 KB
/
visualizer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import time
import threading
import pygame
import os
left_open = False
right_open = False
open_open, open_closed, closed_open, closed_closed = "", "", "", ""
def print_cats():
global open_open, open_closed, closed_open, closed_closed
os.system("cls" if os.name == "nt" else "clear")
if left_open and right_open:
print(open_open)
elif left_open:
print(open_closed)
elif right_open:
print(closed_open)
else:
print(closed_closed)
def open_left(delay):
global left_open
time.sleep(delay)
left_open = True
print_cats()
def close_left(delay):
global left_open
time.sleep(delay)
left_open = False
print_cats()
def open_right(delay):
global right_open
time.sleep(delay)
right_open = True
print_cats()
def close_right(delay):
global right_open
time.sleep(delay)
right_open = False
print_cats()
# Define the action to be performed
def perform_action(x, m):
print(f"Action performed at {time.time()} for delay: {x} seconds, measure {m}")
# Define a function to wait and perform the action
def schedule_action(delay, measure):
time.sleep(delay)
perform_action(delay, measure)
def schedule_beats(primary_beat_times, secondary_beat_times, midi_fpath, song_length, debug):
global open_open, open_closed, closed_open, closed_closed
with open("cats/open_open.txt", "r") as f:
open_open = f.read()
with open("cats/open_closed.txt", "r") as f:
open_closed = f.read()
with open("cats/closed_open.txt", "r") as f:
closed_open = f.read()
with open("cats/closed_closed.txt", "r") as f:
closed_closed = f.read()
pygame.mixer.init()
pygame.mixer.music.load(midi_fpath)
pygame.mixer.music.play(0)
if debug:
for x in range(len(primary_beat_times)):
threading.Thread(target=schedule_action, args=(primary_beat_times[x][1], primary_beat_times[x][0],)).start()
else:
for x in range(len(primary_beat_times) - 1):
threading.Thread(target=open_left, args=(primary_beat_times[x][1],)).start()
close_time = primary_beat_times[x][1] + (primary_beat_times[x + 1][1] - primary_beat_times[x][1]) / 2
threading.Thread(target=close_left, args=(close_time,)).start()
threading.Thread(target=open_left, args=(primary_beat_times[-1][1],)).start()
threading.Thread(target=close_left, args=(primary_beat_times[-1][1] + 0.5,)).start()
if secondary_beat_times:
for x in range(len(secondary_beat_times) - 1):
threading.Thread(target=open_right, args=(secondary_beat_times[x][1],)).start()
close_time = secondary_beat_times[x][1] + (secondary_beat_times[x + 1][1] - secondary_beat_times[x][1]) / 2
threading.Thread(target=close_right, args=(close_time,)).start()
threading.Thread(target=open_right, args=(secondary_beat_times[-1][1],)).start()
threading.Thread(target=close_right, args=(secondary_beat_times[-1][1] + 0.5,)).start()
time.sleep(song_length)