Table of Contents

Nano Ardule MIDI Controller: 설계 요약 문서

2025년 8월 28일 제작 상태

네임스페이스가 포함하는 하위 정보

목표

별도의 조절 장치를 갖고 있지 않은 GM sound module의 활용도를 높이기 위한 Arduino Nano 기반의 MIDI Controller(Nano Ardule)를 제작한다. Ardule은 Arduino + Module의 합성어이며, 프랑스어로 ‘어려운’(arduous)이라는 뜻도 갖고 있다. 2개 프로그램의 layer/split이 가능하며, 음색 설정을 user program/combi 형태로 microSD 카드에 저장하고 로드할 수 있다. 또한 카드에 저장된 type 0 MIDI 파일을 재생하는 기능도 갖고 있다. 이 프로젝트는 GM 명령어를 공부하고 아두이노의 활용법을 익히기 위한 목적도 있다.

시스템 구성

기본 작동법

프로그램 편집 및 저장

사운드 브라우저

GM/GS/XG 모듈의 음색(Program Change, Drum Kit 등)을 탐색하고 선택하기 위한 사용자 인터페이스임. 최초 계획 단계에서는 없었으나, ChatGPT와 대화하면서 이를 구체화하기 시작함. 설계 개념은 여기를 참조할 것.

이런 방식으로 하는 것이 단지 3 가지의 숫자를 설정하여 전송하는 것보다는 더 음악적이다. 실제로는 MSB=0, LSB=Variation 값, PC=Program 번호로 변환되어 전송된다.

GS Variation Table: Piano 계열의 사례

Program (PC) 기본 음색 (GM) Extension (Bank Select LSB) 설명
0 Acoustic Grand 0 (GM 기본) 표준 그랜드 피아노
1 (Bright) 밝은 톤의 그랜드
2 (Mellow) 부드럽고 따뜻한 톤
3 (Rock) 강한 어택, 밴드용
4 (Concert) 콘서트 홀용
16 (Honky-tonk) 삐걱이는 바 피아노 톤
1 Bright Piano 0 (GM 기본) 밝은 피아노
1 (Euro Piano) 팝/댄스용 톤
2 Electric Grand 0 전기 그랜드 피아노
1 (DX Grand) FM 스타일, DX 톤
3 Honky-tonk 0 GM 기본 Honky-tonk
1 (Old Upright) 낡은 업라이트 피아노
4 Electric Piano 1 0 GM Rhodes 스타일 EP
1 (Dyno EP) 다이나믹 톤 EP
2 (Phaser EP) 페이저 EP
5 Electric Piano 2 0 FM 스타일 EP
1 (DX EP Soft) 부드러운 FM EP
2 (DX EP Hard) 강한 어택 FM EP
6 Harpsichord 0 기본 하프시코드
1 (Coupled) 2단 음색 하프시코드
2 (w/ KeyOff) 키 릴리즈 음 추가
7 Clav 0 기본 클라비넷
1 (Phased) 페이저 클라비넷
2 (Wah) Wah 필터 클라비넷

SPLIT 설정

MIDI 파일 재생

드럼 패턴 자동 분할·병합 및 8.3 리네이밍

Global Settings

회로

아두이노 나노의 핀 연결

74HC595 시프트레지스터 IC를 쓰지 않는 조건으로 설계했기 때문에 아두이노 나노의 모든 핀이 다 쓰이고 있다.

Arduino 핀 기능 설명 또는 역할
D0 MIDI IN (RX)
D1 MIDI OUT (TX)
D2 Rotary Encoder CLK 회전 신호 A (인터럽트 가능)
D3 Rotary Encoder DT 회전 신호 B (인터럽트 가능)
D4 Encoder SW (버튼) 로터리 인코더 버튼 입력
D5 MULTI 버튼 MULTI-CHANNEL 모드 진입
D6 STOP/EXIT 버튼 편집 모드/재생 종료
D7 SAVE/+ 버튼 현재 설정 저장 또는 +1
D8 LOAD/- 버튼 저장된 프로그램 로드 또는 -1
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 PART SELECT 버튼 파트 선택(외부 풀업 저항 연결함)

매우 불친절한 실체배선도(2025년 8월 26일 버전). 당연히 오류가 있을 수 있음!

전원 연결 요령

[5V 안정화 어댑터 or DC-DC Step-down] → (전원 분배)
                                         ├── Arduino Nano 5V 핀
                                         ├── LCD 모듈
                                         ├── microSD 모듈
                                         └── LED, 센서 등

Decoupling capacitor (also reffered to as bypass capacitor)

https://rheingoldheavy.com/bypass-capacitors/

인코더 신호 처리

MIDI IN & OUT schematics

opto-isolator는 PC900을 사용하였다. 아래 회로도에서는 표시하지 않았으나 PC900의 6번핀(+5V)과 그라운드 사이에 바이패스 커패시터를 연결해 놓았다. 스케치 업로드 시에는 RX/TX로 연결되는 회로를 끊어야 PC와 아두이노 나노 사이에 시리얼 통신이 원활하게 진행된다(점퍼 처리).

5핀 DIN MIDI 커넥터에서 실제 신호가 왕복하는 핀은 다음의 두 개이다. 2번 핀은 케이블 쉴드 접지용이고, 1과 3은 쓰지 않는다.

2025년 8월 26일 현재 MIDI in 회로가 제대로 작동하지 않는다. 허, 돌아버리겠다. 이미 DREAM SAM9703 도터보드 작동을 위해 만들어서 잘 작동함을 입증한 회로인데…(증거물) 8월 27일, 만능기판 뒤 패드 사이를 잘 긁어내고 에탄올로 세척하여 문제를 해결하였다!

4번 핀에 달린 280Ω 저항은 너무 낮은 값이다?

일부 회로/쉴드(특히 6N138 다알링턴 출력용)에서 220–330 Ω을 쓰는 예가 있지만, PC900은 디지털(오픈콜렉터) 타입이라 그렇게 낮추면 싱크 전류가 과다해져서 동작이 불안정해지거나 스펙을 초과한다고 한다.

MIDI IN 신호 처리 회로 점검 가이드

참고