nano_ardule_midi_controller
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| nano_ardule_midi_controller [2025/08/06 16:14] – [아두이노 나노의 핀 연결] hyjeong | nano_ardule_midi_controller [2025/08/11 16:38] (current) – removed hyjeong | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Nano Ardule MIDI Controller: 설계 요약 문서 ====== | ||
| - | |||
| - | * **작성자: | ||
| - | * **최초 작성일: | ||
| - | * **최종 수정일: | ||
| - | |||
| - | {{ : | ||
| - | ===== 목표 ===== | ||
| - | 별도의 조절 장치를 갖고 있지 않은 GM sound module의 활용도를 높이기 위한 Arduino Nano 기반의 MIDI Controller(**Nano Ardule**)를 제작한다. | ||
| - | Ardule은 **Ardu**ino + Mo**dule**의 합성어이며, | ||
| - | 2개 프로그램의 layer/ | ||
| - | 또한 카드에 저장된 type 0 MIDI 파일을 재생하는 기능도 갖고 있다. 이 프로젝트는 GM 명령어를 공부하고 아두이노 활용의 익히기 위한 목적도 있다. | ||
| - | |||
| - | ===== 시스템 구성 ===== | ||
| - | * **주 제어부: | ||
| - | * **출력 대상:** SAM9703 도터보드 장착 사운드 모듈 (제한 없음) | ||
| - | * **저장장치: | ||
| - | * **디스플레이: | ||
| - | * **입력 장치:** | ||
| - | * 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 (어쿠스틱 그랜드 피아노) | ||
| - | * 로터리 인코더 회전 → 볼륨 조절 | ||
| - | * 인코더 버튼 → ' | ||
| - | * 변경값은 회전 멈춘 후 0.2초 뒤 전송됨 (LCD에 전송 완료 표시) | ||
| - | |||
| - | * LOAD 버튼 → 저장된 프로그램 로드. 인코더로 선택, STOP/ | ||
| - | * 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/ | ||
| - | * **볼륨은 편집 모드에서는 조정 대상 아님**, 그러나 저장 시 함께 기록됨 | ||
| - | * 편집 모드에서는 인코더, LOAD(+), SAVE(-), STOP/ | ||
| - | * 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/ | ||
| - | * 재생 중 PLAY/PAUSE → 일시 정지/ | ||
| - | * 다음 곡 자동 재생 여부는 Global Settings에서 설정 | ||
| - | * 재생 중 키보드 입력은 CH14 (PART A), CH15 (PART B), CH10 (DRUMS)로 리매핑 | ||
| - | * STOP 후 다른 버튼 누르면 원래 상태로 복귀. 파트 설정은 복원됨 | ||
| - | |||
| - | ===== Global Settings ===== | ||
| - | * **저장 위치:** EEPROM | ||
| - | * **진입 방법:** SPLIT 버튼 누른 상태로 전원 On | ||
| - | * **설정 방법:** | ||
| - | * 인코더 버튼 → 카테고리 전환 | ||
| - | * 인코더 회전 → 값 조절 | ||
| - | |||
| - | * 설정 항목 (기본값): | ||
| - | 1. Part A default instrument: [0] | ||
| - | 2. Part B default instrument: [48] | ||
| - | 3. Part A channel: [1] (1~9, 11~16) | ||
| - | 4. Part B channel: [2] (1~9, 11~16) | ||
| - | 5. Alternative Part A channel: [14] | ||
| - | 6. Alternative Part B channel: [15] | ||
| - | 7. 인코더 대기 시간(초): | ||
| - | 8. MIDI file 정지 시 리와인드: | ||
| - | 9. MIDI file 연속 재생: [N] | ||
| - | 10. 곡 간 정지 시간(초): | ||
| - | 11. 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 버튼 | ||
| - | | A4 | LCD SDA | I2C LCD 데이터 | ||
| - | | A5 | LCD SCL | I2C LCD 클럭 | ||
| - | | A6 | STOP/EXIT 버튼 | ||
| - | |||
| - | * **D0/D1 (RX/TX)**: MIDI IN/ | ||
| - | * **SPI (D10–D13)**: | ||
| - | * **A4/A5**: I²C LCD에 올바르게 사용됨. | ||
| - | * **A6**: 입력 전용 아날로그 핀이므로 버튼용으로 적절. | ||
| - | |||
| - | === MIDI IN & OUT === | ||
| - | |||
| - | === 전원 === | ||
| - | |||
| - | |||
| - | ===== 참고 ===== | ||
| - | * [[https:// | ||
| - | {{ : | ||
| - | * Arduino Nano pinout: [[https:// | ||
| - | {{ : | ||
| - | * [[roland_gs_variation_table|Roland GS Variation Table]] | ||
nano_ardule_midi_controller.1754464489.txt.gz · Last modified: by hyjeong
