User Tools

Site Tools


nano_ardule_midi_controller

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 [2025/08/06 16:21] – [Global Settings] hyjeongnano_ardule_midi_controller [2025/08/11 16:38] (current) – removed hyjeong
Line 1: Line 1:
-====== Nano Ardule MIDI Controller: 설계 요약 문서 ====== 
- 
-  * **작성자:** 정해영  
-  * **최초 작성일:** 2025년 8월 5일 
-  * **최종 수정일:**  --- //[[jeong0449@gmail.com|Haeyoung Jeong]] 2025/08/05 23:05// 
- 
-{{ :pictures:nano_ardule_20250805.png?400 |}} 
-===== 목표 ===== 
-별도의 조절 장치를 갖고 있지 않은 GM sound module의 활용도를 높이기 위한 Arduino Nano 기반의 MIDI Controller(**Nano Ardule**)를 제작한다.   
-Ardule은 **Ardu**ino + Mo**dule**의 합성어이며, 프랑스어로 ‘어려운’(arduous)이라는 뜻도 갖고 있다.   
-2개 프로그램의 layer/split이 가능하며, 음색 설정을 user program/combi 형태로 microSD 카드에 저장하고 로드할 수 있다.   
-또한 카드에 저장된 type 0 MIDI 파일을 재생하는 기능도 갖고 있다. 이 프로젝트는 GM 명령어를 공부하고 아두이노 활용의 익히기 위한 목적도 있다. 
- 
-===== 시스템 구성 ===== 
-  * **주 제어부:** Arduino Nano 호환 보드 (CH341 드라이버 필요) 
-  * **출력 대상:** SAM9703 도터보드 장착 사운드 모듈 (제한 없음) 
-  * **저장장치:** microSD 카드 (user program, combi, global settings, Type 0 MIDI 파일 저장) 
-  * **디스플레이:** 1602 I2C LCD (백라이트 포함, 파일럿 LED 불필요) 
-  * **입력 장치:** 
-    * MIDI IN (외부 키보드 컨트롤러에서 입력) 
-    * Rotary Encoder 1개 (푸시 버튼 내장) 
-    * 푸시버튼 6개: 
-      * PART SELECT 
-      * SPLIT 
-      * LOAD (+) 
-      * SAVE (-) 
-      * PLAY/PAUSE 
-      * STOP/EXIT 
-  * **출력 장치:** 
-    * MIDI Activity LED 1개 
-    * 활성화 파트 표시 LED 3개 (A, B, Drums) 
-    * MIDI OUT (TX → DIN connector) 
- 
-===== 기본 작동법 ===== 
-  * 키보드(CH1 출력) → Ardule의 MIDI IN 연결 
-  * Ardule의 MIDI OUT → GM 사운드 모듈 연결 
-  * 전원 On 시 PART A LED 점등. 기본 악기는 GM #0 (어쿠스틱 그랜드 피아노) 
-  * 로터리 인코더 회전 → 볼륨 조절   
-  * 인코더 버튼 → 'Program Change' 진입. 회전으로 선택 후 STOP/EXIT으로 복귀.   
-  * 변경값은 회전 멈춘 후 0.2초 뒤 전송됨 (LCD에 전송 완료 표시) 
- 
-  * LOAD 버튼 → 저장된 프로그램 로드. 인코더로 선택, STOP/EXIT으로 복귀 
-  * PART A 또는 B만 선택된 상태에서 LOAD → UsrPrg## 목록에서만 선택 가능 
-  * PART SELECT 순환: A → B → A+B → A (A+B 시 LED 동시 점등) 
-  * PART SELECT 더블클릭 → DRUMS 모드(CH10 출력). 한 번 더 누르면 이전 상태로 복귀 
-  * PLAY/PAUSE + STOP/EXIT 동시 누름 → Transpose 설정 진입 
- 
-===== 프로그램 편집 및 저장 ===== 
-  * PART A, B, DRUMS 중 **하나만** 선택된 상태에서 편집 가능 
-  * 인코더 버튼 반복 누름 → 다음 파라미터 순환: 
-    * Program Change 
-    * Bank Select LSB (CC#32) 
-    * Chorus (CC#93) 
-    * Reverb (CC#91) 
-    * Pan (CC#10) 
-    * Cutoff Frequency (CC#74) 
-    * Resonance (CC#71) 
-  * 인코더 회전으로 값 변경, STOP/EXIT으로 복귀 
-  * **볼륨은 편집 모드에서는 조정 대상 아님**, 그러나 저장 시 함께 기록됨 
-  * 편집 모드에서는 인코더, LOAD(+), SAVE(-), STOP/EXIT만 작동 
-  * SAVE → UsrPrg00~99 저장. 인코더로 번호 선택, 덮어쓰기 시 확인 메시지 표시 
-  * PART A와 B 설정 후 A+B 활성화 → UsrCmb00~99로 저장 가능 
- 
-===== SPLIT 설정 ===== 
-  * SPLIT 버튼 → 중앙 C 기준으로 A/B 영역 나눔 
-  * 인코더 조작 순서: 
-    * Split point 선택 
-    * Lower octave 조절 
-    * Upper octave 조절 
-    * Lower volume 
-    * Upper volume 
-  * SAVE 버튼 → 현재 SPLIT 상태를 UsrCmb로 저장 
-  * STOP/EXIT → 복귀 
- 
-===== MIDI 파일 재생 ===== 
-  * PLAY/PAUSE 버튼 → microSD 카드에서 Type 0 MIDI 파일 탐색 
-  * 파일명: file00.mid ~ file99.mid (최대 100곡) 
-  * 인코더로 곡 선택, PLAY/PAUSE로 재생 시작 
-  * 재생 중 PLAY/PAUSE → 일시 정지/재개, STOP → 처음으로 되돌림 
-  * 다음 곡 자동 재생 여부는 Global Settings에서 설정 
-  * 재생 중 키보드 입력은 CH14 (PART A), CH15 (PART B), CH10 (DRUMS)로 리매핑 
-  * STOP 후 다른 버튼 누르면 원래 상태로 복귀. 파트 설정은 복원됨 
- 
-===== Global Settings ===== 
-  * **저장 위치:** EEPROM 
-  * **진입 방법:** SPLIT 버튼 누른 상태로 전원 On 
-  * **설정 방법:** 
-    * 인코더 버튼 → 카테고리 전환 
-    * 인코더 회전 → 값 조절 
-  * **설정 항목 (기본값):** 
-    - Part A default instrument: [0] 
-    - Part B default instrument: [48] 
-    - Part A channel: [1] (1~9, 11~16) 
-    - Part B channel: [2] (1~9, 11~16) 
-    - Alternative Part A channel: [14] 
-    - Alternative Part B channel: [15] 
-    - 인코더 대기 시간(초): [0.2] (0.1~1.0) 
-    - MIDI file 정지 시 리와인드: [Y] 
-    - MIDI file 연속 재생: [N] 
-    - 곡 간 정지 시간(초): [5] (0~10) 
-    - Dump settings to microSD card: [N] 
- 
-  * EXIT 버튼 → 초기 상태로 복귀 
- 
-===== 회로 ===== 
-==== 아두이노 나노의 핀 연결 ==== 
-74HC595 시프트레지스터 IC를 쓰지 않는 조건으로 설계했기 때문에 아두이노 나노의 모든 핀이 다 쓰이고 있다.  
- 
-^ Arduino 핀 ^ 기능 ^ 설명 또는 역할 ^ 
-| D0  | MIDI IN (RX)           | 키보드에서 MIDI 수신                  | 
-| D1  | MIDI OUT (TX)          | GM 음원으로 MIDI 전송                 | 
-| D2  | Rotary Encoder CLK     | 회전 신호 A (인터럽트 가능)           | 
-| D3  | Rotary Encoder DT      | 회전 신호 B (인터럽트 가능)           | 
-| D4  | Encoder SW (버튼)      | 로터리 인코더 버튼 입력               | 
-| D5  | PART SELECT 버튼       | 파트 선택                             | 
-| D6  | SPLIT 버튼             | 스플릿 기능 진입                      | 
-| D7  | LOAD 버튼              | 저장된 프로그램 로드                  | 
-| D8  | SAVE 버튼              | 현재 설정 저장                        | 
-| D9  | MIDI Activity LED      | MIDI IN/OUT 동작 표시용               | 
-| D10 | microSD CS             | SD 카드 선택 신호                     | 
-| D11 | microSD MOSI           | SPI 데이터 출력                       | 
-| D12 | microSD MISO           | SPI 데이터 입력                       | 
-| D13 | microSD SCK            | SPI 클럭                              | 
-| A0  | Part A LED             | Part A 활성 표시                      | 
-| A1  | Part B LED             | Part B 활성 표시                      | 
-| A2  | Drums LED              | Drums 모드 표시                       | 
-| A3  | PLAY/PAUSE 버튼        | MIDI 재생 제어                        | 
-| A4  | LCD SDA                | I2C LCD 데이터                        | 
-| A5  | LCD SCL                | I2C LCD 클럭                          | 
-| A6  | STOP/EXIT 버튼         | 편집 모드/재생 종료                   | 
- 
-  * **D0/D1 (RX/TX)**: MIDI IN/OUT으로 사용할 수 있지만, USB 시리얼 통신과 공유되므로, 업로드 후에는 Arduino가 리셋되거나 통신 충돌이 일어날 수 있음. 사용 시 신중히 처리 필요 (예: 업로드 후 MIDI 회로 자동 연결 또는 점퍼). 
-  * **SPI (D10–D13)**: microSD 카드에 적합하게 잘 배정됨. 
-  * **A4/A5**: I²C LCD에 올바르게 사용됨. 
-  * **A6**: 입력 전용 아날로그 핀이므로 버튼용으로 적절. 
- 
-=== MIDI IN & OUT  === 
- 
-=== 전원 === 
- 
- 
-===== 참고 ===== 
-  * [[https://www.dosdays.co.uk/media/dream/SAM9703.PDF|SAM9703 데이터시트]] 
-{{ :pictures:sam9703.png?400 |}} 
-  * Arduino Nano pinout: [[https://www.tech-sparks.com/arduino-nano-pinout-guide/|출처]] 
-{{ :pictures:arduino_nano_pinout.png?400 |}} 
-  * [[roland_gs_variation_table|Roland GS Variation Table]] 
  
nano_ardule_midi_controller.1754464872.txt.gz · Last modified: by hyjeong