User Tools

Site Tools


nano_ardule_midi_controller:step-by-step_coding_roadmap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
nano_ardule_midi_controller:step-by-step_coding_roadmap [2025/08/29 17:38] – [단계 5. 라우팅: Layer & Split] hyjeongnano_ardule_midi_controller:step-by-step_coding_roadmap [2025/10/20 11:01] (current) – [단계 6. UI 모드·화면 템플릿·안전 탈출] hyjeong
Line 193: Line 193:
  
 ===== 단계 5. 라우팅: Layer & Split ===== ===== 단계 5. 라우팅: Layer & Split =====
-**목표:** 입력 노트를 A/B 다중채널로 복제 또는 음역대로 분기. 당초 단계 목표는 아주 간단하게 설정하였으나, SAM9703 도터보드에 장착된 GMS963200-B(4 MB ROM)의 모든 소리에 접근하기 위한 **사운드 브라우저** 기능이 들어가면서 다소 복잡해졌다. 사운드 브라우저에 진입하려면 인코더 버튼을 길게 눌러야 한다.+**목표:** 입력 노트를 A/B 다중채널로 복제 또는 음역대로 분기. 당초 단계 목표는 아주 간단하게 설정하였으나, SAM9703 도터보드에 장착된 GMS963200-B(4 MB ROM)의 모든 소리에 접근하기 위한 **[[sound_browser|GS 사운드 브라우저 (Sound Browser)]]** 기능이 들어가면서 다소 복잡해졌다. 사운드 브라우저에 진입하려면 인코더 버튼을 길게 눌러야 한다.
  
-이 단계에서는 Nano Ardule MIDI Controller의 **핵심 기능**을 구현하는 것이므로 매우 주의깊게 진행하여 실패가 없도록 해야 한다.+이 단계에서는 Nano Ardule MIDI Controller의 **핵심 기능**을 구현하는 것이므로 매우 주의깊게 진행하여 실패가 없도록 해야 한다. 8월 마지막 주말에 꽤 공을 들여서 코딩을 구현하였다. 애초에 구상하였던 작동 방식도 조금씩 합리적으로 변하고 있다. 
 +  * (인코더 회전 step 변경) 프로그램이나 뱅크 변경은 현 방식대로 하되 나머지 수치 변경은 step = 3으로 변경(6으로 해 보았으나 한번에 너무 큰 값이 바뀜) 
 +  * Reverb/Chorus의 각 채널별 초기 센드 설정: step_05_routing_layer_split_v1.6b_cycle_pc_rvb_cho_plusminus.ino 
 +  * Single channel mode(A, B, Drums)와 multi-channel mode(A+B for layering, A/B for splitting)의 완벽한 분리(2025년 9월 4일). 따라서 split라는 용어는 코드에만 남게 되며, 장기적으로는 multi로 바꿀 것이다.
  
 **해야 할 일** **해야 할 일**
Line 206: Line 209:
   * Layer 시 두 악기 겹침이 안정적   * Layer 시 두 악기 겹침이 안정적
  
-**산출물:**  +** Split 세부적으로 들여다보기 ** 
-  * + 
 +생각보다 고려할 것이 많다! 
 +  * MVP(권장 최소 세트) — 가볍고 체감효과 큼 
 +    - 하드 스플릿(엔트포인트) 
 +    - 듀얼 볼륨 + ratio 모드(A↑면 B↓) 
 +    - 옥타브/세미톤 트랜스포즈(CPU 부담 거의 없고 코드 짧음) 
 +  * PLUS(여유 있으면) 
 +    - 오버랩 ON/OFF (경계 ±N노트) <- 겹치는 구간은 양쪽에 NoteOn/Off를 중복 전송만 하면 됨(연산량 낮음) 
 +    - 페달/모드 휠 등 존별 라우팅 
 + 
 +** 산출물 ** 
 +  * {{:nano_ardule_midi_controller:nano_ardule_browserpreview_userguide_ko_20250907.docx|}}
  
 ---- ----
  
 ===== 단계 6. UI 모드·화면 템플릿·안전 탈출 ===== ===== 단계 6. UI 모드·화면 템플릿·안전 탈출 =====
-**목표:** 버튼으로 모드 전환, 인코더로 파라미터 순환 편집+**목표:** 버튼으로 모드 전환, 인코더로 파라미터 순환 편집. 사운드 브라우저(인코더 버튼 길게 눌러 진입)을 여기에서 구현한다.
  
 **해야 할 일** **해야 할 일**
Line 225: Line 239:
   * 모드 간 전환 시 화면 깜빡임 최소, 조작 혼동 없음   * 모드 간 전환 시 화면 깜빡임 최소, 조작 혼동 없음
  
-**산출물:** `/tests/step_06_ui_modes.ino`+사실 단계 5~6의 경계가 모호해졌다. 단일채널(A or B part 하나만 활성) 및 멀티채널(레이어: A+B, 스플릿:A/B) 기능 및 프로그램 편집 기능까지는 하나의 스케치 파일에서 해결하였는데, SD카드에 담긴 MIDI 파일(드럼 패턴 포함)까지 재생하는 기능을 넣기 시작하니 메모리가 꽉 차서 업로드가 되지 않고 있다. 이에 대해서는 블로그의 [[https://blog.genoglobe.com/2025/09/nano-ardule.html|메모리 한계에 부딪친 Nano Ardule 컨트롤러]]라는 글에서 대략적인 해결 방안을 기록해 두었다. 여기에서 제안한 바를 이용하여 최적화를 먼저 실시한 뒤, 스케치 파일을 나누어서 나머지 개발을 진행해야 할 것이다.  --- //[[jeong0449@gmail.com|Haeyoung Jeong]] 2025/09/09 13:10// 
 + 
 +**산출물:** 
 +  * {{:nano_ardule_midi_controller:step_06_20250911_v1.zip|}} 
 +  * {{:nano_ardule_midi_controller:step_06_20250921_v1.zip|}} - EEPROM을 이용한 설정 저장/복원 기능만 넣지 않은 최종 단계로 간주할 수 있음. 2025년 10월 20일 유튜브에 올린 [[https://youtu.be/ZyeiwCxAJcU?si=ErBn1CXbERk9FbB0|시연 영상]]은 이 단계까지 구현한 것이다.
  
 ---- ----
Line 253: Line 271:
  
 ===== 단계 8. microSD & Type-0 MIDI 플레이어 ===== ===== 단계 8. microSD & Type-0 MIDI 플레이어 =====
 +메모리가 매우 부족해져서 microSD 카드에 담긴 MIDI 파일 재생 기능은 완전히 독립시키기로 한다. SD 카드를 읽다가 read error가 나는 문제로 정말 고생을 많이 했다.
 +
 **목표:** SD에서 곡 스캔, 선택 재생/일시정지/정지 **목표:** SD에서 곡 스캔, 선택 재생/일시정지/정지
  
nano_ardule_midi_controller/step-by-step_coding_roadmap.1756456722.txt.gz · Last modified: by hyjeong