Skip to content

Commit

Permalink
Change midi timestamps and playing/saving timestamps to time.perf_cou…
Browse files Browse the repository at this point in the history
…nter()
  • Loading branch information
stephen322 committed Oct 15, 2023
1 parent b33a0db commit 8f7382f
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 20 deletions.
16 changes: 8 additions & 8 deletions lib/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def shift(lst, num_shifts):


def play_midi(song_path, midiports, saving, menu, ledsettings, ledstrip):
midiports.midifile_queue.append((mido.Message('note_on'), time.time()))
midiports.midifile_queue.append((mido.Message('note_on'), time.perf_counter()))

if song_path in saving.is_playing_midi.keys():
menu.render_message(song_path, "Already playing", 2000)
Expand All @@ -81,10 +81,10 @@ def play_midi(song_path, midiports, saving, menu, ledsettings, ledstrip):
for message in mid:
if song_path in saving.is_playing_midi.keys():
if not t0:
t0 = time.time()
t0 = time.perf_counter()

total_delay += message.time
current_time = (time.time() - t0) + message.time
current_time = (time.perf_counter() - t0) + message.time
drift = total_delay - current_time

if drift < 0:
Expand All @@ -94,7 +94,7 @@ def play_midi(song_path, midiports, saving, menu, ledsettings, ledstrip):
if delay < 0:
delay = 0

msg_timestamp = time.time() + delay
msg_timestamp = time.perf_counter() + delay
if delay > 0:
time.sleep(delay)
if not message.is_meta:
Expand Down Expand Up @@ -202,14 +202,14 @@ def screensaver(menu, midiports, saving, ledstrip, ledsettings):
while True:
manage_idle_animation(ledstrip, ledsettings, menu)

if (time.time() - saving.start_time) > 3600 and delay < 0.5 and menu.screensaver_is_running is False:
if (time.perf_counter() - saving.start_time) > 3600 and delay < 0.5 and menu.screensaver_is_running is False:
delay = 0.9
interval = 5 / float(delay)
cpu_history = [None] * int(interval)
cpu_average = 0
i = 0

if int(menu.screen_off_delay) > 0 and ((time.time() - saving.start_time) > (int(menu.screen_off_delay) * 60)):
if int(menu.screen_off_delay) > 0 and ((time.perf_counter() - saving.start_time) > (int(menu.screen_off_delay) * 60)):
menu.screen_status = 0
GPIO.output(24, 0)

Expand Down Expand Up @@ -277,7 +277,7 @@ def screensaver(menu, midiports, saving, ledstrip, ledsettings):
try:
if str(midiports.inport.poll()) != "None":
menu.screensaver_is_running = False
saving.start_time = time.time()
saving.start_time = time.perf_counter()
menu.screen_status = 1
GPIO.output(24, 1)
midiports.reconnect_ports()
Expand All @@ -288,7 +288,7 @@ def screensaver(menu, midiports, saving, ledstrip, ledsettings):
pass
if GPIO.input(KEY2) == 0:
menu.screensaver_is_running = False
saving.start_time = time.time()
saving.start_time = time.perf_counter()
menu.screen_status = 1
GPIO.output(24, 1)
midiports.reconnect_ports()
Expand Down
2 changes: 1 addition & 1 deletion lib/midiports.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,4 @@ def reconnect_ports(self):
print("Can't reconnect play port: " + port)

def msg_callback(self, msg):
self.midi_queue.append((msg, time.time()))
self.midi_queue.append((msg, time.perf_counter()))
4 changes: 2 additions & 2 deletions lib/savemidi.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def __init__(self):
self.menu = None
self.is_recording = False
self.is_playing_midi = {}
self.start_time = time.time()
self.start_time = time.perf_counter()

def add_instance(self, menu):
self.menu = menu
Expand Down Expand Up @@ -75,4 +75,4 @@ def save(self, filename):
self.menu.render_message("File saved", filename + ".mid", 1500)

def restart_time(self):
self.start_time = time.time()
self.start_time = time.perf_counter()
17 changes: 8 additions & 9 deletions visualizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,9 @@ def start_webserver():
manage_hotspot(hotspot, usersettings, midiports, True)

# Frame rate counters
event_loop_stamp = time.time()
event_loop_stamp = time.perf_counter()
frame_count = 0
frame_avg_stamp = time.time()
frame_avg_stamp = time.perf_counter()

# Main event loop

Expand All @@ -204,7 +204,7 @@ def start_webserver():
if (time.time() - midiports.last_activity) > (int(menu.screensaver_delay) * 60):
screensaver(menu, midiports, saving, ledstrip, ledsettings)
try:
elapsed_time = time.time() - saving.start_time
elapsed_time = time.perf_counter() - saving.start_time
except Exception as e:
# Handle any other unexpected exceptions here
print(f"Unexpected exception occurred: {e}")
Expand Down Expand Up @@ -501,19 +501,18 @@ def start_webserver():

# Frame time calculations

# time taken for the last interation of the main event loop
event_loop_time = time.time() - event_loop_stamp
# time taken for the last iteration of the main event loop
event_loop_time = time.perf_counter() - event_loop_stamp
event_loop_stamp = time.perf_counter()

frame_count += 1
frame_seconds = time.time() - frame_avg_stamp
frame_seconds = time.perf_counter() - frame_avg_stamp

# calculate fps average over 2 seconds
if frame_seconds >= 2:
fps = frame_count / frame_seconds
ledstrip.current_fps = fps

# reset counters
frame_avg_stamp = time.time()
frame_avg_stamp = time.perf_counter()
frame_count = 0

event_loop_stamp = time.time()

0 comments on commit 8f7382f

Please sign in to comment.