From 8f7382fe8725146696f73c39ba1233180084e10a Mon Sep 17 00:00:00 2001 From: stephen322 Date: Sun, 15 Oct 2023 13:19:10 -0400 Subject: [PATCH] Change midi timestamps and playing/saving timestamps to time.perf_counter() --- lib/functions.py | 16 ++++++++-------- lib/midiports.py | 2 +- lib/savemidi.py | 4 ++-- visualizer.py | 17 ++++++++--------- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/functions.py b/lib/functions.py index caaf4c9..18480c9 100644 --- a/lib/functions.py +++ b/lib/functions.py @@ -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) @@ -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: @@ -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: @@ -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) @@ -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() @@ -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() diff --git a/lib/midiports.py b/lib/midiports.py index a29d347..509d002 100644 --- a/lib/midiports.py +++ b/lib/midiports.py @@ -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())) diff --git a/lib/savemidi.py b/lib/savemidi.py index e639b9a..ba426b2 100644 --- a/lib/savemidi.py +++ b/lib/savemidi.py @@ -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 @@ -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() diff --git a/visualizer.py b/visualizer.py index da9073b..b3578ac 100755 --- a/visualizer.py +++ b/visualizer.py @@ -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 @@ -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}") @@ -501,11 +501,12 @@ 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: @@ -513,7 +514,5 @@ def start_webserver(): 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()