diff --git a/code/project/main.py b/code/project/main.py index 16eac96..3dd86d3 100644 --- a/code/project/main.py +++ b/code/project/main.py @@ -33,10 +33,12 @@ images_set = { loop: bool = True tone: bool = False midi_key: int = 69 +tone_mode: bool = True # Fetch the base image for the note letter from the global dictionary, # Then embellish it with the octave pattern (in binary) and potential flat flag +# Flat flag goes in the bottom right pixel at partial brightness, and binary octave pattern goes from top right down def get_image(note_letter: str, octave: int) -> Image: base_letter = note_letter[0] base_img = images_set[base_letter] @@ -56,11 +58,12 @@ def get_image(note_letter: str, octave: int) -> Image: base_img.set_pixel(4, i, 0) return base_img - +# Example: get_note(69) -> ("A", 4) def get_note(key: int) -> tuple: return ((note_names[key % 12]), ((key // 12) - 1)) +# Logic controller for the speaker. Decides when to start and stop, and looks up which note to play def manage_tone(midi_key): global tone if pin_logo.is_touched() and tone == False: @@ -73,6 +76,7 @@ def manage_tone(midi_key): tone = False +# Logic controller for the display def manage_display(midi_key): note = get_note(midi_key) note_letter = note[0] @@ -85,8 +89,9 @@ def log(): print(midi_key, "-", note[0], "[", note[1], "]") -manage_display(midi_key) -while loop: +# Logic for "tone mode" - Pick a note and play it +def tone_mode_controller(): + global midi_key input = (button_a.was_pressed(), button_b.was_pressed()) update = False if input == (False, False): @@ -103,4 +108,23 @@ while loop: log() manage_display(midi_key) manage_tone(midi_key) + + +# Stub logic for listen mode. See README.md for elaboration +def listen_mode_controller(): + # mic_in = pin5.get_pull() + # mic_run = pin20.get_analog_period_microseconds() + display.show(Image.CONFUSED) + + +# Main Program Logic. Run the display once before looping +manage_display(midi_key) +while loop: + if button_a.is_pressed() and button_b.is_pressed(): + tone_mode = not tone_mode + sleep(100) + if tone_mode: + tone_mode_controller() + else: + listen_mode_controller() sleep(100)