# Nano Ardule Drum Pattern Player 메뉴 구조 설명 - 작성일: **2026-01-16** > 본 문서는 Nano Ardule Drum Pattern Player 펌웨어의 > **메뉴 계층 구조와 각 단계(Level)의 역할**을 설명한다. > > UI 개선, 입력 처리(Exit / Encoder Long Press) 점검 시 > 이 문서를 **기준(authority)** 으로 삼는다. --- ## 전체 메뉴 계층 개요 Nano Ardule의 UI는 다음과 같은 **명확한 단계(Level)** 로 구성된다. ``` LEVEL 0 Main Menu ↓ LEVEL 1 Mode Root ↓ LEVEL 2 List / Browse ↓ LEVEL 3 Ready / Play ↓ LEVEL 4 Parameter Editor ``` - 사용자는 항상 **한 단계씩만 내려가거나 올라간다** - Exit 버튼은 원칙적으로 **한 단계 위(Level -1)** 로 이동한다 --- ## LEVEL 0 — Main Menu (최상위 메뉴) ### 개념 - 장치의 최상위 메뉴 - “무엇을 할 것인가?”를 선택하는 단계 ### 화면 예 - PATTERN - SONG - INTERNAL - METRONOME - SETTINGS ### 조작 - 인코더 회전: 메뉴 항목 선택 - 인코더 클릭: 선택한 모드로 진입 - Exit 버튼: **동작 없음** (이미 최상위) ### 비고 - Exit가 여기서 반응한다면 버그로 간주한다 --- ## LEVEL 1 — Mode Root (모드 진입 단계) ### 개념 - 선택한 모드의 **첫 진입 화면** - 해당 모드에서 어떤 하위 작업을 할지 결정 ### 화면 예 - PATTERN → 장르 선택 - SONG → DRUM / MULTI 선택 - INTERNAL → 비상용 패턴 모드 진입점 ### 조작 - 인코더 회전: 항목 선택 - 인코더 클릭: 하위 리스트로 진입 - Exit 버튼: **Main Menu(Level 0)로 복귀** --- ## LEVEL 2 — List / Browse (목록 탐색 단계) ### 개념 - 실제 대상(패턴, 곡, 파일)을 **탐색/선택**하는 단계 ### 화면 예 - 패턴 리스트: `BAL_P001`, `AFR_P012` 등 - SONG 파일 리스트 - INTERNAL 패턴 리스트 ### 조작 - 인코더 회전: 커서 이동 - 인코더 클릭: 선택 → READY/PLAY 화면 진입 - Exit 버튼: **Mode Root(Level 1)로 복귀** ### 주의 - Exit 버튼이 두 번 처리되면 → Mode Root를 건너뛰고 Main Menu로 튀는 느낌이 발생할 수 있음 --- ## LEVEL 3 — Ready / Play (재생 상태) ### 개념 - 선택한 패턴/곡을 **재생하거나 준비(READY)** 하는 단계 - 실제 연주와 가장 밀접한 화면 ### 화면 예 READY 상태: ``` READY> BAL_P001 INT 15/42 BPM 120 ``` PLAY 상태: ``` PLAY BAL_P001 BPM 120 1/16 ``` ### 조작 - A3 버튼: PLAY / PAUSE - 인코더 회전: BPM 조절 - **인코더 롱프레스: 파라미터 에디터 진입** - Exit 버튼: **List(Level 2)로 복귀** ### 비고 - 인코더 롱프레스는 **이 Level에서만 유효**하도록 설계됨 - 다른 Level에서 롱프레스가 동작하지 않는 것은 정상 --- ## LEVEL 4 — Parameter Editor (파라미터 편집) ### 개념 - 현재 패턴/곡의 연주 파라미터를 조정하는 최하위 단계 ### 화면 예 - Swing - Accent - Velocity - Reverb 등 ### 조작 - 인코더 회전: 값 변경 - 인코더 클릭: 값 확정 - Exit 버튼: **Ready / Play(Level 3)로 복귀** ### 주의 - Exit 이벤트가 중복 처리되면 → Level 3을 건너뛰고 List(Level 2)로 복귀하는 현상이 발생할 수 있음 --- ## 입력 처리 관련 핵심 원칙 ### 1. 인코더 롱프레스 - **LEVEL 3 (Ready / Play)에서만 의미 있음** - 다른 Level에서는 무시되거나 소비되지 않아야 한다 - 새로운 기능을 롱프레스에 추가하지 않는다 ### 2. Exit 버튼 - 항상 **한 단계 위로만 이동** - 한 입력 이벤트는 반드시 **한 Level에서만 소비**되어야 한다 - 같은 loop에서 두 번 처리되면 “두 단계 점프” 현상이 발생한다 --- ## 결론 - Nano Ardule UI는 **명확한 계층형(Level-based) 구조**를 가진다 - 대부분의 UI 버그(Exit 점프, 롱프레스 오작동)는 **Level 간 이벤트 소비 규칙이 흐트러질 때** 발생한다 - 본 문서는 향후 UI 개선 및 리팩터링의 **기준 문서(authority)** 로 사용한다