From 208b435e980be7cff54c72d93bdbb129c64ceb26 Mon Sep 17 00:00:00 2001 From: jedgarpark Date: Fri, 9 May 2025 09:56:34 -0700 Subject: [PATCH 1/3] LPM for Fruit Jam and Metro RP2350 --- Fruit_Jam/Larsio_Paint_Music/code.py | 116 ++++ Fruit_Jam/Larsio_Paint_Music/control_panel.py | 350 ++++++++++ .../Larsio_Paint_Music/cursor_manager.py | 82 +++ .../Larsio_Paint_Music/display_manager.py | 61 ++ Fruit_Jam/Larsio_Paint_Music/input_handler.py | 218 ++++++ Fruit_Jam/Larsio_Paint_Music/lpm_icon.bmp | Bin 0 -> 2166 bytes Fruit_Jam/Larsio_Paint_Music/metadata.json | 4 + Fruit_Jam/Larsio_Paint_Music/note_manager.py | 422 ++++++++++++ .../Larsio_Paint_Music/playback_controller.py | 140 ++++ .../Larsio_Paint_Music/samples/chat_01.wav | Bin 0 -> 3600 bytes .../Larsio_Paint_Music/samples/crash_01.wav | Bin 0 -> 14666 bytes .../Larsio_Paint_Music/samples/kick_01.wav | Bin 0 -> 9930 bytes .../Larsio_Paint_Music/samples/larso_A4.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_B3.wav | Bin 0 -> 10992 bytes .../Larsio_Paint_Music/samples/larso_B4.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_C4.wav | Bin 0 -> 10996 bytes .../Larsio_Paint_Music/samples/larso_C5.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_D4.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_D5.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_E4.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_E5.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_F4.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_F5.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_G4.wav | Bin 0 -> 10994 bytes .../Larsio_Paint_Music/samples/larso_G5.wav | Bin 0 -> 10994 bytes .../samples/musicnote16_A4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_B3.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_B4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_C4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_C5.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_D4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_D5.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_E4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_E5.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_F4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_F5.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_G4.wav | Bin 0 -> 11308 bytes .../samples/musicnote16_G5.wav | Bin 0 -> 11308 bytes .../Larsio_Paint_Music/samples/ohat_01.wav | Bin 0 -> 7004 bytes .../Larsio_Paint_Music/samples/snare_01.wav | Bin 0 -> 2226 bytes Fruit_Jam/Larsio_Paint_Music/sound_manager.py | 610 +++++++++++++++++ .../Larsio_Paint_Music/sprite_manager.py | 216 ++++++ Fruit_Jam/Larsio_Paint_Music/sprites/bot.bmp | Bin 0 -> 246 bytes .../Larsio_Paint_Music/sprites/clear_down.bmp | Bin 0 -> 4150 bytes .../Larsio_Paint_Music/sprites/clear_up.bmp | Bin 0 -> 4150 bytes .../Larsio_Paint_Music/sprites/drum_note.bmp | Bin 0 -> 246 bytes .../Larsio_Paint_Music/sprites/heart_note.bmp | Bin 0 -> 246 bytes .../Larsio_Paint_Music/sprites/lars_note.bmp | Bin 0 -> 348 bytes .../Larsio_Paint_Music/sprites/loop_down.bmp | Bin 0 -> 4150 bytes .../Larsio_Paint_Music/sprites/loop_up.bmp | Bin 0 -> 4150 bytes .../Larsio_Paint_Music/sprites/meatball.bmp | Bin 0 -> 246 bytes .../Larsio_Paint_Music/sprites/play_down.bmp | Bin 0 -> 4150 bytes .../Larsio_Paint_Music/sprites/play_up.bmp | Bin 0 -> 4150 bytes Fruit_Jam/Larsio_Paint_Music/sprites/star.bmp | Bin 0 -> 246 bytes .../Larsio_Paint_Music/sprites/stop_down.bmp | Bin 0 -> 4150 bytes .../Larsio_Paint_Music/sprites/stop_up.bmp | Bin 0 -> 4150 bytes Fruit_Jam/Larsio_Paint_Music/staff_view.py | 217 ++++++ Fruit_Jam/Larsio_Paint_Music/ui_manager.py | 641 ++++++++++++++++++ 58 files changed, 3077 insertions(+) create mode 100755 Fruit_Jam/Larsio_Paint_Music/code.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/control_panel.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/cursor_manager.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/display_manager.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/input_handler.py create mode 100644 Fruit_Jam/Larsio_Paint_Music/lpm_icon.bmp create mode 100644 Fruit_Jam/Larsio_Paint_Music/metadata.json create mode 100755 Fruit_Jam/Larsio_Paint_Music/note_manager.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/playback_controller.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/chat_01.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/crash_01.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/kick_01.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_A4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_B3.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_B4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_C4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_C5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_D4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_D5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_E4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_E5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_F4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_F5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_G4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/larso_G5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_A4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_B3.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_B4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_C4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_C5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_D4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_D5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_E4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_E5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_F4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_F5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_G4.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_G5.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/ohat_01.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/samples/snare_01.wav create mode 100755 Fruit_Jam/Larsio_Paint_Music/sound_manager.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprite_manager.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/bot.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/clear_down.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/clear_up.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/drum_note.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/heart_note.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/lars_note.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/loop_down.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/loop_up.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/meatball.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/play_down.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/play_up.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/star.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/stop_down.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/sprites/stop_up.bmp create mode 100755 Fruit_Jam/Larsio_Paint_Music/staff_view.py create mode 100755 Fruit_Jam/Larsio_Paint_Music/ui_manager.py diff --git a/Fruit_Jam/Larsio_Paint_Music/code.py b/Fruit_Jam/Larsio_Paint_Music/code.py new file mode 100755 index 000000000..55ea85648 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/code.py @@ -0,0 +1,116 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT +""" +Larsio Paint Music +Fruit Jam w mouse, HDMI, audio out +or Metro RP2350 with EYESPI DVI breakout and TLV320DAC3100 breakout on STEMMA_I2C, +pin D7 reset, 9/10/11 = BCLC/WSEL/DIN +""" +# pylint: disable=invalid-name,too-few-public-methods,broad-exception-caught,redefined-outer-name + +# Main application file for Larsio Paint Music + +import time +import gc +from sound_manager import SoundManager +from note_manager import NoteManager +from ui_manager import UIManager + +# Configuration +AUDIO_OUTPUT = "i2s" # Options: "pwm" or "i2s" + +class MusicStaffApp: + """Main application class that ties everything together""" + + def __init__(self, audio_output="pwm"): + # Initialize the sound manager with selected audio output + # Calculate tempo parameters + BPM = 120 # Beats per minute + SECONDS_PER_BEAT = 60 / BPM + SECONDS_PER_EIGHTH = SECONDS_PER_BEAT / 2 + + # Initialize components in a specific order + # First, force garbage collection to free memory + gc.collect() + + # Initialize the sound manager + print("Initializing sound manager...") + self.sound_manager = SoundManager( + audio_output=audio_output, + seconds_per_eighth=SECONDS_PER_EIGHTH + ) + + # Give hardware time to stabilize + time.sleep(0.5) + gc.collect() + + # Initialize the note manager + print("Initializing note manager...") + self.note_manager = NoteManager( + start_margin=25, # START_MARGIN + staff_y_start=int(240 * 0.1), # STAFF_Y_START + line_spacing=int((240 - int(240 * 0.1) - int(240 * 0.2)) * 0.95) // 8 # LINE_SPACING + ) + + gc.collect() + + # Initialize the UI manager + print("Initializing UI manager...") + self.ui_manager = UIManager(self.sound_manager, self.note_manager) + + def run(self): + """Set up and run the application""" + # Setup the display and UI + print("Setting up display...") + self.ui_manager.setup_display() + + # Give hardware time to stabilize + time.sleep(0.5) + gc.collect() + + # Try to find the mouse with multiple attempts + MAX_ATTEMPTS = 5 + RETRY_DELAY = 1 # seconds + + mouse_found = False + for attempt in range(MAX_ATTEMPTS): + print(f"Mouse detection attempt {attempt+1}/{MAX_ATTEMPTS}") + if self.ui_manager.find_mouse(): + mouse_found = True + print("Mouse found successfully!") + break + + print(f"Mouse detection attempt {attempt+1} failed, retrying...") + time.sleep(RETRY_DELAY) + + if not mouse_found: + print("WARNING: Mouse not found after multiple attempts.") + print("The application will run, but mouse control may be limited.") + + # Enter the main loop + self.ui_manager.main_loop() + + +# Create and run the application +if __name__ == "__main__": + # Start with garbage collection + gc.collect() + print("Starting Music Staff Application...") + + try: + app = MusicStaffApp(audio_output=AUDIO_OUTPUT) + app.run() + except Exception as e: + print(f"Error with I2S audio: {e}") + + # Force garbage collection + gc.collect() + time.sleep(1) + + # Fallback to PWM + try: + app = MusicStaffApp(audio_output="pwm") + app.run() + except Exception as e2: + print(f"Fatal error: {e2}") diff --git a/Fruit_Jam/Larsio_Paint_Music/control_panel.py b/Fruit_Jam/Larsio_Paint_Music/control_panel.py new file mode 100755 index 000000000..6450a85e0 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/control_panel.py @@ -0,0 +1,350 @@ +""" +# control_panel.py: CircuitPython Music Staff Application component +""" + +# pylint: disable=import-error +from displayio import Group, Bitmap, Palette, TileGrid +from adafruit_display_text.bitmap_label import Label +import terminalio + + +# pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments +# pylint: disable=too-many-branches,too-many-statements, trailing-whitespace +class ControlPanel: + """Manages transport controls and channel selectors""" + + def __init__(self, screen_width, screen_height): + self.SCREEN_WIDTH = screen_width + self.SCREEN_HEIGHT = screen_height + + # Button dimensions + self.BUTTON_WIDTH = 64 # Updated for bitmap buttons + self.BUTTON_HEIGHT = 48 # Updated for bitmap buttons + self.BUTTON_SPACING = 10 + + # Channel button dimensions + self.CHANNEL_BUTTON_SIZE = 20 + self.CHANNEL_BUTTON_SPACING = 5 + self.CHANNEL_BUTTON_Y = 5 + + # Transport area + self.TRANSPORT_AREA_Y = (int(screen_height * 0.1) + + int((screen_height - int(screen_height * 0.1) - + int(screen_height * 0.2)) * 0.95) + 10) + + # State + self.is_playing = False + self.loop_enabled = False + + # Channel colors (reduced from 8 to 6) + self.CHANNEL_COLORS = [ + 0x000000, # Channel 1: Black (default) + 0xFF0000, # Channel 2: Red + 0x00FF00, # Channel 3: Green + 0x0000FF, # Channel 4: Blue + 0xFF00FF, # Channel 5: Magenta + 0xFFAA00, # Channel 6: Orange + ] + self.current_channel = 0 + + # UI elements + self.play_button = None + self.stop_button = None + self.loop_button = None + self.clear_button = None + self.play_button_bitmap = None + self.stop_button_bitmap = None + self.loop_button_bitmap = None + self.clear_button_bitmap = None + self.channel_selector = None + + # For bitmap buttons + self.button_sprites = None + + # Center points for fallback play/loop buttons + self.play_center_x = self.BUTTON_WIDTH // 2 + self.play_center_y = self.BUTTON_HEIGHT // 2 + self.play_size = 10 + self.loop_center_x = self.BUTTON_WIDTH // 2 + self.loop_center_y = self.BUTTON_HEIGHT // 2 + self.loop_radius = 6 + + def create_channel_buttons(self): + """Create channel selector buttons at the top of the screen using sprites""" + channel_group = Group() + + # Add a highlight indicator for the selected channel (yellow outline only) + # Create bitmap for channel selector with appropriate dimensions + btn_size = self.CHANNEL_BUTTON_SIZE + channel_select_bitmap = Bitmap(btn_size + 6, btn_size + 6, 2) + channel_select_palette = Palette(2) + channel_select_palette[0] = 0x444444 # Same as background color (dark gray) + channel_select_palette[1] = 0xFFFF00 # Yellow highlight + channel_select_palette.make_transparent(0) # Make background transparent + + # Draw just the outline (no filled background) + bitmap_size = btn_size + 6 + for x in range(bitmap_size): + for y in range(bitmap_size): + # Draw only the border pixels + if (x == 0 or x == bitmap_size - 1 or + y == 0 or y == bitmap_size - 1): + channel_select_bitmap[x, y] = 1 # Yellow outline + else: + channel_select_bitmap[x, y] = 0 # Transparent background + + self.channel_selector = TileGrid( + channel_select_bitmap, + pixel_shader=channel_select_palette, + x=7, + y=self.CHANNEL_BUTTON_Y - 3 + ) + channel_group.append(self.channel_selector) + + return channel_group, self.channel_selector + + def create_transport_controls(self, sprite_manager): + """Create transport controls using bitmap buttons""" + transport_group = Group() + + # Check if button sprites were successfully loaded + if (sprite_manager.play_up is None or sprite_manager.stop_up is None or + sprite_manager.loop_up is None or sprite_manager.clear_up is None): + print("Warning: Button sprites not loaded, using fallback buttons") + return self._create_fallback_transport_controls() + + # Button spacing based on the new size (64x48) + button_spacing = 10 + button_y = self.SCREEN_HEIGHT - 50 # Allow some margin at bottom + + # Create TileGrids for each button using the "up" state initially + self.stop_button = TileGrid( + sprite_manager.stop_up, + pixel_shader=sprite_manager.stop_up_palette, + x=10, + y=button_y + ) + + self.play_button = TileGrid( + sprite_manager.play_up, + pixel_shader=sprite_manager.play_up_palette, + x=10 + 64 + button_spacing, + y=button_y + ) + + self.loop_button = TileGrid( + sprite_manager.loop_up, + pixel_shader=sprite_manager.loop_up_palette, + x=10 + 2 * (64 + button_spacing), + y=button_y + ) + + self.clear_button = TileGrid( + sprite_manager.clear_up, + pixel_shader=sprite_manager.clear_up_palette, + x=10 + 3 * (64 + button_spacing), + y=button_y + ) + + # Store references to the button bitmaps and palettes + self.button_sprites = { + 'play': { + 'up': (sprite_manager.play_up, sprite_manager.play_up_palette), + 'down': (sprite_manager.play_down, sprite_manager.play_down_palette) + }, + 'stop': { + 'up': (sprite_manager.stop_up, sprite_manager.stop_up_palette), + 'down': (sprite_manager.stop_down, sprite_manager.stop_down_palette) + }, + 'loop': { + 'up': (sprite_manager.loop_up, sprite_manager.loop_up_palette), + 'down': (sprite_manager.loop_down, sprite_manager.loop_down_palette) + }, + 'clear': { + 'up': (sprite_manager.clear_up, sprite_manager.clear_up_palette), + 'down': (sprite_manager.clear_down, sprite_manager.clear_down_palette) + } + } + + # Save the button dimensions + self.BUTTON_WIDTH = 64 + self.BUTTON_HEIGHT = 48 + + # Add buttons to the group + transport_group.append(self.stop_button) + transport_group.append(self.play_button) + transport_group.append(self.loop_button) + transport_group.append(self.clear_button) + + return (transport_group, self.play_button, self.stop_button, + self.loop_button, self.clear_button) + + # pylint: disable=too-many-locals + def _create_fallback_transport_controls(self): + """Create fallback transport controls using drawn buttons (original implementation)""" + transport_group = Group() + + # Create button bitmaps + self.play_button_bitmap = Bitmap(self.BUTTON_WIDTH, self.BUTTON_HEIGHT, 3) + self.stop_button_bitmap = Bitmap(self.BUTTON_WIDTH, self.BUTTON_HEIGHT, 3) + self.loop_button_bitmap = Bitmap(self.BUTTON_WIDTH, self.BUTTON_HEIGHT, 3) + self.clear_button_bitmap = Bitmap(self.BUTTON_WIDTH, self.BUTTON_HEIGHT, 3) + + # Button palettes with custom colors + play_button_palette = Palette(3) + play_button_palette[0] = 0x444444 # Dark gray background + play_button_palette[1] = 0x000000 # Black text/border + play_button_palette[2] = 0xFFD700 # Golden yellow for active state + + stop_button_palette = Palette(3) + stop_button_palette[0] = 0x444444 # Dark gray background + stop_button_palette[1] = 0x000000 # Black text/border + stop_button_palette[2] = 0xFF00FF # Magenta for active state + + loop_button_palette = Palette(3) + loop_button_palette[0] = 0x444444 # Dark gray background + loop_button_palette[1] = 0x000000 # Black text/border + loop_button_palette[2] = 0xFFD700 # Golden yellow for active state + + clear_button_palette = Palette(3) + clear_button_palette[0] = 0x444444 # Dark gray background + clear_button_palette[1] = 0x000000 # Black text/border + clear_button_palette[2] = 0xFF0000 # Red for pressed state + + # Create Stop button + for x in range(self.BUTTON_WIDTH): + for y in range(self.BUTTON_HEIGHT): + # Draw border + if (x == 0 or x == self.BUTTON_WIDTH - 1 or + y == 0 or y == self.BUTTON_HEIGHT - 1): + self.stop_button_bitmap[x, y] = 1 + # Fill with magenta (active state) + else: + self.stop_button_bitmap[x, y] = 2 + + # Create Play button + for x in range(self.BUTTON_WIDTH): + for y in range(self.BUTTON_HEIGHT): + # Draw border + if (x == 0 or x == self.BUTTON_WIDTH - 1 or + y == 0 or y == self.BUTTON_HEIGHT - 1): + self.play_button_bitmap[x, y] = 1 + # Fill with gray (inactive state) + else: + self.play_button_bitmap[x, y] = 0 + + # Draw play symbol (triangle) + for y in range( + self.play_center_y - self.play_size//2, + self.play_center_y + self.play_size//2 + ): + width = (y - (self.play_center_y - self.play_size//2)) // 2 + for x in range( + self.play_center_x - self.play_size//4, + self.play_center_x - self.play_size//4 + width + ): + if 0 <= x < self.BUTTON_WIDTH and 0 <= y < self.BUTTON_HEIGHT: + self.play_button_bitmap[x, y] = 1 + + # Create Loop button + for x in range(self.BUTTON_WIDTH): + for y in range(self.BUTTON_HEIGHT): + # Draw border + if (x == 0 or x == self.BUTTON_WIDTH - 1 or + y == 0 or y == self.BUTTON_HEIGHT - 1): + self.loop_button_bitmap[x, y] = 1 + # Fill with gray (inactive state) + else: + self.loop_button_bitmap[x, y] = 0 + + # Draw loop symbol (circle with arrow) + for x in range(self.BUTTON_WIDTH): + for y in range(self.BUTTON_HEIGHT): + dx = x - self.loop_center_x + dy = y - self.loop_center_y + # Draw circle outline + if self.loop_radius - 1 <= (dx*dx + dy*dy)**0.5 <= self.loop_radius + 1: + if 0 <= x < self.BUTTON_WIDTH and 0 <= y < self.BUTTON_HEIGHT: + self.loop_button_bitmap[x, y] = 1 + + # Add arrow to loop symbol + for i in range(4): + x = self.loop_center_x + int(self.loop_radius * 0.7) - i + y = self.loop_center_y - self.loop_radius - 1 + i + if 0 <= x < self.BUTTON_WIDTH and 0 <= y < self.BUTTON_HEIGHT: + self.loop_button_bitmap[x, y] = 1 + + x = self.loop_center_x + int(self.loop_radius * 0.7) - i + y = self.loop_center_y - self.loop_radius - 1 - i + 2 + if 0 <= x < self.BUTTON_WIDTH and 0 <= y < self.BUTTON_HEIGHT: + self.loop_button_bitmap[x, y] = 1 + + # Create Clear button + for x in range(self.BUTTON_WIDTH): + for y in range(self.BUTTON_HEIGHT): + # Draw border + if (x == 0 or x == self.BUTTON_WIDTH - 1 or + y == 0 or y == self.BUTTON_HEIGHT - 1): + self.clear_button_bitmap[x, y] = 1 + # Fill with gray background + else: + self.clear_button_bitmap[x, y] = 0 + + # Create button TileGrids + x_offset = 10 + y_pos = self.SCREEN_HEIGHT - 40 + + self.stop_button = TileGrid( + self.stop_button_bitmap, + pixel_shader=stop_button_palette, + x=x_offset, + y=y_pos + ) + + x_offset += self.BUTTON_WIDTH + self.BUTTON_SPACING + self.play_button = TileGrid( + self.play_button_bitmap, + pixel_shader=play_button_palette, + x=x_offset, + y=y_pos + ) + + x_offset += self.BUTTON_WIDTH + self.BUTTON_SPACING + self.loop_button = TileGrid( + self.loop_button_bitmap, + pixel_shader=loop_button_palette, + x=x_offset, + y=y_pos + ) + + x_offset += self.BUTTON_WIDTH + self.BUTTON_SPACING + self.clear_button = TileGrid( + self.clear_button_bitmap, + pixel_shader=clear_button_palette, + x=x_offset, + y=y_pos + ) + + # Add buttons to group + transport_group.append(self.stop_button) + transport_group.append(self.play_button) + transport_group.append(self.loop_button) + transport_group.append(self.clear_button) + + # Add "CLEAR" text to clear button + text_color = 0x000000 # Black text + label_x = self.clear_button.x + self.BUTTON_WIDTH // 2 + label_y = self.clear_button.y + self.BUTTON_HEIGHT // 2 + + clear_label = Label( + terminalio.FONT, + text="CLEAR", + color=text_color, + scale=1 + ) + clear_label.anchor_point = (0.5, 0.5) # Center the text + clear_label.anchored_position = (label_x, label_y) + transport_group.append(clear_label) + + return (transport_group, self.play_button, self.stop_button, + self.loop_button, self.clear_button) diff --git a/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py b/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py new file mode 100755 index 000000000..4ab90c833 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py @@ -0,0 +1,82 @@ +""" +# cursor_manager.py: CircuitPython Music Staff Application component +""" + +# pylint: disable=import-error +from displayio import Bitmap, Palette, TileGrid + + +# pylint: disable=invalid-name,no-member,too-many-instance-attributes +# pylint: disable=too-many-arguments,too-many-branches,too-many-statements +class CursorManager: + """Manages cursor appearance and position""" + + def __init__(self, bg_color=0x8AAD8A): + self.bg_color = bg_color + + # Cursors + self.crosshair_cursor = None + self.triangle_cursor = None + self.current_cursor = None + + self.create_cursors() + + def create_cursors(self): + """Create custom cursor bitmaps for different areas""" + # Regular crosshair cursor for staff area + crosshair_cursor_bitmap = Bitmap(8, 8, 2) + crosshair_cursor_palette = Palette(2) + crosshair_cursor_palette[0] = self.bg_color # Background color (sage green) + crosshair_cursor_palette[1] = 0x000000 # Cursor color (black) + crosshair_cursor_palette.make_transparent(0) # Make background transparent + + for i in range(8): + crosshair_cursor_bitmap[i, 3] = 1 + crosshair_cursor_bitmap[i, 4] = 1 + crosshair_cursor_bitmap[3, i] = 1 + crosshair_cursor_bitmap[4, i] = 1 + + # Triangle cursor for controls area + triangle_cursor_bitmap = Bitmap(12, 12, 2) + triangle_cursor_palette = Palette(2) + triangle_cursor_palette[0] = 0x000000 # Background color + triangle_cursor_palette[1] = 0x000000 # Cursor color (black) + triangle_cursor_palette.make_transparent(0) # Make background transparent + + # Draw a triangle cursor + for y in range(12): + width = y // 2 + 1 # Triangle gets wider as y increases + for x in range(width): + triangle_cursor_bitmap[x, y] = 1 + + # Create a TileGrid for each cursor type + self.crosshair_cursor = TileGrid( + crosshair_cursor_bitmap, + pixel_shader=crosshair_cursor_palette + ) + self.triangle_cursor = TileGrid( + triangle_cursor_bitmap, + pixel_shader=triangle_cursor_palette + ) + + # Initially use crosshair cursor + self.current_cursor = self.crosshair_cursor + self.triangle_cursor.hidden = True + + return self.crosshair_cursor, self.triangle_cursor + + def set_cursor_position(self, x, y): + """Set the position of the current cursor""" + self.current_cursor.x = x + self.current_cursor.y = y + + def switch_cursor(self, use_triangle=False): + """Switch between crosshair and triangle cursor""" + if use_triangle and self.current_cursor != self.triangle_cursor: + self.crosshair_cursor.hidden = True + self.triangle_cursor.hidden = False + self.current_cursor = self.triangle_cursor + elif not use_triangle and self.current_cursor != self.crosshair_cursor: + self.triangle_cursor.hidden = True + self.crosshair_cursor.hidden = False + self.current_cursor = self.crosshair_cursor diff --git a/Fruit_Jam/Larsio_Paint_Music/display_manager.py b/Fruit_Jam/Larsio_Paint_Music/display_manager.py new file mode 100755 index 000000000..72aac9f60 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/display_manager.py @@ -0,0 +1,61 @@ +""" +# display_manager.py: CircuitPython Music Staff Application component +""" +# pylint: disable=import-error,invalid-name,no-member,too-many-instance-attributes,too-many-arguments,too-many-branches,too-many-statements + +import displayio +import picodvi +import framebufferio +import board + + + +class DisplayManager: + """Manages the display initialization and basic display operations""" + + + def __init__(self, width=320, height=240): + self.SCREEN_WIDTH = width + self.SCREEN_HEIGHT = height + self.display = None + self.main_group = None + + def initialize_display(self): + """Initialize the DVI display""" + # Release any existing displays + displayio.release_displays() + + # Initialize the DVI framebuffer + fb = picodvi.Framebuffer(self.SCREEN_WIDTH, self.SCREEN_HEIGHT, + clk_dp=board.CKP, clk_dn=board.CKN, + red_dp=board.D0P, red_dn=board.D0N, + green_dp=board.D1P, green_dn=board.D1N, + blue_dp=board.D2P, blue_dn=board.D2N, + color_depth=16) + + # Create the display + self.display = framebufferio.FramebufferDisplay(fb) + + # Create main group + self.main_group = displayio.Group() + + # Set the display's root group + self.display.root_group = self.main_group + + return self.main_group, self.display + + def create_background(self, color=0x888888): + """Create a background with the given color""" + bg_bitmap = displayio.Bitmap(self.SCREEN_WIDTH, self.SCREEN_HEIGHT, 1) + bg_palette = displayio.Palette(1) + bg_palette[0] = color + + # Fill the bitmap with the background color + for x in range(self.SCREEN_WIDTH): + for y in range(self.SCREEN_HEIGHT): + bg_bitmap[x, y] = 0 + + # Create a TileGrid with the background bitmap + bg_grid = displayio.TileGrid(bg_bitmap, pixel_shader=bg_palette, x=0, y=0) + + return bg_grid diff --git a/Fruit_Jam/Larsio_Paint_Music/input_handler.py b/Fruit_Jam/Larsio_Paint_Music/input_handler.py new file mode 100755 index 000000000..1f8d285b1 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/input_handler.py @@ -0,0 +1,218 @@ +""" +# input_handler.py: CircuitPython Music Staff Application component +""" + +import array +import time +import gc + +# pylint: disable=import-error +import usb.core + + +# pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments +# pylint: disable=too-many-branches,too-many-statements,broad-exception-caught +# pylint: disable=too-many-nested-blocks,too-many-locals,too-many-positional-arguments +class InputHandler: + """Handles user input through mouse and interactions with UI elements""" + + def __init__(self, screen_width, screen_height, staff_y_start, staff_height): + self.SCREEN_WIDTH = screen_width + self.SCREEN_HEIGHT = screen_height + self.STAFF_Y_START = staff_y_start + self.STAFF_HEIGHT = staff_height + + # Mouse state + self.last_left_button_state = 0 + self.last_right_button_state = 0 + self.left_button_pressed = False + self.right_button_pressed = False + self.mouse = None + self.buf = None + self.in_endpoint = None + + # Mouse position + self.mouse_x = screen_width // 2 + self.mouse_y = screen_height // 2 + + def find_mouse(self): + """Find the mouse device with multiple retry attempts""" + MAX_ATTEMPTS = 5 + RETRY_DELAY = 1 # seconds + + for attempt in range(MAX_ATTEMPTS): + try: + print(f"Mouse detection attempt {attempt+1}/{MAX_ATTEMPTS}") + + # Constants for USB control transfers + DIR_OUT = 0 + # DIR_IN = 0x80 # Unused variable + REQTYPE_CLASS = 1 << 5 + REQREC_INTERFACE = 1 << 0 + HID_REQ_SET_PROTOCOL = 0x0B + + # Find all USB devices + devices_found = False + for device in usb.core.find(find_all=True): + devices_found = True + print(f"Found device: {device.idVendor:04x}:{device.idProduct:04x}") + + try: + # Try to get device info + try: + manufacturer = device.manufacturer + product = device.product + except Exception: # Specify exception type + manufacturer = "Unknown" + product = "Unknown" + + # Just use whatever device we find + self.mouse = device + + # Try to detach kernel driver + try: + has_kernel_driver = hasattr(device, 'is_kernel_driver_active') + if has_kernel_driver and device.is_kernel_driver_active(0): + device.detach_kernel_driver(0) + except Exception as e: + print(f"Error detaching kernel driver: {e}") + + # Set configuration + try: + device.set_configuration() + except Exception as e: + print(f"Error setting configuration: {e}") + continue # Try next device + + # Just assume endpoint 0x81 (common for mice) + self.in_endpoint = 0x81 + print(f"Using mouse: {manufacturer}, {product}") + + # Set to report protocol mode + try: + bmRequestType = DIR_OUT | REQTYPE_CLASS | REQREC_INTERFACE + bRequest = HID_REQ_SET_PROTOCOL + wValue = 1 # 1 = report protocol + wIndex = 0 # First interface + + buf = bytearray(1) + device.ctrl_transfer(bmRequestType, bRequest, wValue, wIndex, buf) + print("Set to report protocol mode") + except Exception as e: + print(f"Could not set protocol: {e}") + + # Buffer for reading data + self.buf = array.array("B", [0] * 4) + print("Created 4-byte buffer for mouse data") + + # Verify mouse works by reading from it + try: + # Try to read some data with a short timeout + data = device.read(self.in_endpoint, self.buf, timeout=100) + print(f"Mouse test read successful: {data} bytes") + return True + except usb.core.USBTimeoutError: + # Timeout is normal if mouse isn't moving + print("Mouse connected but not sending data (normal)") + return True + except Exception as e: + print(f"Mouse test read failed: {e}") + # Continue to try next device or retry + self.mouse = None + self.in_endpoint = None + continue + + except Exception as e: + print(f"Error initializing device: {e}") + continue + + if not devices_found: + print("No USB devices found") + + # If we get here without returning, no suitable mouse was found + print(f"No working mouse found on attempt {attempt+1}, retrying...") + gc.collect() + time.sleep(RETRY_DELAY) + + except Exception as e: + print(f"Error during mouse detection: {e}") + gc.collect() + time.sleep(RETRY_DELAY) + + print("Failed to find a working mouse after multiple attempts") + return False + + def process_mouse_input(self): + """Process mouse input - simplified version without wheel support""" + try: + # Attempt to read data from the mouse (10ms timeout) + count = self.mouse.read(self.in_endpoint, self.buf, timeout=10) + + if count >= 3: # We need at least buttons, X and Y + # Extract mouse button states + buttons = self.buf[0] + x = self.buf[1] + y = self.buf[2] + + # Convert to signed values if needed + if x > 127: + x = x - 256 + if y > 127: + y = y - 256 + + # Extract button states + current_left_button_state = buttons & 0x01 + current_right_button_state = (buttons & 0x02) >> 1 + + # Detect button presses + if current_left_button_state == 1 and self.last_left_button_state == 0: + self.left_button_pressed = True + else: + self.left_button_pressed = False + + if current_right_button_state == 1 and self.last_right_button_state == 0: + self.right_button_pressed = True + else: + self.right_button_pressed = False + + # Update button states + self.last_left_button_state = current_left_button_state + self.last_right_button_state = current_right_button_state + + # Update position + self.mouse_x += x + self.mouse_y += y + + # Ensure position stays within bounds + self.mouse_x = max(0, min(self.SCREEN_WIDTH - 1, self.mouse_x)) + self.mouse_y = max(0, min(self.SCREEN_HEIGHT - 1, self.mouse_y)) + + return True + + return False + + except usb.core.USBError as e: + # Handle timeouts silently + if e.errno == 110: # Operation timed out + return False + + # Handle disconnections + if e.errno == 19: # No such device + print("Mouse disconnected") + self.mouse = None + self.in_endpoint = None + gc.collect() + + return False + except Exception as e: + print(f"Error reading mouse: {type(e).__name__}") + return False + + def point_in_rect(self, x, y, rect_x, rect_y, rect_width, rect_height): + """Check if a point is inside a rectangle""" + return (rect_x <= x < rect_x + rect_width and + rect_y <= y < rect_y + rect_height) + + def is_over_staff(self, y): + """Check if mouse is over the staff area""" + return self.STAFF_Y_START <= y <= self.STAFF_Y_START + self.STAFF_HEIGHT diff --git a/Fruit_Jam/Larsio_Paint_Music/lpm_icon.bmp b/Fruit_Jam/Larsio_Paint_Music/lpm_icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..864c33fa0eb4d0caf47b57c1e47d7ef0e43e68f5 GIT binary patch literal 2166 zcmbu8Jx;_h5QT$8fkcBXae%diL?5bDh`6Dk04Z15f}3zT&aoZLo0o}y)|<_0CvsxX zmzg)?IBy^OyH0H{_h%We^SJ45WhN%v-*Y_362oj5hOYbj?S8)ByTjpN?z2y)<^wP1 zeAoq9?C7^UT)3PIiBJ8tImMo|chi@}7yZ^h_a@`mfBgb{?*w1;EhGCgHJl*E+x_zXxAnIzKkBm1 zHA40`&ktNySk~X-tMU4Wu{PCaf~5wWep4`%Yi#4JppjqI^BlHIc+zk8oN#VrTYSC? I8oy}&11pY#asU7T literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/metadata.json b/Fruit_Jam/Larsio_Paint_Music/metadata.json new file mode 100644 index 000000000..338fedaba --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/metadata.json @@ -0,0 +1,4 @@ +{ + "title": "LarsioPant", + "icon": "lpm_icon.bmp" +} diff --git a/Fruit_Jam/Larsio_Paint_Music/note_manager.py b/Fruit_Jam/Larsio_Paint_Music/note_manager.py new file mode 100755 index 000000000..9be46edfd --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/note_manager.py @@ -0,0 +1,422 @@ +""" +# note_manager.py: CircuitPython Music Staff Application component +""" + +# pylint: disable=import-error +from displayio import Group, Bitmap, Palette, TileGrid + + +# pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments +# pylint: disable=too-many-branches,too-many-statements,protected-access,too-many-locals +# pylint: disable=too-many-positional-arguments, trailing-whitespace +class NoteManager: + """Manages notes, their positions, and related data""" + + def __init__(self, start_margin, staff_y_start, line_spacing): + self.note_data = [] # List of (x_position, y_position, midi_note, midi_channel) + self.notes_group = Group() + self.ledger_lines_group = Group() + self.note_to_ledger = {} # Mapping from note indices to ledger line indices + + # Key staff parameters + self.START_MARGIN = start_margin + self.STAFF_Y_START = staff_y_start + self.LINE_SPACING = line_spacing + + # Note positions and their MIDI values + self.note_positions = self._create_note_positions() + self.x_positions = [] # Will be populated by the UI manager + + # Create note bitmaps + self.NOTE_WIDTH = (line_spacing // 2) - 2 + self.NOTE_HEIGHT = (line_spacing // 2) - 2 + self.note_bitmap = self._create_note_bitmap() + + # Create ledger line bitmap + self.ledger_line_width = 14 + self.ledger_line_height = 2 + self.ledger_bitmap = Bitmap(self.ledger_line_width, self.ledger_line_height, 2) + for x in range(self.ledger_line_width): + for y in range(self.ledger_line_height): + self.ledger_bitmap[x, y] = 1 + + self.ledger_palette = Palette(2) + self.ledger_palette[0] = 0x8AAD8A # Transparent (sage green background) + self.ledger_palette[1] = 0x000000 # Black for ledger lines + + # MIDI note mapping for each position + self.midi_notes = { + 0: 59, # B3 + 1: 60, # C4 (middle C) + 2: 62, # D4 + 3: 64, # E4 + 4: 65, # F4 + 5: 67, # G4 + 6: 69, # A4 + 7: 71, # B4 + 8: 72, # C5 + 9: 74, # D5 + 10: 76, # E5 + 11: 77, # F5 + 12: 79 # G5 + } + + # Map of positions to note names (for treble clef) + self.note_names = { + 0: "B3", # B below middle C (ledger line) + 1: "C4", # Middle C (ledger line below staff) + 2: "D4", # Space below staff + 3: "E4", # Bottom line + 4: "F4", # First space + 5: "G4", # Second line + 6: "A4", # Second space + 7: "B4", # Middle line + 8: "C5", # Third space + 9: "D5", # Fourth line + 10: "E5", # Fourth space + 11: "F5", # Top line + 12: "G5" # Space above staff + } + + def _create_note_positions(self): + """Create the vertical positions for notes on the staff""" + note_positions = [] + + # Calculate positions from the bottom up + bottom_line_y = self.STAFF_Y_START + 5 * self.LINE_SPACING # Bottom staff line (E) + + # B3 (ledger line below staff) + note_positions.append(bottom_line_y + self.LINE_SPACING + self.LINE_SPACING // 2) + + # Middle C4 (ledger line below staff) + note_positions.append(bottom_line_y + self.LINE_SPACING) + + # D4 (space below staff) + note_positions.append(bottom_line_y + self.LINE_SPACING // 2) + + # E4 (bottom line) + note_positions.append(bottom_line_y) + + # F4 (first space) + note_positions.append(bottom_line_y - self.LINE_SPACING // 2) + + # G4 (second line) + note_positions.append(bottom_line_y - self.LINE_SPACING) + + # A4 (second space) + note_positions.append(bottom_line_y - self.LINE_SPACING - self.LINE_SPACING // 2) + + # B4 (middle line) + note_positions.append(bottom_line_y - 2 * self.LINE_SPACING) + + # C5 (third space) + note_positions.append(bottom_line_y - 2 * self.LINE_SPACING - self.LINE_SPACING // 2) + + # D5 (fourth line) + note_positions.append(bottom_line_y - 3 * self.LINE_SPACING) + + # E5 (fourth space) + note_positions.append(bottom_line_y - 3 * self.LINE_SPACING - self.LINE_SPACING // 2) + + # F5 (top line) + note_positions.append(bottom_line_y - 4 * self.LINE_SPACING) + + # G5 (space above staff) + note_positions.append(bottom_line_y - 4 * self.LINE_SPACING - self.LINE_SPACING // 2) + + return note_positions + + def _create_note_bitmap(self): + """Create a bitmap for a quarter note (circular shape)""" + note_bitmap = Bitmap(self.NOTE_WIDTH, self.NOTE_HEIGHT, 2) + + # Draw a circular shape for the note head + cx = self.NOTE_WIDTH // 2 + cy = self.NOTE_HEIGHT // 2 + radius = self.NOTE_WIDTH // 2 + + for y in range(self.NOTE_HEIGHT): + for x in range(self.NOTE_WIDTH): + # Use the circle equation (x-cx)² + (y-cy)² ≤ r² to determine if pixel is in circle + if ((x - cx) ** 2 + (y - cy) ** 2) <= (radius ** 2): + note_bitmap[x, y] = 1 + + return note_bitmap + + def find_closest_position(self, y): + """Find the closest valid note position to a given y-coordinate""" + closest_pos = 0 + min_distance = abs(y - self.note_positions[0]) + + for i, pos in enumerate(self.note_positions): + distance = abs(y - pos) + if distance < min_distance: + min_distance = distance + closest_pos = i + + return closest_pos + + def find_closest_x_position(self, x): + """Find the closest valid horizontal position""" + # Only allow positions after the double bar at beginning + if x < self.START_MARGIN: + return self.x_positions[0] # Return first valid position + + closest_x = self.x_positions[0] + min_distance = abs(x - closest_x) + + for pos in self.x_positions: + distance = abs(x - pos) + if distance < min_distance: + min_distance = distance + closest_x = pos + + return closest_x + + def note_exists_at_position(self, x_pos, y_pos, mario_head, mario_palette): + """Check if a note exists at the exact position (for adding new notes)""" + # Only check for exact overlap, not proximity + for note_tg in self.notes_group: + # Check if this is a Mario head note or a regular note + is_mario = (hasattr(note_tg.pixel_shader, "_palette") and + len(note_tg.pixel_shader._palette) > 1 and + note_tg.pixel_shader._palette[0] == mario_palette[0]) + + if is_mario: + note_width = mario_head.width + note_height = mario_head.height + else: + note_width = self.NOTE_WIDTH + note_height = self.NOTE_HEIGHT + + note_x = note_tg.x + note_width // 2 + note_y = note_tg.y + note_height // 2 + + # Only prevent notes from being in the exact same position (with a tiny tolerance) + if abs(note_x - x_pos) < 2 and abs(note_y - y_pos) < 2: + return True + return False + + def find_note_at(self, x, y, mario_head, mario_palette): + """Check if a note already exists at a position and return its index""" + for i, note_tg in enumerate(self.notes_group): + # Check if this is a Mario head note or a regular note + is_mario = (hasattr(note_tg.pixel_shader, "_palette") and + len(note_tg.pixel_shader._palette) > 1 and + note_tg.pixel_shader._palette[0] == mario_palette[0]) + + if is_mario: + note_width = mario_head.width + note_height = mario_head.height + else: + note_width = self.NOTE_WIDTH + note_height = self.NOTE_HEIGHT + + # Check if the note's center is within a reasonable distance of the cursor + note_center_x = note_tg.x + note_width // 2 + note_center_y = note_tg.y + note_height // 2 + + # Use a slightly larger hit box for easier clicking + hit_box_width = max(self.NOTE_WIDTH, note_width) + hit_box_height = max(self.NOTE_HEIGHT, note_height) + + if (abs(x-note_center_x) < hit_box_width) and (abs(y - note_center_y) < hit_box_height): + return i + return None + + def add_note( + self, + x, + y, + current_channel, + note_palettes, + mario_head, + mario_palette, + heart_note, + heart_palette, + sound_manager + ): + """Add a note at the specified position""" + # Enforce the minimum x position (after the double bar at beginning) + if x < self.START_MARGIN: + return (False, "Notes must be after the double bar") + + # Find the closest valid position + position_index = self.find_closest_position(y) + y_position = self.note_positions[position_index] + + # Find the closest valid horizontal position + x_position = self.find_closest_x_position(x) + + # Check if a note already exists at this exact position + if self.note_exists_at_position(x_position, y_position, mario_head, mario_palette): + return (False, "Note already exists here") + + # Get the corresponding MIDI note number + midi_note = self.midi_notes[position_index] + + # Create a TileGrid for the note based on channel + if current_channel == 0: # Channel 1 (index 0) uses Mario head + note_tg = TileGrid(mario_head, pixel_shader=mario_palette) + # Adjust position offset based on the size of mario_head bitmap + note_width = mario_head.width + note_height = mario_head.height + note_tg.x = x_position - note_width // 2 + note_tg.y = y_position - note_height // 2 + elif current_channel == 1: # Channel 2 uses Heart note + note_tg = TileGrid(heart_note, pixel_shader=heart_palette) + # Adjust position offset based on the size of heart_note bitmap + note_width = heart_note.width + note_height = heart_note.height + note_tg.x = x_position - note_width // 2 + note_tg.y = y_position - note_height // 2 + elif current_channel == 2: # Channel 3 uses Drum note + note_tg = TileGrid(mario_head, pixel_shader=mario_palette) + # Adjust position offset based on the size + note_width = mario_head.width + note_height = mario_head.height + note_tg.x = x_position - note_width // 2 + note_tg.y = y_position - note_height // 2 + elif current_channel in (3, 4, 5): # Channels 4-6 use custom sprites + # We'll pass appropriate sprites in ui_manager + note_tg = TileGrid(mario_head, pixel_shader=mario_palette) + note_width = mario_head.width + note_height = mario_head.height + note_tg.x = x_position - note_width // 2 + note_tg.y = y_position - note_height // 2 + else: # Other channels use the colored circle + note_tg = TileGrid(self.note_bitmap, pixel_shader=note_palettes[current_channel]) + note_tg.x = x_position - self.NOTE_WIDTH // 2 + note_tg.y = y_position - self.NOTE_HEIGHT // 2 + + # Play the appropriate sound + sound_manager.play_note(midi_note, current_channel) + + # Add the note to the notes group + note_index = len(self.notes_group) + self.notes_group.append(note_tg) + + # Store the note data for playback with channel information + self.note_data.append((x_position, y_position, midi_note, current_channel)) + + # Add a ledger line if it's the B3 or C4 below staff + if position_index <= 1: # B3 or C4 + ledger_tg = TileGrid(self.ledger_bitmap, pixel_shader=self.ledger_palette) + ledger_tg.x = x_position - self.ledger_line_width // 2 + ledger_tg.y = y_position + ledger_index = len(self.ledger_lines_group) + self.ledger_lines_group.append(ledger_tg) + + # Track association between note and its ledger line + self.note_to_ledger[note_index] = ledger_index + + note_name = self.note_names[position_index] + return (True, f"Added: Ch{current_channel+1} {note_name}") + + def erase_note(self, x, y, mario_head, mario_palette, sound_manager=None): + """Erase a note at the clicked position""" + # Try to find a note at the click position + note_index = self.find_note_at(x, y, mario_head, mario_palette) + + if note_index is not None: + # Get the position of the note + note_tg = self.notes_group[note_index] + + # Check if this is a Mario head note or a regular note + is_mario = (hasattr(note_tg.pixel_shader, "_palette") and + len(note_tg.pixel_shader._palette) > 1 and + note_tg.pixel_shader._palette[0] == mario_palette[0]) + + if is_mario: + note_width = mario_head.width + note_height = mario_head.height + else: + note_width = self.NOTE_WIDTH + note_height = self.NOTE_HEIGHT + + note_x = note_tg.x + note_width // 2 + note_y = note_tg.y + note_height // 2 + + # Find the corresponding note data + found_data_index = None + # found_channel = None # Unused variable + + for i, (x_pos, y_pos, _midi_note, _channel) in enumerate(self.note_data): + # Increased tolerance for position matching + if abs(x_pos - note_x) < 5 and abs(y_pos - note_y) < 5: + found_data_index = i + break + + # If we found the note data and have a sound manager reference + if found_data_index is not None and sound_manager is not None: + # Extract note data + x_pos, y_pos, _midi_note, channel = self.note_data[found_data_index] + + # If this is a sample-based note (channels 0, 1, or 2), stop it + if channel in [0, 1, 2]: + sound_manager.stop_sample_at_position(x_pos, y_pos, channel) + + # Remove the note data + self.note_data.pop(found_data_index) + print(f"Erased note at position ({x_pos}, {y_pos}) ch {channel+1}") + else: + # Still remove the note data if found (for backward compatibility) + if found_data_index is not None: + self.note_data.pop(found_data_index) + + # Check if this note has an associated ledger line + if note_index in self.note_to_ledger: + ledger_index = self.note_to_ledger[note_index] + + # Remove the ledger line + self.ledger_lines_group.pop(ledger_index) + + # Update ledger line mappings after removing a ledger line + new_note_to_ledger = {} + + # Process each mapping + for n_idx, l_idx in self.note_to_ledger.items(): + # Skip the note we're removing + if n_idx != note_index: + # Adjust indices for ledger lines after the removed one + if l_idx > ledger_index: + new_note_to_ledger[n_idx] = l_idx - 1 + else: + new_note_to_ledger[n_idx] = l_idx + + self.note_to_ledger = new_note_to_ledger + + # Remove the note + self.notes_group.pop(note_index) + + # Update mappings for notes with higher indices + new_note_to_ledger = {} + for n_idx, l_idx in self.note_to_ledger.items(): + if n_idx > note_index: + new_note_to_ledger[n_idx - 1] = l_idx + else: + new_note_to_ledger[n_idx] = l_idx + + self.note_to_ledger = new_note_to_ledger + + return (True, "Note erased") + + return (False, "No note found at this position") + + def clear_all_notes(self, sound_manager=None): + """Clear all notes from the staff""" + # Stop all sample playback if we have a sound manager + if sound_manager is not None: + sound_manager.stop_all_notes() + + # Remove all notes + while len(self.notes_group) > 0: + self.notes_group.pop() + + # Remove all ledger lines + while len(self.ledger_lines_group) > 0: + self.ledger_lines_group.pop() + + # Clear note data and ledger line mappings + self.note_data = [] + self.note_to_ledger = {} diff --git a/Fruit_Jam/Larsio_Paint_Music/playback_controller.py b/Fruit_Jam/Larsio_Paint_Music/playback_controller.py new file mode 100755 index 000000000..ae45a6c31 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/playback_controller.py @@ -0,0 +1,140 @@ +""" +Playback controller for CircuitPython Music Staff Application. +Manages the playback state, button displays, and sound triggering. +""" + +import time + +# pylint: disable=trailing-whitespace, too-many-instance-attributes +class PlaybackController: + """Manages playback state and controls""" + + def __init__(self, sound_manager, note_manager, seconds_per_eighth=0.25): + """Initialize the playback controller with sound and note managers""" + self.sound_manager = sound_manager + self.note_manager = note_manager + self.seconds_per_eighth = seconds_per_eighth + + # Playback state + self.is_playing = False + self.playhead_position = -1 + self.last_playhead_time = 0 + self.loop_enabled = False + + # UI elements (to be set externally) + self.playhead = None + self.play_button = None + self.play_button_bitmap = None + self.stop_button = None + self.stop_button_bitmap = None + + # Button sprites (will be set in set_ui_elements) + self.button_sprites = None + + def set_ui_elements(self, playhead, play_button, stop_button, button_sprites=None): + """Set references to UI elements needed for playback control""" + self.playhead = playhead + self.play_button = play_button + self.stop_button = stop_button + self.button_sprites = button_sprites + + def start_playback(self, start_margin=25): + """Start playback""" + self.is_playing = True + self.playhead_position = -1 # Start at -1 so first note plays immediately + self.last_playhead_time = time.monotonic() + + # Set playhead position to just before the first note + self.playhead.x = start_margin - 5 + + # Update button states using bitmaps + if hasattr(self, 'button_sprites') and self.button_sprites is not None: + # Update play button to "down" state + self.play_button.bitmap = self.button_sprites['play']['down'][0] + self.play_button.pixel_shader = self.button_sprites['play']['down'][1] + + # Update stop button to "up" state + self.stop_button.bitmap = self.button_sprites['stop']['up'][0] + self.stop_button.pixel_shader = self.button_sprites['stop']['up'][1] + else: + # Fallback implementation for drawn buttons + # Note: This section is for backward compatibility but has issues + # Ideally, button_sprites should always be provided + print("Warning: Using fallback button display (not fully supported)") + # The fallback code is intentionally omitted as it has errors + # and requires refactoring of the bitmap handling + + print("Playback started") + + def stop_playback(self): + """Stop playback""" + self.sound_manager.stop_all_notes() + self.is_playing = False + self.playhead.x = -10 # Move off-screen + + # Update button states using bitmaps + if hasattr(self, 'button_sprites') and self.button_sprites is not None: + # Update play button to "up" state + self.play_button.bitmap = self.button_sprites['play']['up'][0] + self.play_button.pixel_shader = self.button_sprites['play']['up'][1] + + # Update stop button to "down" state + self.stop_button.bitmap = self.button_sprites['stop']['down'][0] + self.stop_button.pixel_shader = self.button_sprites['stop']['down'][1] + else: + # Fallback implementation for drawn buttons + # Note: This section is for backward compatibility but has issues + # Ideally, button_sprites should always be provided + print("Warning: Using fallback button display (not fully supported)") + # The fallback code is intentionally omitted as it has errors + # and requires refactoring of the bitmap handling + + print("Playback stopped") + + def set_tempo(self, seconds_per_eighth): + """Update the playback tempo""" + self.seconds_per_eighth = seconds_per_eighth + print(f"Playback tempo updated: {60 / (seconds_per_eighth * 2)} BPM") + + def update_playback(self, x_positions): + """Update playback state and play notes at current position""" + if not self.is_playing: + return + + current_time = time.monotonic() + elapsed = current_time - self.last_playhead_time + + # Move at tempo rate + if elapsed >= self.seconds_per_eighth: + # Stop all current active notes + self.sound_manager.stop_all_notes() + + # Move playhead to next eighth note position + self.playhead_position += 1 + self.last_playhead_time = current_time + + # Check if we've reached the end + if self.playhead_position >= len(x_positions): + if self.loop_enabled: + # Loop back to the beginning + self.playhead_position = 0 + self.playhead.x = x_positions[0] - 1 + else: + # Stop playback if not looping + self.stop_playback() + return + + # Update playhead position + self.playhead.x = x_positions[self.playhead_position] - 1 + + # Find all notes at current playhead position + current_x = x_positions[self.playhead_position] + notes_at_position = [] + + for x_pos, y_pos, midi_note, channel in self.note_manager.note_data: + if abs(x_pos - current_x) < 2: # Note is at current position + notes_at_position.append((x_pos, y_pos, midi_note, channel)) + + # Play all notes at the current position + if notes_at_position: + self.sound_manager.play_notes_at_position(notes_at_position) diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/chat_01.wav b/Fruit_Jam/Larsio_Paint_Music/samples/chat_01.wav new file mode 100755 index 0000000000000000000000000000000000000000..f4606c333cdc259d3e413d36bf076a8e2cc76b85 GIT binary patch literal 3600 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/crash_01.wav b/Fruit_Jam/Larsio_Paint_Music/samples/crash_01.wav new file mode 100755 index 0000000000000000000000000000000000000000..3d0c64acbef3456b3bce9eb0ef68942bd0a49402 GIT binary patch literal 14666 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 VLtbDPXRwG0WlyH`X5-BmpT9d literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_A4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_A4.wav new file mode 100755 index 0000000000000000000000000000000000000000..0e8f56621be4cadbe7d146de7a0ee448943ce6d0 GIT binary patch literal 10994 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_B3.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_B3.wav new file mode 100755 index 0000000000000000000000000000000000000000..92331cc65d6799befbf2374fb5143588a4a43956 GIT binary patch literal 10992 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 qJ`~>X_#Y<0oALh@s}cHl_pEcpQCG&zYfoxX literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_B4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_B4.wav new file mode 100755 index 0000000000000000000000000000000000000000..b71c7f80e06dd8cb71efa937e8632d6b9f28eae6 GIT binary patch literal 10994 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 B&piMD literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_C4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_C4.wav new file mode 100755 index 0000000000000000000000000000000000000000..f0ca34ec1e0b683b4b25a0d56ea86d9a0bf482c6 GIT binary patch literal 10996 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 N$#$Zds3)q3{{!l2f~^1m literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_E5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_E5.wav new file mode 100755 index 0000000000000000000000000000000000000000..8d8c45c19da742a27d19dbd07454f7f9e3de15b8 GIT binary patch literal 10994 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 F{{VsU{f7Vm literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_F4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_F4.wav new file mode 100755 index 0000000000000000000000000000000000000000..419c8e4bb8c54de0563fb05b38e169ace7ed1cc1 GIT binary patch literal 10994 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%0A9Eth$oh{J!`jI#WqhH%qF$%PbK;~b z-MXX`8Qg47)}G9>>0?ty#}AFl(^SY}1o_NVVgvfotMbh8#CZkKEMzUZ2>l7wg)=tJ z1iIkG0lJ?L0iIH4iLH}$mUXmEZr3_^PL*@A1F)U9Zm=dgNMRg@c#i|gz(>z=?8V+ZJg`&c3N(ErfCEzB)baVS7W;r!CJI zmGPmIJdK-jEdH|YfpWI^5&!a={cF4 zo1DJ9XyF!-gkQ#NqJE=xWd=D09?pHsyCNJd(`lYW4(j+ksaHl-wmnCg9hm{8q$iOQ zXt5~~)uKbpGsJ{I5WNAv1@nEI0Fo!@(z*&=Lbug5({;}A*rv9AupG8rH_J?wVV1C= zUDdX(K4dySV{RXN&Mo%@g7$eOj%Mg3A z=Q*fGN{}<~A-DwDfV@ZM!BxIF-s?asFvIr-Y=ySKMz|=9yf6Dx{doZl|A4;@-5~Cf zmr&U>5%YIW5pNBDBR^9(Oj@Uy7{*WMrLVjXmn(VsV zFB2Q$&XU2Q|~6th|Lb)kTMiw#3=glf?Sx0zZBTgmOOjPEQBR+^*QdE1Qv%e-ta>`{Bn?rENh zVNVwiWQE5u3+e?oz@@Mpfe;6*KxX+b1!{xop{F4k`4COX2r+IkYgmuDe{(PMo21KB zV>GKZHOjdvQHR~ypR`PEM{S=Dk(xP*SrUWDE;34N;y4k^Z{aTB?-jQz(ju-zd{BK> znpA)$H$tI4DlZWK&K<(wk%_tvju2?W3I8uAsZgb;udz{L8V~A#`nb0b&2v-yP+N0tWaB!2@6g_yW=+Ehyse zho8ZVfIBMU@?P?DQW-%b?7_vMTZERJO&&rDhLGTw5KQ1i zSHc(kj(Y>`*c9w7w%xDxgUAZ_H1r5$f{Vkagc|aK0_YKx4o4$>5hijBCLuo~*N|7p z6{HOA12=~K#4hLovq4m~8QNc+e?Q~FZ*v`w@G z`d<1N29vpf2{W>pikuu=9D&Nfa3=PTzhXD_D*$HLyqrm+vQerK|n zof$5gnpQ?VKz&R3L>@z)LOx6CMtV;a62{P>(Adzx(EJb_d>d>GE)8Y`>+w9?6K3~r z;tu>29*tK7vI8LY4y(Y1U>E!q{`vlgXdODhf5?BvpMh=ldr=5oi^K-CYuwmg` zffjss&>GAQ*+PSf1B8zB4@pG+ja)-EkWq30SY=oUK6V~wCOQ3|GAP5?XN#c+g;XWDR5;Oc|hwH5Wsnbcc zuu#Ibki%B}Ur#8kJrLIO|Mfcv=l_U>Fc58oKHQHjY^yEYFB OPuMmrEClhtn*SfIPK5mc literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_F5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_F5.wav new file mode 100755 index 0000000000000000000000000000000000000000..7fd14ff103d8fe2f93590e93858a7b62937e9cdf GIT binary patch literal 10994 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/larso_G5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/larso_G5.wav new file mode 100755 index 0000000000000000000000000000000000000000..22cdae7936a90de18a600faa8ec4d7f1746b92bc GIT binary patch literal 10994 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_B3.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_B3.wav new file mode 100755 index 0000000000000000000000000000000000000000..da6d8f84ded126ef9d1385e574fc918c987d59ad GIT binary patch literal 11308 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 F`#-l!Tyy{c literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_B4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_B4.wav new file mode 100755 index 0000000000000000000000000000000000000000..7a2ea264ae3ac407a484c06d717abdbbda3d1369 GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_C4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_C4.wav new file mode 100755 index 0000000000000000000000000000000000000000..b870ac3c488ee77fcfe869f2d867b89e3914eb92 GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_C5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_C5.wav new file mode 100755 index 0000000000000000000000000000000000000000..50febe98840131e68fb5eee1f61d00938e9900fc GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_D5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_D5.wav new file mode 100755 index 0000000000000000000000000000000000000000..f43f9a1e32f86fca994cc1bafa70ce497c78689c GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_E4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_E4.wav new file mode 100755 index 0000000000000000000000000000000000000000..609095e705a909ebc75a4a077a7470fb24e89419 GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_E5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_E5.wav new file mode 100755 index 0000000000000000000000000000000000000000..561b459315088162da305c5ed970a83ede4ae3df GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_F4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_F4.wav new file mode 100755 index 0000000000000000000000000000000000000000..081be3cb27cdf4194972eeffc5ecc5a39ce71e21 GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_F5.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_F5.wav new file mode 100755 index 0000000000000000000000000000000000000000..96b4b6640ab8a79dc9efd3fdf1717d79b057befd GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_G4.wav b/Fruit_Jam/Larsio_Paint_Music/samples/musicnote16_G4.wav new file mode 100755 index 0000000000000000000000000000000000000000..31f19a0e1346b878a9f734639906a425173f4294 GIT binary patch literal 11308 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 z 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 literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/samples/snare_01.wav b/Fruit_Jam/Larsio_Paint_Music/samples/snare_01.wav new file mode 100755 index 0000000000000000000000000000000000000000..004be30a8a6c5486ad05399d6e15858201a9b640 GIT binary patch literal 2226 zcmYk8XINBc8iv2qrw=e9BB(%+(Fh|5DrG@Y(bb?3G=OMS1j*VZV2N$e*brCISe9L} z1C|g(#eyYvEQlCKr3fg9A}|GJm^0^`Ip+)RUVH7n_w`=SpXd31$4#C%@vI1dgvj`) zw56FI4gdh87sp`$c*O&N0tb+qoSD3>x04BSg-XQ4k4N|MThUZl0_F5x@W6756BEmv z5A{vbJXas^eq8FutK_Pp;L4ee!G%9Yy>>Ue{yy@g^}7e_^NWv9D+~94+Q{@Fi5D`V zHX-!j?AS3ND=~-IBF!4v1GS?veL#HHx$I@vCl`UNeFwUBA3A+u3e=hxL+wa$Mz%+R zzsZW!Y{?owBfWH9|MfX*;P|9{vYbCQo!n8m`Qwi5`nLETNu8-#>tAa>%?Yqn>|6Wu z&aY)bcjrQ_+wyI38TT)I$m`gduWqwMRWMK9?VX}n1hpYjEwQj#Stf1jBcD`}dnNbP z%MU~K?Y=c*ANB5ZF?U}zw;Szn(5S(ST0){x70T<50_O}R89V?gTKT@vrw)ctv{ zmqg}WZeDuMB8{0#JHl`(31=cJ*5V9`t1{-jF$mzE&wr1K`5D2xCGOvdE zvO!ON$@#}2-!mtw!afyfN;TP0C(}32@TcB5t~zw;SF#}Iatu{R9ZOvp<>L-KYluYM zEz4edb@%WWmlTGWr<$3XQ(@DFf)3kTqvF#;dF$YhM97-(70O`MM&(t{^ZbO*!%bVO zk9M~VFZipgX7iZn5zitHS4KXaYmQ)JAMClM?w^j$`t0ac@Vt26q=%YnUE6K*M~g36 z=d-%c1S(SMgvNR79#$CH?(Tr)PN;K~y5D2A5wYhd7uVi5>D%6YD7RG|ZmnqYbMzYg zn0e@Ptcx}jatB9-c~Yu%!eVSGkwLG*`zZ<8HB>bUHFkW}T3!DsxJ{^+T3Cj4=ns^V zWYoKc>mFqtt$W&4gw1NE`Y{RBOl5eNs+77{{Y~qJt{O{2PoDpMh5O(nakSg-2DFZI z`MBD_zXxe9>;6hM)IMEO*iS8r9@i+&b^p7^$F?)A$9hs;t!?63`qyt_DDbq)QkTLm zr<9Gis3`+3N>|7lBc+m-kxR!WM^*L9rpmg{axv^#bDlIvpX(ac=a6P40J8UD9A)pn zY`XpVedRo(8adlEuhZ*8QUBBJ5@TJph`xDdQC(kqC^p9Vkt}BHTdqkpQ1X`k9UpAc z^&9{p4TSaKBJfUVh&th!ZDe;2tK(w@FLo4mlt@Kiqt~&=Fbu?@8uTWvu|=c4 zR>Ahkx{ujlzs~(2WFbey#rz)e25b#6jddi(NspKaA;r4a)^1!NAinL$qy2jVqS0Sk|9+@h7h|Pve*_*_0`vN9_nZdll5$e9fTHFl>P-G{tB`^(! zlUg8!7}5c&$*JOTcjfms_gYhsc63Fywf|`FXD|%H1EqjvC~35vYqVU zi^yHHjBBz@?0#mNj+lCmBju6~$NsWJipMnc3DaNduQaB-yVG*foMJ1((!@(}FD~4i zU>nx4O`mNNEaPP@qEd&alC6p(RI(%x)pBR-e%Ksht0d8Bi#%fBQ6(=A!4riLZWd?j zRtWKUt#pPLQbD`_e}JHvs#!UE6(-BC7?m5 z=beQlZY#6gO4=6DjaD-k%NYev;UMn?6$oYz0O>-$uomvc=HV*R1@D9k-pXC#?r|g* ziTaSmjXF81NaQSfeo+)wm}2zf<4d%S;#{Od*$Na bc7gVK1=h=#{10E8 0: + first_sample = next(iter(self.samples.values())) + self.mixer.voice[0].play(first_sample, loop=False) + + def play_synth_note(self, midi_note, channel): + """Play a note using synthio with different waveforms per channel""" + try: + # Convert MIDI note to frequency + frequency = 440 * math.pow(2, (midi_note - 69) / 12) + + # Get the appropriate waveform for this channel + waveform = self.channel_waveforms.get(channel, self.wave_sine) + + # Get the appropriate amplitude for this channel + amplitude = self.channel_amplitudes.get(channel, 1.0) + + # Create synthio note with the specific waveform and amplitude + note = synthio.Note( + frequency, + waveform=waveform, + amplitude=amplitude + ) + + # Add to synth + self.synth.press(note) + + # If we have an existing preview note to release, release it first + if self.preview_mode and self.note_to_release and self.note_to_release_channel==channel: + try: + self.synth.release(self.note_to_release) + except Exception as e: + print(f"Error releasing previous note: {e}") + + # Store the new note for scheduled release if in preview mode + if self.preview_mode: + self.note_to_release = note + self.note_to_release_channel = channel + else: + self.active_synth_notes[channel].append(note) + + except Exception as e: + print(f"Error playing synthio note: {e}") + # If there's an error with custom waveforms, fall back to default note + try: + frequency = 440 * math.pow(2, (midi_note - 69) / 12) + note = synthio.Note(frequency) + self.synth.press(note) + + # Store for later release + if self.preview_mode: + self.note_to_release = note + self.note_to_release_channel = channel + else: + self.active_synth_notes[channel].append(note) + + except Exception as e2: + print(f"Fallback note error: {e2}") + + def stop_sample_at_position(self, x_pos, y_pos, channel): + """Stop a sample that's playing at the given position for a specific channel""" + position_key = (x_pos, y_pos, channel) + if position_key in self.playback_voice_mapping: + voice_index = self.playback_voice_mapping[position_key] + + # Stop the sample + self.mixer.voice[voice_index].stop() + self.active_voices[voice_index] = False + + # Remove from mappings + del self.playback_voice_mapping[position_key] + return True + + # Also check the simple position mapping + simple_key = (x_pos, y_pos) + if simple_key in self.position_to_voice: + voice_index = self.position_to_voice[simple_key] + + # Stop the sample + self.mixer.voice[voice_index].stop() + self.active_voices[voice_index] = False + + # Remove from mapping + del self.position_to_voice[simple_key] + return True + + return False + + def update(self): + """Update function to handle timed note releases""" + # Check if we need to release a preview note + if self.note_to_release and time.monotonic() >= self.note_release_time: + try: + self.synth.release(self.note_to_release) + self.note_to_release = None + self.note_to_release_channel = None + except Exception as e: + print(f"Error releasing preview note: {e}") + self.note_to_release = None + self.note_to_release_channel = None + + def stop_all_notes(self): + """Stop all currently playing notes""" + # Stop all MIDI notes + for note_number, channel in self.active_notes.items(): + self.midi.send(NoteOff(note_number, 0), channel=channel) + self.active_notes = {} + + # Stop all WAV samples + for i in range(5): # Use first 5 voices for WAV samples + self.mixer.voice[i].stop() + self.active_voices[i] = False + + # Clear position mappings + self.position_to_voice = {} + self.playback_voice_mapping = {} + + # Stop all synth notes + try: + # Release notes from all channels + for channel, notes in self.active_synth_notes.items(): + for note in notes: + self.synth.release(note) + self.active_synth_notes[channel] = [] + + # Also release preview note if there is one + if self.note_to_release: + self.synth.release(self.note_to_release) + self.note_to_release = None + self.note_to_release_channel = None + + except Exception as e: + print(f"Error releasing synth notes: {e}") + # Reinitialize the synth as a fallback + try: + self.synth.deinit() + self.synth = synthio.Synthesizer(sample_rate=11025) + self.mixer.voice[5].play(self.synth) + + # Reset all active notes + self.active_synth_notes = { + 3: [], # Channel 4 + 4: [], # Channel 5 + 5: [], # Channel 6 + } + except Exception as e2: + print(f"Error reinitializing synth: {e2}") + + def deinit(self): + """Clean up resources when shutting down""" + # Stop all sounds + self.stop_all_notes() + + # Clean up audio resources + try: + self.audio.deinit() + except Exception: + pass + + # Power down the TLV320 if applicable + if self.tlv: + try: + # For TLV320DAC3100, headphone_output = False will power down the output + self.tlv.headphone_output = False + except Exception: + pass + + # Clean up synth + try: + self.synth.deinit() + except Exception: + pass + + # Force garbage collection + gc.collect() + + def set_tempo(self, seconds_per_eighth): + """Update the playback tempo""" + self.seconds_per_eighth = seconds_per_eighth + print(f"Playback tempo updated: {60 / (seconds_per_eighth * 2)} BPM") diff --git a/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py b/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py new file mode 100755 index 000000000..7712473d5 --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py @@ -0,0 +1,216 @@ +""" +Sprite manager for CircuitPython Music Staff Application. +Handles loading and managing sprite images and palettes. +""" + +# pylint: disable=import-error, trailing-whitespace +import adafruit_imageload +from displayio import Palette, TileGrid + + +# pylint: disable=too-many-instance-attributes,invalid-name,broad-exception-caught +class SpriteManager: + """Manages sprites and palettes for note display""" + + def __init__(self, bg_color=0x8AAD8A): + """Initialize the sprite manager""" + self.bg_color = bg_color + + # Initialize palettes as empty lists first + self.note_palettes = [] + self.preview_palettes = [] + + # Sprites + self.mario_head = None + self.mario_palette = None + self.heart_note = None + self.heart_palette = None + self.drum_note = None + self.drum_palette = None + # Add new sprite variables + self.meatball_note = None + self.meatball_palette = None + self.star_note = None + self.star_palette = None + self.bot_note = None + self.bot_palette = None + + # Channel colors (still need these for palette management) + self.channel_colors = [ + 0x000000, # Channel 1: Black (default) + 0xFF0000, # Channel 2: Red + 0x00FF00, # Channel 3: Green + 0x0000FF, # Channel 4: Blue + 0xFF00FF, # Channel 5: Magenta + 0xFFAA00, # Channel 6: Orange + ] + + # Add button sprites + self.play_up = None + self.play_up_palette = None + self.play_down = None + self.play_down_palette = None + self.stop_up = None + self.stop_up_palette = None + self.stop_down = None + self.stop_down_palette = None + self.loop_up = None + self.loop_up_palette = None + self.loop_down = None + self.loop_down_palette = None + self.clear_up = None + self.clear_up_palette = None + self.clear_down = None + self.clear_down_palette = None + + # Load sprites + self.load_sprites() + + # Load button sprites + self.load_button_sprites() + + # Create palettes + self.create_palettes() + + def load_sprites(self): + """Load sprite images""" + try: + # Load the Lars note bitmap for channel 1 notes + self.mario_head, self.mario_palette = adafruit_imageload.load( + "/sprites/lars_note.bmp" + ) + # Make the background color transparent (not just the same color) + self.mario_palette.make_transparent(0) + + # Load the Heart note bitmap for channel 2 notes + self.heart_note, self.heart_palette = adafruit_imageload.load( + "/sprites/heart_note.bmp" + ) + # Make the background color transparent + self.heart_palette.make_transparent(0) + + # Load the Drum note bitmap for channel 3 notes + self.drum_note, self.drum_palette = adafruit_imageload.load( + "/sprites/drum_note.bmp" + ) + # Make the background color transparent + self.drum_palette.make_transparent(0) + + # Load the new sprites for channels 4, 5, and 6 + # Meatball for channel 4 + self.meatball_note, self.meatball_palette = adafruit_imageload.load( + "/sprites/meatball.bmp" + ) + self.meatball_palette.make_transparent(0) + + # Star for channel 5 + self.star_note, self.star_palette = adafruit_imageload.load( + "/sprites/star.bmp" + ) + self.star_palette.make_transparent(0) + + # Bot for channel 6 + self.bot_note, self.bot_palette = adafruit_imageload.load("/sprites/bot.bmp") + self.bot_palette.make_transparent(0) + + except Exception as e: + print(f"Error loading sprites: {e}") + + def create_palettes(self): + """Create palettes for notes and preview""" + # Create a palette for music notes with multiple colors + for channel_color in self.channel_colors: + palette = Palette(2) + palette[0] = self.bg_color # Transparent (sage green background) + palette[1] = channel_color # Note color for this channel + self.note_palettes.append(palette) + + # Create a preview palette with multiple colors + for channel_color in self.channel_colors: + palette = Palette(2) + palette[0] = self.bg_color # Transparent (sage green background) + # For preview, use a lighter version of the channel color + r = ((channel_color >> 16) & 0xFF) // 2 + 0x40 + g = ((channel_color >> 8) & 0xFF) // 2 + 0x40 + b = (channel_color & 0xFF) // 2 + 0x40 + preview_color = (r << 16) | (g << 8) | b + palette[1] = preview_color + self.preview_palettes.append(palette) + + def create_preview_note(self, current_channel, note_bitmap): + """Create preview note based on channel""" + if current_channel == 0: # Channel 1 uses Lars note + preview_tg = TileGrid(self.mario_head, pixel_shader=self.mario_palette) + elif current_channel == 1: # Channel 2 uses Heart note + preview_tg = TileGrid(self.heart_note, pixel_shader=self.heart_palette) + elif current_channel == 2: # Channel 3 uses Drum note + preview_tg = TileGrid(self.drum_note, pixel_shader=self.drum_palette) + elif current_channel == 3: # Channel 4 uses Meatball + preview_tg = TileGrid(self.meatball_note, pixel_shader=self.meatball_palette) + elif current_channel == 4: # Channel 5 uses Star + preview_tg = TileGrid(self.star_note, pixel_shader=self.star_palette) + elif current_channel == 5: # Channel 6 uses Bot + preview_tg = TileGrid(self.bot_note, pixel_shader=self.bot_palette) + else: # Fallback to colored circle + preview_tg = TileGrid( + note_bitmap, + pixel_shader=self.preview_palettes[current_channel] + ) + + preview_tg.x = 0 + preview_tg.y = 0 + preview_tg.hidden = True # Start with preview hidden + + return preview_tg + + def load_button_sprites(self): + """Load button sprites for transport controls""" + try: + # Load play button images + self.play_up, self.play_up_palette = adafruit_imageload.load( + "/sprites/play_up.bmp" + ) + self.play_up_palette.make_transparent(0) + + self.play_down, self.play_down_palette = adafruit_imageload.load( + "/sprites/play_down.bmp" + ) + self.play_down_palette.make_transparent(0) + + # Load stop button images + self.stop_up, self.stop_up_palette = adafruit_imageload.load( + "/sprites/stop_up.bmp" + ) + self.stop_up_palette.make_transparent(0) + + self.stop_down, self.stop_down_palette = adafruit_imageload.load( + "/sprites/stop_down.bmp" + ) + self.stop_down_palette.make_transparent(0) + + # Load loop button images + self.loop_up, self.loop_up_palette = adafruit_imageload.load( + "/sprites/loop_up.bmp" + ) + self.loop_up_palette.make_transparent(0) + + self.loop_down, self.loop_down_palette = adafruit_imageload.load( + "/sprites/loop_down.bmp" + ) + self.loop_down_palette.make_transparent(0) + + # Load clear button images + self.clear_up, self.clear_up_palette = adafruit_imageload.load( + "/sprites/clear_up.bmp" + ) + self.clear_up_palette.make_transparent(0) + + self.clear_down, self.clear_down_palette = adafruit_imageload.load( + "/sprites/clear_down.bmp" + ) + self.clear_down_palette.make_transparent(0) + + return True + except Exception as e: + print(f"Error loading button sprites: {e}") + return False diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/bot.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/bot.bmp new file mode 100755 index 0000000000000000000000000000000000000000..d409f1fa2fe273245015fa0c0b9413ae0c7fd9f3 GIT binary patch literal 246 zcmZ?r{l)+RWk5;;hy|dSk%0v)(EuccxFHxO_n+ZE!vP><`0;~*q2UKZ!+{?R3JyR% x!w;YkP>f8#C6cimaRT zbm*DDdD>}R1TJ6j4+U)kHT~E%W3FI+Y6;ip)^THX7uUAGVExT8ULXBH@8>Vv`M!tF z`#v^b&SH9F8CREAFgM@DqlE=Ld)UF(&HJeL*YNG*1N{E{0d-yD@L(S=o<2vvzk!w2 zd)QfgjBfWW*6tqT-IGta^=cQLtsU2Yyp3;Qd;@230}~@Gns)@6&=GOheE3WAv!5#8 z+M+d?-EC>gzwkcIdqJR;XD*%%g*HB7(aHr{_z0y|CUAOu+BCKG00aA{h_;o$+3}T| zV^DuRvi8y!VBV|6j3%__t2|M;ROHywg!Z_`o<2iHr6foycKwAo-HcMBINovW!`%fZql|^(m_Xj=J|sO z`GzZi;R=5W?_KGh+#my!lB5XhWjxn5CzcEw#u<)hF;1y7bWNHkruzOVEOF9$__r{e l=J{Jk;Nrr`d?EEup&@va3VVK}J^Ld+sTNIhQY5Vh{s1HdJW~Jw literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/clear_up.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/clear_up.bmp new file mode 100755 index 0000000000000000000000000000000000000000..70fdb13c6ae83f9f2091e0aa246063f4328fdfd7 GIT binary patch literal 4150 zcmeH|u}cDB7{(tVA*dl*PMsnm+%gG65{#fF3BtjMh5|v*!3d%yXow(iaS5Va`U7eX z8d@5oIiw+iS{qsmuJ^k;$?v}JJx>p7@s&I7&ig&@^FH@^F0H16!G@Bh41GFn5K!F>jq8^k5Q?VkuPkZwzQ9A@(RWE zCT)yU8DdE&VcJy{ro~eZ@`6f{sBWP;Kq5LCNLt3 z2mic?K(V0Ue1D2S2~owpc%eW)czY$$fre(EpL4GzAl@2OTHL$8J literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/drum_note.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/drum_note.bmp new file mode 100755 index 0000000000000000000000000000000000000000..a01c582e29e9e1e4c46f7130306f0adc9731b395 GIT binary patch literal 246 zcmb_VyA6OK6g-KYjd21(qhlC*m$C4*jK);vb$Abu2|PIN^9UU0gNmE7k#pmKu?!;5 zWvcvU85xNSsz6l4r0_d4loh+*5C}eIVy5dVaxuFg5m%3Oz!LmN8}9`BdqI4|@`q>Y##3>dx0 ze3z-??J6n?56pmU$i=Yk^e{%u{*OE>8eE8~v#JNQ9yDSg&I(B`5W5dwZaps~rVtZ< HY?}KwoTV*# literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/lars_note.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/lars_note.bmp new file mode 100755 index 0000000000000000000000000000000000000000..0c1f3e873efb2a37eed871a0fafdff62157dda18 GIT binary patch literal 348 zcmZXO!41Md3-AuNpz+**CXvj(O{o=U literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/loop_down.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/loop_down.bmp new file mode 100755 index 0000000000000000000000000000000000000000..297786d09adb2736cd91f0257c028ac6ae2499fe GIT binary patch literal 4150 zcmZ?rH4|U}12Yx|1`Qy~0f-HNn2~`4NCE*51A`DZ1Oo*@5)A)=5ClvVlo)I@Tp0{4 z(-^G7`We&;?=z$=xXCc<@H+;xPrn%gp3Y=2*q6nSH^rPmKhv8*#XE?>(#D9P#NM8v zDZzl@VO})D|Jlh5PtL|O{JDLa;s5{t4BOYvW@xW#VaUqLWC#k2Wax4#V=yvW!;l<) zlVMl&bq25L{R{^AU10l1iO~=k4S|6O0Y(Y{(7hDs25O~HJJ@pa0}bN#VW(dbFF^7x z4*yGX;sKIFLO&ZO;N)Zjd5bvrvtb4yP%A0=aRni<_K#@&Y-~8wAW`85jy>!lNR)m~ zpaIym6PbP>X$6}R#MzHcCq#^V{g5yvTR$jE0G&Xten^fYUq3MWl92zfh2MzM4=n32 zia=7r52zMf5lBh=QJQ{-j(*ILLlPleeC&%{xG027s8Jpcdz literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/loop_up.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/loop_up.bmp new file mode 100755 index 0000000000000000000000000000000000000000..2d1a0aa86c1d3da41dbb0493e858256ae9096836 GIT binary patch literal 4150 zcmZ?rH4|U}12Yx|1`Qy~0f-HNn2~`4NCE*51A`DZ1Oo*@5)A)=5ClvVlo)I@Tp0{4 z(-^G7`We&;?=z$=xXCc<@H+;xPrn%gp3Y=2*q6nSH^rPmKhv8*#XE?>(#D9P#NM8v zDZzl@VO})D|Jlh5PtL|O{JDLa;s5{t4BOYvW@xW#VaUqLWC#k2Wax4#V=yvW!;l<) zlVMl&bq25L{R{^AU10l1iO~=k4S|6O0Y(Y{(7hDs25O~HJJ@pa0}bN#VW*!JFF^7x z4*%oT&PqtXBwoNuSidM9AUP!Ti(>*&QE`yBh;zR(#D9P#NM8v zDZzl@VO})D|Jlh5PtL|O{JDLa;s5{t4BOYvW@xW#VaUqLWC#k2Wax4#V=yvW!;l<) zlVMl&bq25L{R{^AU10l1iO~=k4S|6O0Y(Y{(7hDs25O~HJJ@pa0}bN#;iq4UNH5{? zzmyblCg9Z1%}taEc=Qux0$%+@m_R^3K@$k-Ctv~*`th1Tlzu!W5UC%h2}JA1VFC&I zv6?`Vek>-Cs2{@wlJ%pRK!$#lj77SB)NDzjevD#)B>kvXgG(sl^p1iCa9mVZhYZKz~O|#kGSdw+IWB(Mh1l|{)jbd hR6i&Lhz%`Fb;Be4Aif}zq_6=D3{x^K25Vzr003vwOIH8@ literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/play_up.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/play_up.bmp new file mode 100755 index 0000000000000000000000000000000000000000..d9e3e53a36a7cc84c098243dc0094807032c6c8f GIT binary patch literal 4150 zcmeH}u}i~16vn@T1wjXKNxF%MbTbyI6bqGti$#zQ6>(4~6xyL8h>PGLg3zUlAlk)0 zKxe_h#ZjE4IEbLDgR4TkTrO=)^K#cl5G1eM<&oU)``*2fr1_Qf7biS%zy3dI=iA{{v~rKXF1*>%yHdg5 zzi=TW;~i_Q*P1H?@-DciaJj!zH)SpH7mu$`&xCa_FWw$h-Hryie~Tx2=CIb0<|Ty- z5sFu^<_ZKa+qQ70>hD~ZCjS0Xtg|5EtqyeB(RcDY{j*gDoJ0NrW?LT6m}9^<)J0tt literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/star.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/star.bmp new file mode 100755 index 0000000000000000000000000000000000000000..18247a132747ea2c9d18f5520bf9156edc657d85 GIT binary patch literal 246 zcmb76u?>JQ3^P(T7Q_XNoROleyu;knxC&(hrva%eu534sm2JO}IA|+5y&NEIQK|Eo z{B}2PoP2Nxs-vEcMLEM6G5ZONz9@vBq=`jngm%ufb*+@hC7gjZ&thm^=^Yvqp&<{B CVI3y` literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/stop_down.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/stop_down.bmp new file mode 100755 index 0000000000000000000000000000000000000000..44cf026ae482c630097c7c581928ca7e08b09098 GIT binary patch literal 4150 zcmZ?rH4|U}12Yx|1`Qy~0f-HNn2~`4NCE*51A`DZ1Oo*@5)A)=5ClvVlo)I@Tp0{4 z(-^G7`We&;?=z$=xXCc<@H+;xPrn%gp3Y=2*q6nSH^rPmKhv8*#XE?>(#D9P#NM8v zDZzl@VO})D|Jlh5PtL|O{JDLa;s5{t4BOYvW@xW#VaUqLWC#k2Wax4#V=yvW!;l<) zlVMl&bq25L{R{^AU10l1iO~=k4S|6O0Y(Y{(7hDs25O~HJJ@pa0}bN#QT=EkAcGem zDaH|gc(u!n>W7EGX!wCb03IAL#%TJ%7Xq+Q0@9=DXEgnc<{zXC0b%0HJu*X}{=x7N lE&&|*AD40r@lpL)%MXlj!X*F+KZ-~S8^A!9QDQv<0|1XvmHhw! literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/sprites/stop_up.bmp b/Fruit_Jam/Larsio_Paint_Music/sprites/stop_up.bmp new file mode 100755 index 0000000000000000000000000000000000000000..28b07b908819bfdd01c7d07b4a0fe71bab5fd156 GIT binary patch literal 4150 zcmZ?rH4|U}12Yx|1`Qy~0f-HNn2~`4NCE*51A`DZ1Oo*@5)A)=5ClvVlo)I@Tp0{4 z(-^G7`We&;?=z$=xXCc<@H+;xPrn%gp3Y=2*q6nSH^rPmKhv8*#XE?>(#D9P#NM8v zDZzl@VO})D|Jlh5PtL|O{JDLa;s5{t4BOYvW@xW#VaUqLWC#k2Wax4#V=yvW!;l<) zlVMl&bq25L{R{^AU10l1iO~=k4S|6O0Y(Y{(7hDs25O~HJJ@pa0}bN#QT=Ekz={_j zDaH|gc(t<<(l3PL(cfc!E!IH2g->A0h!^&HqxP=?8ZRjOL%w{6kUx uL1+fDu;)L#^(SHdC@S!Cu-cDb3ySRU&=2tinIwe`U|?{PX)#zE0|Nm142~%P literal 0 HcmV?d00001 diff --git a/Fruit_Jam/Larsio_Paint_Music/staff_view.py b/Fruit_Jam/Larsio_Paint_Music/staff_view.py new file mode 100755 index 000000000..7b03c09cf --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/staff_view.py @@ -0,0 +1,217 @@ +""" +# staff_view.py: Larsio Paint Music component +""" + +# pylint: disable=import-error, trailing-whitespace +from displayio import Group, Bitmap, Palette, TileGrid + + +# pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments +# pylint: disable=too-many-branches,too-many-statements,too-many-locals,too-many-nested-blocks +class StaffView: + """Manages the music staff display and related elements""" + + def __init__(self, screen_width, screen_height, note_manager): + self.SCREEN_WIDTH = screen_width + self.SCREEN_HEIGHT = screen_height + self.note_manager = note_manager + + # Staff dimensions + self.TOP_MARGIN = int(self.SCREEN_HEIGHT * 0.1) + self.BOTTOM_MARGIN = int(self.SCREEN_HEIGHT * 0.2) + self.STAFF_HEIGHT = int((self.SCREEN_HEIGHT - self.TOP_MARGIN - self.BOTTOM_MARGIN) * 0.95) + self.STAFF_Y_START = self.TOP_MARGIN + self.LINE_SPACING = self.STAFF_HEIGHT // 8 + + # Margins and spacing + self.START_MARGIN = 25 # Pixels from left edge for the double bar + + # Note spacing + self.EIGHTH_NOTE_SPACING = self.SCREEN_WIDTH // 40 + self.QUARTER_NOTE_SPACING = self.EIGHTH_NOTE_SPACING * 2 + + # Measure settings + self.NOTES_PER_MEASURE = 4 + self.MEASURE_WIDTH = self.QUARTER_NOTE_SPACING * self.NOTES_PER_MEASURE + self.MEASURES_PER_LINE = 4 + + # Playback elements + self.playhead = None + self.highlight_grid = None + + # X positions for notes + self.x_positions = [] + self._generate_x_positions() + + def _generate_x_positions(self): + """Generate horizontal positions for notes""" + self.x_positions = [] + for measure in range(self.MEASURES_PER_LINE): + measure_start = self.START_MARGIN + (measure * self.MEASURE_WIDTH) + for eighth_pos in range(8): + x_pos = (measure_start + (eighth_pos * self.EIGHTH_NOTE_SPACING) + + self.EIGHTH_NOTE_SPACING // 2) + if x_pos < self.SCREEN_WIDTH: + self.x_positions.append(x_pos) + + # Share positions with note manager + self.note_manager.x_positions = self.x_positions + + def create_staff(self): + """Create the staff with lines and background""" + staff_group = Group() + + # Create staff background + staff_bg_bitmap = Bitmap(self.SCREEN_WIDTH, self.STAFF_HEIGHT, 2) + staff_bg_palette = Palette(2) + staff_bg_palette[0] = 0xF5F5DC # Light beige (transparent) + staff_bg_palette[1] = 0x657c95 # 8AAD8A + + # Fill staff background with sage green + for x in range(self.SCREEN_WIDTH): + for y in range(self.STAFF_HEIGHT): + staff_bg_bitmap[x, y] = 1 + + # Create a TileGrid for staff background + staff_bg_grid = TileGrid( + staff_bg_bitmap, + pixel_shader=staff_bg_palette, + x=0, + y=self.STAFF_Y_START + ) + staff_group.append(staff_bg_grid) + + # Create staff lines + staff_bitmap = Bitmap(self.SCREEN_WIDTH, self.STAFF_HEIGHT, 4) + staff_palette = Palette(4) + staff_palette[0] = 0x657c95 # + staff_palette[1] = 0x000000 # Black for horizontal staff lines + staff_palette[2] = 0x888888 # Medium gray for measure bar lines + staff_palette[3] = 0xAAAAAA # Lighter gray for quarter note dividers + + # Draw 5 horizontal staff lines + for i in range(5): + y_pos = (i + 1) * self.LINE_SPACING + for x in range(self.SCREEN_WIDTH): + staff_bitmap[x, y_pos] = 1 + + # Add double bar at the beginning + for x in range(self.START_MARGIN - 5, self.START_MARGIN - 2): + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + staff_bitmap[x, y] = 1 + + for x in range(self.START_MARGIN - 1, self.START_MARGIN + 2): + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + staff_bitmap[x, y] = 1 + + # Add measure bar lines (thicker, darker) + bar_line_width = 2 + + # For each measure (except after the last one) + for i in range(1, self.MEASURES_PER_LINE): + # Calculate measure bar position + measure_bar_x = self.START_MARGIN + (i * self.MEASURE_WIDTH) + + if measure_bar_x < self.SCREEN_WIDTH: + # Draw the measure bar line + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + for thickness in range(bar_line_width): + if measure_bar_x + thickness < self.SCREEN_WIDTH: + staff_bitmap[measure_bar_x + thickness, y] = 2 + + # Add quarter note divider lines within each measure + for measure in range(self.MEASURES_PER_LINE): + measure_start_x = self.START_MARGIN + (measure * self.MEASURE_WIDTH) + + # Calculate quarter note positions (divide measure into 4 equal parts) + quarter_width = self.MEASURE_WIDTH // 4 + + # Draw lines at the first, second, and third quarter positions + for q in range(1, 4): # Draw at positions 1, 2, and 3 (not at 0 or 4) + quarter_x = measure_start_x + (q * quarter_width) + + if quarter_x < self.SCREEN_WIDTH: + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + staff_bitmap[quarter_x, y] = 3 # Use color 3 (light gray) + + # Add double bar line at the end + double_bar_width = 5 + double_bar_x = self.START_MARGIN + (self.MEASURES_PER_LINE * self.MEASURE_WIDTH) + 5 + if double_bar_x + double_bar_width < self.SCREEN_WIDTH: + # First thick line + for x in range(3): + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + staff_bitmap[double_bar_x + x, y] = 1 + + # Second thick line (with gap) + for x in range(3): + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + staff_bitmap[double_bar_x + x + 4, y] = 1 + + # Create a TileGrid with the staff bitmap + staff_grid = TileGrid( + staff_bitmap, + pixel_shader=staff_palette, + x=0, + y=self.STAFF_Y_START + ) + staff_group.append(staff_grid) + + return staff_group + + def create_grid_lines(self): + """Add vertical grid lines to show note spacing""" + grid_bitmap = Bitmap(self.SCREEN_WIDTH, self.STAFF_HEIGHT, 2) + grid_palette = Palette(2) + grid_palette[0] = 0x657c95 # Transparent + grid_palette[1] = 0xAAAAAA # Faint grid lines (light gray) + + # Draw vertical grid lines at each eighth note position + for x_pos in self.x_positions: + for y in range(self.STAFF_HEIGHT): + if self.LINE_SPACING <= y <= 5 * self.LINE_SPACING: + grid_bitmap[x_pos, y] = 1 + + return TileGrid(grid_bitmap, pixel_shader=grid_palette, x=0, y=self.STAFF_Y_START) + + def create_playhead(self): + """Create a playhead indicator""" + playhead_bitmap = Bitmap(2, self.STAFF_HEIGHT, 2) + playhead_palette = Palette(2) + playhead_palette[0] = 0x657c95 # Transparent + playhead_palette[1] = 0xFF0000 # Red playhead line + + for y in range(self.STAFF_HEIGHT): + playhead_bitmap[0, y] = 1 + playhead_bitmap[1, y] = 1 + + self.playhead = TileGrid( + playhead_bitmap, + pixel_shader=playhead_palette, + x=0, + y=self.STAFF_Y_START + ) + self.playhead.x = -10 # Start off-screen + + return self.playhead + + def create_highlight(self): + """Create a highlight marker for the closest valid note position""" + highlight_bitmap = Bitmap(self.SCREEN_WIDTH, 3, 2) + highlight_palette = Palette(2) + highlight_palette[0] = 0x657c95 # Transparent + highlight_palette[1] = 0x007700 # Highlight color (green) + + for x in range(self.SCREEN_WIDTH): + highlight_bitmap[x, 1] = 1 + + self.highlight_grid = TileGrid(highlight_bitmap, pixel_shader=highlight_palette) + self.highlight_grid.y = self.note_manager.note_positions[0] # Start at first position + + return self.highlight_grid diff --git a/Fruit_Jam/Larsio_Paint_Music/ui_manager.py b/Fruit_Jam/Larsio_Paint_Music/ui_manager.py new file mode 100755 index 000000000..e1368ff9c --- /dev/null +++ b/Fruit_Jam/Larsio_Paint_Music/ui_manager.py @@ -0,0 +1,641 @@ +""" +# ui_manager.py: CircuitPython Music Staff Application component +""" + +import time +import gc + +# pylint: disable=import-error, trailing-whitespace, line-too-long, superfluous-parens +from adafruit_display_text.bitmap_label import Label +import terminalio +from displayio import TileGrid + +from display_manager import DisplayManager +from staff_view import StaffView +from control_panel import ControlPanel +from input_handler import InputHandler +from sprite_manager import SpriteManager +from cursor_manager import CursorManager +from playback_controller import PlaybackController + + +# pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments +# pylint: disable=too-many-branches,too-many-statements,too-many-public-methods +# pylint: disable=too-many-locals,attribute-defined-outside-init,possibly-used-before-assignment +# pylint: disable=consider-using-in,too-many-return-statements,no-else-return +class UIManager: + """Manages the UI elements, input, and user interaction""" + + def __init__(self, sound_manager, note_manager): + """Initialize the UI manager with sound and note managers""" + self.sound_manager = sound_manager + self.note_manager = note_manager + + # Screen dimensions + self.SCREEN_WIDTH = 320 + self.SCREEN_HEIGHT = 240 + + # Staff dimensions + self.TOP_MARGIN = int(self.SCREEN_HEIGHT * 0.1) + self.BOTTOM_MARGIN = int(self.SCREEN_HEIGHT * 0.2) + self.STAFF_HEIGHT = int((self.SCREEN_HEIGHT - self.TOP_MARGIN - self.BOTTOM_MARGIN) * 0.95) + self.STAFF_Y_START = self.TOP_MARGIN + self.LINE_SPACING = self.STAFF_HEIGHT // 8 + + # Start margin + self.START_MARGIN = 25 + + # Tempo and timing + self.BPM = 120 + self.SECONDS_PER_BEAT = 60 / self.BPM + self.SECONDS_PER_EIGHTH = self.SECONDS_PER_BEAT / 2 + + # Initialize components + self.display_manager = DisplayManager(self.SCREEN_WIDTH, self.SCREEN_HEIGHT) + self.staff_view = StaffView(self.SCREEN_WIDTH, self.SCREEN_HEIGHT, self.note_manager) + self.control_panel = ControlPanel(self.SCREEN_WIDTH, self.SCREEN_HEIGHT) + self.input_handler = InputHandler(self.SCREEN_WIDTH, self.SCREEN_HEIGHT, + self.STAFF_Y_START, self.STAFF_HEIGHT) + self.sprite_manager = SpriteManager() + self.cursor_manager = CursorManager() + self.playback_controller = PlaybackController(self.sound_manager, self.note_manager, + self.SECONDS_PER_EIGHTH) + + # UI elements + self.main_group = None + self.note_name_label = None + self.tempo_label = None + self.preview_tg = None + self.highlight_grid = None + self.playhead = None + self.channel_buttons = [] + self.channel_selector = None + + # Initialize attributes that will be defined later + self.display = None + self.play_button = None + self.stop_button = None + self.loop_button = None + self.clear_button = None + self.crosshair_cursor = None + self.triangle_cursor = None + self.tempo_minus_label = None + self.tempo_plus_label = None + + # Channel setting + self.current_channel = 0 + + def setup_display(self): + """Initialize the display and create visual elements""" + # Initialize display + self.main_group, self.display = self.display_manager.initialize_display() + + # Create background + bg_grid = self.display_manager.create_background() + self.main_group.append(bg_grid) + + # Create staff + staff_group = self.staff_view.create_staff() + self.main_group.append(staff_group) + + # Create grid lines + grid_tg = self.staff_view.create_grid_lines() + self.main_group.insert(1, grid_tg) # Insert before staff so it appears behind + + # Create channel buttons using sprites + self._create_sprite_channel_buttons() + + # Create transport controls + transport_group, self.play_button, self.stop_button, self.loop_button, self.clear_button = \ + self.control_panel.create_transport_controls(self.sprite_manager) + self.main_group.append(transport_group) + + # Create cursors + self.crosshair_cursor, self.triangle_cursor = self.cursor_manager.create_cursors() + self.main_group.append(self.crosshair_cursor) + self.main_group.append(self.triangle_cursor) + + # Create note name label + self._create_note_name_label() + + # Create tempo display + self._create_tempo_display() + + # Create highlight + self.highlight_grid = self.staff_view.create_highlight() + self.main_group.append(self.highlight_grid) + + # Create playhead + self.playhead = self.staff_view.create_playhead() + self.main_group.append(self.playhead) + + # Set playback controller elements + self.playback_controller.set_ui_elements( + self.playhead, + self.play_button, + self.stop_button, + self.control_panel.button_sprites + ) + + # Create preview note + self.preview_tg = self.sprite_manager.create_preview_note( + self.current_channel, self.note_manager.note_bitmap) + self.main_group.append(self.preview_tg) + + # Add note groups to main group + self.main_group.append(self.note_manager.notes_group) + self.main_group.append(self.note_manager.ledger_lines_group) + + def _create_sprite_channel_buttons(self): + """Create channel buttons using sprites instead of numbered boxes""" + # Get a reference to the channel selector from control panel + channel_group, self.channel_selector = self.control_panel.create_channel_buttons() + + # Add sprite-based channel buttons + button_sprites = [ + (self.sprite_manager.mario_head, self.sprite_manager.mario_palette), + (self.sprite_manager.heart_note, self.sprite_manager.heart_palette), + (self.sprite_manager.drum_note, self.sprite_manager.drum_palette), + (self.sprite_manager.meatball_note, self.sprite_manager.meatball_palette), + (self.sprite_manager.star_note, self.sprite_manager.star_palette), + (self.sprite_manager.bot_note, self.sprite_manager.bot_palette) + ] + + # Create and position the sprite buttons + self.channel_buttons = [] + + for i, (sprite, palette) in enumerate(button_sprites): + button_x = 10 + i * (self.control_panel.CHANNEL_BUTTON_SIZE + + self.control_panel.CHANNEL_BUTTON_SPACING) + + # Create TileGrid for the sprite + button_tg = TileGrid( + sprite, + pixel_shader=palette, + x=button_x, + y=self.control_panel.CHANNEL_BUTTON_Y + ) + + # Center the sprite if it's not exactly the button size + if sprite.width != self.control_panel.CHANNEL_BUTTON_SIZE: + offset_x = (self.control_panel.CHANNEL_BUTTON_SIZE - sprite.width) // 2 + button_tg.x += offset_x + + if sprite.height != self.control_panel.CHANNEL_BUTTON_SIZE: + offset_y = (self.control_panel.CHANNEL_BUTTON_SIZE - sprite.height) // 2 + button_tg.y += offset_y + + self.channel_buttons.append(button_tg) + channel_group.append(button_tg) + + # Add the channel_group to main_group + self.main_group.append(channel_group) + + def _create_note_name_label(self): + """Create a label to show the current note name""" + self.note_name_label = Label( + terminalio.FONT, + text="", + color=0x000000, # Black text for beige background + scale=1 + ) + self.note_name_label.anchor_point = (0, 0) + self.note_name_label.anchored_position = (10, self.SCREEN_HEIGHT - 70) + self.main_group.append(self.note_name_label) + + def _create_tempo_display(self): + """Create a label for the tempo display with + and - buttons""" + gc.collect() # Force garbage collection before creating the label + + # Create plus and minus buttons for tempo adjustment + self.tempo_minus_label = Label( + terminalio.FONT, + text="-", + color=0xaaaaaa, # White text + background_color=0x444444, # Dark gray background + scale=1 + ) + self.tempo_minus_label.anchor_point = (0.5, 0.5) + self.tempo_minus_label.anchored_position = (self.SCREEN_WIDTH - 24, 10) + self.main_group.append(self.tempo_minus_label) + + self.tempo_plus_label = Label( + terminalio.FONT, + text="+", + color=0xaaaaaa, # gray text + background_color=0x444444, # Dark gray background + scale=1 + ) + self.tempo_plus_label.anchor_point = (0.5, 0.5) + self.tempo_plus_label.anchored_position = (self.SCREEN_WIDTH - 7, 10) + self.main_group.append(self.tempo_plus_label) + + # Create the tempo display label + self.tempo_label = Label( + terminalio.FONT, + text=f"Tempo~ {self.BPM} BPM", + color=0x222222, # gray text + scale=1 + ) + self.tempo_label.anchor_point = (0, 0.5) + self.tempo_label.anchored_position = (self.SCREEN_WIDTH - 114, 10) + self.main_group.append(self.tempo_label) + + print(f"Created tempo display: {self.tempo_label.text}") + + def find_mouse(self): + """Find the mouse device""" + return self.input_handler.find_mouse() + + def change_channel(self, channel_idx): + """Change the current MIDI channel""" + if 0 <= channel_idx < 6: # Ensure valid channel index + self.current_channel = channel_idx + + # Update channel selector position + channel_offset = (self.control_panel.CHANNEL_BUTTON_SIZE + + self.control_panel.CHANNEL_BUTTON_SPACING) + self.channel_selector.x = 7 + channel_idx * channel_offset + + # Update preview note color/image based on channel + self.main_group.remove(self.preview_tg) + self.preview_tg = self.sprite_manager.create_preview_note( + self.current_channel, self.note_manager.note_bitmap) + self.main_group.append(self.preview_tg) + + # Update status text + channel_names = ["Lars", "Heart", "Drum", "Meatball", "Star", "Bot"] + channel_text = f"Channel {self.current_channel + 1}: {channel_names[self.current_channel]}" + self.note_name_label.text = f"{channel_text} selected" + + print(f"Changed to MIDI channel {self.current_channel + 1}") + + def toggle_loop(self): + """Toggle loop button state""" + self.playback_controller.loop_enabled = not self.playback_controller.loop_enabled + self.control_panel.loop_enabled = self.playback_controller.loop_enabled + + # Update loop button appearance using bitmap if button_sprites are available + if hasattr(self.control_panel, 'button_sprites') and self.control_panel.button_sprites is not None: + state = 'down' if self.playback_controller.loop_enabled else 'up' + loop_bitmap, loop_palette = self.control_panel.button_sprites['loop'][state] + self.loop_button.bitmap = loop_bitmap + self.loop_button.pixel_shader = loop_palette + else: + # Fallback to original implementation + for x in range(1, self.control_panel.BUTTON_WIDTH - 1): + for y in range(1, self.control_panel.BUTTON_HEIGHT - 1): + skip_corners = (x, y) in [ + (0, 0), + (0, self.control_panel.BUTTON_HEIGHT-1), + (self.control_panel.BUTTON_WIDTH-1, 0), + (self.control_panel.BUTTON_WIDTH-1, self.control_panel.BUTTON_HEIGHT-1) + ] + + if not skip_corners: + # Skip pixels that are part of the loop symbol + dx = x - self.control_panel.BUTTON_WIDTH // 2 + dy = y - self.control_panel.BUTTON_HEIGHT // 2 + # Is pixel on the circle outline? + is_on_circle = (self.control_panel.loop_radius - 1 <= + (dx*dx + dy*dy)**0.5 <= + self.control_panel.loop_radius + 1) + + # Calculate arrow point positions + arrow_y1 = (self.control_panel.BUTTON_HEIGHT // 2 - + self.control_panel.loop_radius - 1) + arrow_y2 = arrow_y1 + 2 + + # Is pixel part of the arrow? + arrow_x = (self.control_panel.BUTTON_WIDTH // 2 + + int(self.control_panel.loop_radius * 0.7)) + is_arrow = x == arrow_x and (y == arrow_y1 or y == arrow_y2) + + if not (is_on_circle or is_arrow): + # Fill with active color if loop enabled, else inactive + val = 2 if self.playback_controller.loop_enabled else 0 + self.control_panel.loop_button_bitmap[x, y] = val + + self.note_name_label.text = "Loop: " + ("ON" if self.playback_controller.loop_enabled else "OFF") + + def press_clear_button(self): + """Handle clear button pressing effect""" + # Show pressed state + if hasattr(self.control_panel, 'button_sprites') and self.control_panel.button_sprites is not None: + self.clear_button.bitmap = self.control_panel.button_sprites['clear']['down'][0] + self.clear_button.pixel_shader = self.control_panel.button_sprites['clear']['down'][1] + else: + # Fallback to original implementation + for x in range(1, self.control_panel.BUTTON_WIDTH - 1): + for y in range(1, self.control_panel.BUTTON_HEIGHT - 1): + self.control_panel.clear_button_bitmap[x, y] = 2 # Red + + # Small delay for visual feedback + time.sleep(0.1) + + # Return to up state + if hasattr(self.control_panel, 'button_sprites') and self.control_panel.button_sprites is not None: + self.clear_button.bitmap = self.control_panel.button_sprites['clear']['up'][0] + self.clear_button.pixel_shader = self.control_panel.button_sprites['clear']['up'][1] + else: + # Fallback to original implementation + for x in range(1, self.control_panel.BUTTON_WIDTH - 1): + for y in range(1, self.control_panel.BUTTON_HEIGHT - 1): + self.control_panel.clear_button_bitmap[x, y] = 0 # Gray + + def clear_all_notes(self): + """Clear all notes""" + # Stop playback if it's running + if self.playback_controller.is_playing: + self.playback_controller.stop_playback() + + # Visual feedback for button press + self.press_clear_button() + + # Clear notes using note manager + self.note_manager.clear_all_notes(self.sound_manager) + + self.note_name_label.text = "All notes cleared" + + def adjust_tempo(self, direction): + """Adjust the tempo based on button press""" + # direction should be +1 for increase, -1 for decrease + + # Adjust BPM + new_bpm = self.BPM + (direction * 5) # Change by 5 BPM increments + + # Constrain to valid range + new_bpm = max(40, min(280, new_bpm)) + + # Only update if changed + if new_bpm != self.BPM: + self.BPM = new_bpm + self.SECONDS_PER_BEAT = 60 / self.BPM + self.SECONDS_PER_EIGHTH = self.SECONDS_PER_BEAT / 2 + + # Update playback controller with new tempo + self.playback_controller.set_tempo(self.SECONDS_PER_EIGHTH) + + # Update display + self.tempo_label.text = f"Tempo~ {self.BPM} BPM" + + print(f"Tempo adjusted to {self.BPM} BPM") + + def handle_mouse_position(self): + """Handle mouse movement and cursor updates""" + mouse_x = self.input_handler.mouse_x + mouse_y = self.input_handler.mouse_y + + # Check if mouse is over channel buttons area + is_over_channel_buttons = ( + self.control_panel.CHANNEL_BUTTON_Y <= mouse_y <= + self.control_panel.CHANNEL_BUTTON_Y + self.control_panel.CHANNEL_BUTTON_SIZE + ) + + # Check if we're over the staff area or transport controls area + is_over_staff = self.input_handler.is_over_staff(mouse_y) + is_over_transport = (mouse_y >= self.control_panel.TRANSPORT_AREA_Y) + + # Switch cursor based on area + self.cursor_manager.switch_cursor(use_triangle=(is_over_transport or is_over_channel_buttons)) + self.cursor_manager.set_cursor_position(mouse_x, mouse_y) + + # Handle staff area differently from other areas + if not is_over_staff: + # Hide highlight and preview when not over staff + self.highlight_grid.hidden = True + self.preview_tg.hidden = True + + # Show channel info if over channel buttons + if is_over_channel_buttons: + self._update_channel_button_info(mouse_x, mouse_y) + return + + # Process staff area interactions + # Find closest position and update highlight + closest_pos = self.note_manager.find_closest_position(mouse_y) + y_position = self.note_manager.note_positions[closest_pos] + self.highlight_grid.y = y_position - 1 # Center the highlight + self.highlight_grid.hidden = False + + # Find closest horizontal position (enforce minimum x position) + x_position = self.note_manager.find_closest_x_position(mouse_x) + + # Define sprite dimensions for each channel + sprite_width, sprite_height = self._get_sprite_dimensions(self.current_channel) + + # Update preview note position + self.preview_tg.x = x_position - sprite_width // 2 + self.preview_tg.y = y_position - sprite_height // 2 + self.preview_tg.hidden = False + + # Update note name label + if x_position < self.START_MARGIN: + self.note_name_label.text = "Invalid position - after double bar only" + else: + channel_names = ["Lars", "Heart", "Drum", "Meatball", "Star", "Bot"] + channel_text = f"Ch{self.current_channel+1} ({channel_names[self.current_channel]})" + note_text = self.note_manager.note_names[closest_pos] + self.note_name_label.text = f"{channel_text}: {note_text}" + + def _update_channel_button_info(self, mouse_x, mouse_y): + """Update the note name label based on which channel button the mouse is over""" + # Calculate which channel button we're over (if any) + for i in range(6): + button_x = 10 + i * (self.control_panel.CHANNEL_BUTTON_SIZE + + self.control_panel.CHANNEL_BUTTON_SPACING) + + # Get sprite dimensions for hit testing + sprite_width, sprite_height = self._get_sprite_dimensions(i) + + # Calculate the centered position of the sprite + offset_x = (self.control_panel.CHANNEL_BUTTON_SIZE - sprite_width) // 2 + offset_y = (self.control_panel.CHANNEL_BUTTON_SIZE - sprite_height) // 2 + sprite_x = button_x + offset_x + sprite_y = self.control_panel.CHANNEL_BUTTON_Y + offset_y + + # Check if mouse is over the sprite + rect_check = self.input_handler.point_in_rect( + mouse_x, mouse_y, sprite_x, sprite_y, + sprite_width, sprite_height) + + if rect_check: + channel_names = ["Lars", "Heart", "Drum", "Meatball", "Star", "Bot"] + self.note_name_label.text = f"Channel {i+1}: {channel_names[i]}" + break + + def _get_sprite_dimensions(self, channel_idx): + """Get the width and height of a sprite based on channel index""" + if channel_idx == 0: + return self.sprite_manager.mario_head.width, self.sprite_manager.mario_head.height + if channel_idx == 1: + return self.sprite_manager.heart_note.width, self.sprite_manager.heart_note.height + if channel_idx == 2: + return self.sprite_manager.drum_note.width, self.sprite_manager.drum_note.height + if channel_idx == 3: + return self.sprite_manager.meatball_note.width, self.sprite_manager.meatball_note.height + if channel_idx == 4: + return self.sprite_manager.star_note.width, self.sprite_manager.star_note.height + if channel_idx == 5: + return self.sprite_manager.bot_note.width, self.sprite_manager.bot_note.height + # Default fallback if channel_idx is out of range + return self.note_manager.NOTE_WIDTH, self.note_manager.NOTE_HEIGHT + + def handle_mouse_buttons(self): + """Handle mouse button presses""" + mouse_x = self.input_handler.mouse_x + mouse_y = self.input_handler.mouse_y + + # Check for staff area + is_over_staff = self.input_handler.is_over_staff(mouse_y) + + if self.input_handler.left_button_pressed: + # Check for tempo button clicks + minus_button_x, minus_button_y = self.tempo_minus_label.anchored_position + plus_button_x, plus_button_y = self.tempo_plus_label.anchored_position + button_radius = 8 # Allow a bit of space around the button for easier clicking + + if ((mouse_x - minus_button_x)**2 + (mouse_y - minus_button_y)**2) < button_radius**2: + # Clicked minus button - decrease tempo + self.adjust_tempo(-1) + return + + if ((mouse_x - plus_button_x)**2 + (mouse_y - plus_button_y)**2) < button_radius**2: + # Clicked plus button - increase tempo + self.adjust_tempo(1) + return + + # Check if a channel button was clicked + channel_clicked = False + for i in range(6): + button_x = 10 + i * (self.control_panel.CHANNEL_BUTTON_SIZE + + self.control_panel.CHANNEL_BUTTON_SPACING) + + # Get sprite dimensions for hit testing + sprite_width, sprite_height = self._get_sprite_dimensions(i) + + # Calculate the centered position of the sprite + offset_x = (self.control_panel.CHANNEL_BUTTON_SIZE - sprite_width) // 2 + offset_y = (self.control_panel.CHANNEL_BUTTON_SIZE - sprite_height) // 2 + sprite_x = button_x + offset_x + sprite_y = self.control_panel.CHANNEL_BUTTON_Y + offset_y + + # Check if click is within the sprite area + if self.input_handler.point_in_rect( + mouse_x, mouse_y, sprite_x, sprite_y, + sprite_width, sprite_height): + self.change_channel(i) + channel_clicked = True + break + + if not channel_clicked: + # Handle play/stop button clicks + if self.input_handler.point_in_rect( + mouse_x, mouse_y, self.play_button.x, self.play_button.y, + self.control_panel.BUTTON_WIDTH, self.control_panel.BUTTON_HEIGHT): + if not self.playback_controller.is_playing: + self.playback_controller.start_playback(self.START_MARGIN) + else: + self.playback_controller.stop_playback() + elif self.input_handler.point_in_rect( + mouse_x, mouse_y, self.stop_button.x, self.stop_button.y, + self.control_panel.BUTTON_WIDTH, self.control_panel.BUTTON_HEIGHT): + self.playback_controller.stop_playback() + elif self.input_handler.point_in_rect( + mouse_x, mouse_y, self.loop_button.x, self.loop_button.y, + self.control_panel.BUTTON_WIDTH, self.control_panel.BUTTON_HEIGHT): + self.toggle_loop() + elif self.input_handler.point_in_rect( + mouse_x, mouse_y, self.clear_button.x, self.clear_button.y, + self.control_panel.BUTTON_WIDTH, self.control_panel.BUTTON_HEIGHT): + self.clear_all_notes() + # Handle staff area clicks - left button adds notes only + elif is_over_staff: + self._add_note_based_on_channel(mouse_x, mouse_y) + + # Handle right mouse button for note deletion + elif self.input_handler.right_button_pressed and is_over_staff: + _, message = self.note_manager.erase_note( + mouse_x, mouse_y, + self.sprite_manager.mario_head, self.sprite_manager.mario_palette, + self.sound_manager + ) + self.note_name_label.text = message + + def _add_note_based_on_channel(self, x, y): + """Add a note based on the current channel""" + if self.current_channel == 0: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.mario_head, self.sprite_manager.mario_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + elif self.current_channel == 1: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + elif self.current_channel == 2: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.drum_note, self.sprite_manager.drum_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + elif self.current_channel == 3: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.meatball_note, self.sprite_manager.meatball_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + elif self.current_channel == 4: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.star_note, self.sprite_manager.star_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + elif self.current_channel == 5: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.bot_note, self.sprite_manager.bot_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + else: + _, message = self.note_manager.add_note( + x, y, self.current_channel, + self.sprite_manager.note_palettes, + self.sprite_manager.mario_head, self.sprite_manager.mario_palette, + self.sprite_manager.heart_note, self.sprite_manager.heart_palette, + self.sound_manager + ) + self.note_name_label.text = message + + def main_loop(self): + """Main application loop""" + while True: + # Update playback if active + if self.playback_controller.is_playing: + self.playback_controller.update_playback(self.staff_view.x_positions) + + # Update sound manager for timed releases + self.sound_manager.update() + + # Process mouse input - simplified version without wheel tracking + if self.input_handler.process_mouse_input(): + # Handle mouse position and update cursor + self.handle_mouse_position() + + # Handle mouse button presses + self.handle_mouse_buttons() From 5efae78d0c5f615abe134377084dfef58a2dec82 Mon Sep 17 00:00:00 2001 From: jedgarpark Date: Fri, 9 May 2025 13:27:56 -0700 Subject: [PATCH 2/3] moar pylint --- Fruit_Jam/Larsio_Paint_Music/code.py | 6 ++--- Fruit_Jam/Larsio_Paint_Music/control_panel.py | 3 +++ .../Larsio_Paint_Music/cursor_manager.py | 3 +++ .../Larsio_Paint_Music/display_manager.py | 3 +++ Fruit_Jam/Larsio_Paint_Music/input_handler.py | 23 +++++++++++-------- Fruit_Jam/Larsio_Paint_Music/note_manager.py | 5 +++- .../Larsio_Paint_Music/playback_controller.py | 3 +++ Fruit_Jam/Larsio_Paint_Music/sound_manager.py | 3 +++ .../Larsio_Paint_Music/sprite_manager.py | 5 +++- Fruit_Jam/Larsio_Paint_Music/staff_view.py | 3 +++ Fruit_Jam/Larsio_Paint_Music/ui_manager.py | 5 +++- 11 files changed, 46 insertions(+), 16 deletions(-) diff --git a/Fruit_Jam/Larsio_Paint_Music/code.py b/Fruit_Jam/Larsio_Paint_Music/code.py index 55ea85648..4328fa54d 100755 --- a/Fruit_Jam/Larsio_Paint_Music/code.py +++ b/Fruit_Jam/Larsio_Paint_Music/code.py @@ -7,7 +7,7 @@ or Metro RP2350 with EYESPI DVI breakout and TLV320DAC3100 breakout on STEMMA_I2C, pin D7 reset, 9/10/11 = BCLC/WSEL/DIN """ -# pylint: disable=invalid-name,too-few-public-methods,broad-exception-caught,redefined-outer-name +# pylint: disable=invalid-name,too-few-public-methods,broad-except,redefined-outer-name # Main application file for Larsio Paint Music @@ -101,7 +101,7 @@ def run(self): try: app = MusicStaffApp(audio_output=AUDIO_OUTPUT) app.run() - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Error with I2S audio: {e}") # Force garbage collection @@ -112,5 +112,5 @@ def run(self): try: app = MusicStaffApp(audio_output="pwm") app.run() - except Exception as e2: + except Exception as e2: # pylint: disable=broad-except print(f"Fatal error: {e2}") diff --git a/Fruit_Jam/Larsio_Paint_Music/control_panel.py b/Fruit_Jam/Larsio_Paint_Music/control_panel.py index 6450a85e0..e49ef1e11 100755 --- a/Fruit_Jam/Larsio_Paint_Music/control_panel.py +++ b/Fruit_Jam/Larsio_Paint_Music/control_panel.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # control_panel.py: CircuitPython Music Staff Application component """ diff --git a/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py b/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py index 4ab90c833..995824ed4 100755 --- a/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/cursor_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # cursor_manager.py: CircuitPython Music Staff Application component """ diff --git a/Fruit_Jam/Larsio_Paint_Music/display_manager.py b/Fruit_Jam/Larsio_Paint_Music/display_manager.py index 72aac9f60..9699c3476 100755 --- a/Fruit_Jam/Larsio_Paint_Music/display_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/display_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # display_manager.py: CircuitPython Music Staff Application component """ diff --git a/Fruit_Jam/Larsio_Paint_Music/input_handler.py b/Fruit_Jam/Larsio_Paint_Music/input_handler.py index 1f8d285b1..1fb7e16d8 100755 --- a/Fruit_Jam/Larsio_Paint_Music/input_handler.py +++ b/Fruit_Jam/Larsio_Paint_Music/input_handler.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # input_handler.py: CircuitPython Music Staff Application component """ @@ -11,8 +14,8 @@ # pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments -# pylint: disable=too-many-branches,too-many-statements,broad-exception-caught -# pylint: disable=too-many-nested-blocks,too-many-locals,too-many-positional-arguments +# pylint: disable=too-many-branches,too-many-statements,broad-except +# pylint: disable=too-many-nested-blocks,too-many-locals,no-self-use class InputHandler: """Handles user input through mouse and interactions with UI elements""" @@ -62,7 +65,7 @@ def find_mouse(self): try: manufacturer = device.manufacturer product = device.product - except Exception: # Specify exception type + except Exception: # pylint: disable=broad-except manufacturer = "Unknown" product = "Unknown" @@ -74,13 +77,13 @@ def find_mouse(self): has_kernel_driver = hasattr(device, 'is_kernel_driver_active') if has_kernel_driver and device.is_kernel_driver_active(0): device.detach_kernel_driver(0) - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Error detaching kernel driver: {e}") # Set configuration try: device.set_configuration() - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Error setting configuration: {e}") continue # Try next device @@ -98,7 +101,7 @@ def find_mouse(self): buf = bytearray(1) device.ctrl_transfer(bmRequestType, bRequest, wValue, wIndex, buf) print("Set to report protocol mode") - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Could not set protocol: {e}") # Buffer for reading data @@ -115,14 +118,14 @@ def find_mouse(self): # Timeout is normal if mouse isn't moving print("Mouse connected but not sending data (normal)") return True - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Mouse test read failed: {e}") # Continue to try next device or retry self.mouse = None self.in_endpoint = None continue - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Error initializing device: {e}") continue @@ -134,7 +137,7 @@ def find_mouse(self): gc.collect() time.sleep(RETRY_DELAY) - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Error during mouse detection: {e}") gc.collect() time.sleep(RETRY_DELAY) @@ -204,7 +207,7 @@ def process_mouse_input(self): gc.collect() return False - except Exception as e: + except Exception as e: # pylint: disable=broad-except print(f"Error reading mouse: {type(e).__name__}") return False diff --git a/Fruit_Jam/Larsio_Paint_Music/note_manager.py b/Fruit_Jam/Larsio_Paint_Music/note_manager.py index 9be46edfd..9a6a9dad3 100755 --- a/Fruit_Jam/Larsio_Paint_Music/note_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/note_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # note_manager.py: CircuitPython Music Staff Application component """ @@ -8,7 +11,7 @@ # pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments # pylint: disable=too-many-branches,too-many-statements,protected-access,too-many-locals -# pylint: disable=too-many-positional-arguments, trailing-whitespace +# pylint: disable=trailing-whitespace class NoteManager: """Manages notes, their positions, and related data""" diff --git a/Fruit_Jam/Larsio_Paint_Music/playback_controller.py b/Fruit_Jam/Larsio_Paint_Music/playback_controller.py index ae45a6c31..f6810ae3e 100755 --- a/Fruit_Jam/Larsio_Paint_Music/playback_controller.py +++ b/Fruit_Jam/Larsio_Paint_Music/playback_controller.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ Playback controller for CircuitPython Music Staff Application. Manages the playback state, button displays, and sound triggering. diff --git a/Fruit_Jam/Larsio_Paint_Music/sound_manager.py b/Fruit_Jam/Larsio_Paint_Music/sound_manager.py index 10b532970..f911ff3f6 100755 --- a/Fruit_Jam/Larsio_Paint_Music/sound_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/sound_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # sound_manager.py: CircuitPython Music Staff Application component """ diff --git a/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py b/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py index 7712473d5..1e6a513c9 100755 --- a/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ Sprite manager for CircuitPython Music Staff Application. Handles loading and managing sprite images and palettes. @@ -8,7 +11,7 @@ from displayio import Palette, TileGrid -# pylint: disable=too-many-instance-attributes,invalid-name,broad-exception-caught +# pylint: disable=too-many-instance-attributes,invalid-name,broad-except class SpriteManager: """Manages sprites and palettes for note display""" diff --git a/Fruit_Jam/Larsio_Paint_Music/staff_view.py b/Fruit_Jam/Larsio_Paint_Music/staff_view.py index 7b03c09cf..75ea89388 100755 --- a/Fruit_Jam/Larsio_Paint_Music/staff_view.py +++ b/Fruit_Jam/Larsio_Paint_Music/staff_view.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # staff_view.py: Larsio Paint Music component """ diff --git a/Fruit_Jam/Larsio_Paint_Music/ui_manager.py b/Fruit_Jam/Larsio_Paint_Music/ui_manager.py index e1368ff9c..00c953945 100755 --- a/Fruit_Jam/Larsio_Paint_Music/ui_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/ui_manager.py @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 John Park and Claude AI for Adafruit Industries +# +# SPDX-License-Identifier: MIT """ # ui_manager.py: CircuitPython Music Staff Application component """ @@ -21,7 +24,7 @@ # pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments # pylint: disable=too-many-branches,too-many-statements,too-many-public-methods -# pylint: disable=too-many-locals,attribute-defined-outside-init,possibly-used-before-assignment +# pylint: disable=too-many-locals,attribute-defined-outside-init # pylint: disable=consider-using-in,too-many-return-statements,no-else-return class UIManager: """Manages the UI elements, input, and user interaction""" From 565f1299d69c9a6aa218eba3ca05b7f50a76af7e Mon Sep 17 00:00:00 2001 From: jedgarpark Date: Fri, 9 May 2025 15:03:15 -0700 Subject: [PATCH 3/3] even more pylint --- Fruit_Jam/Larsio_Paint_Music/sound_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Fruit_Jam/Larsio_Paint_Music/sound_manager.py b/Fruit_Jam/Larsio_Paint_Music/sound_manager.py index f911ff3f6..5746f873b 100755 --- a/Fruit_Jam/Larsio_Paint_Music/sound_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/sound_manager.py @@ -29,8 +29,8 @@ # pylint: disable=invalid-name,no-member,too-many-instance-attributes,too-many-arguments -# pylint: disable=too-many-branches,too-many-statements,too-many-locals,broad-exception-caught -# pylint: disable=possibly-used-before-assignment,cell-var-from-loop +# pylint: disable=too-many-branches,too-many-statements,too-many-locals,broad-except +# pylint: disable=cell-var-from-loop,undefined-loop-variable class SoundManager: """Handles playback of both MIDI notes and WAV samples, and synthio for channels 3-5"""