구형 오르간을 MIDI 컨트롤러로 개조하기: 아두이노 메가 기반 완벽 가이드
프로젝트 개요
버려지거나 방치된 구형 전자 오르간 콘솔을 MIDI 마스터 키보드 컨트롤러로 변환하는 프로젝트입니다. 아두이노 메가 2560 한 대로 건반(매뉴얼 2단)과 페달보드의 키 온/오프를 감지해 표준 MIDI 메시지(Note On/Off, Control Change)를 DIN 미디 단자 또는 USB로 출력합니다. 매트릭스 방식과 버스(Bussed) 방식 두 가지 키보드 스캔 아키텍처를 모두 지원하며, 익스프레션 페달(볼륨/표현 페달)용 포텐셔미터 입력도 최대 3개까지 확장 가능합니다.
⚠️ 안전 주의사항 (반드시 읽고 진행하세요)
- 오르간 내부에는 고전압(진공관 타입 경우 수백 볼트) 또는 대용량 커패시터 잔류 전하가 있을 수 있습니다. 반드시 전원 플러그를 뽑고 작업하세요.
- 오래된 부품(스위치, 배선, 납땜 단자)은 열화되어 파손되기 쉽습니다. 무리한 힘 가하지 말고 조심스럽게 다루세요.
- 이 프로젝트는 오르간 원래 음원 회로를 비활성화합니다. 복구 불가능할 수 있으니 신중히 결정하세요.
- 전자 회로 지식과 납땜 경험이 부족하다면 자격을 갖춘 기술자와 상담 후 진행하세요.
- 본 가이드대로 작업 중 발생한 기기 손상, 상해에 대해 작성자는 책임지지 않습니다.
필요한 부품 및 재료
| 부품 | 수량 | 비고 |
| 아두이노 메가 2560 | 1 | 플라스틱 마운트 플레이트 포함 권장 |
| DIN 5핀 미디 플러그 (수놈) | 1 | 패널 마운트 타입 권장 |
| 220Ω 저항 | 1 | 미디 출력 전류 제한용 (TX 라인 직렬) |
| USB A-B 케이블 | 1 | 펌웨어 업로드 및 전원 공급용 |
| AWM 케이블 (10심 이상) | 1롤 | 건반 배선용, 차폐선 권장 |
| 수핀 헤더 40핀 1열 (2.54mm) | 1 | 아두이노 연결용, 나사 단자 보드 대체 가능 |
| 슬라이드 포텐셔미터 (10kΩ 리니어) | 1~3 | 익스프레션 페달용 (옵션) |
| IDC 소켓 10핀 (옵션) | 여유분 | 케이블 탈착식 구성 시 편리 |
| 수-수 점퍼 와이어 (옵션) | 여유분 | IDC 소켓 사용 시 아두이노 연결용 |
필요한 도구
- 납땜 인두, 무연 납, 플럭스
- 와이어 스트리퍼, 니퍼, 롱노즈 플라이어, 평행 플라이어
- 멀티미터 (스위치 타입 확인용)
- 전동 드릴, 드릴 비트 (오르간 케이스 구멍 가공용)
- 소형 목나사(#4), 기계 나사/너트/와셔 (#4)
- 케이블 타이, 열수축 튜브, 전기 테이프
소프트웨어
작업 전 확인 사항 (1단계: 오르간 구조 파악)
- 키보드 스캔 방식 식별
- 매트릭스(Matrixed): 행(Row) × 열(Column) 교차점에 다이오드+스위치. 예: 6행 × 11열 = 61건반.
- 버스(Bussed): 공통 버스 라인 1개에 61개 스위치가 병렬 연결, 각 스위치 다른 쪽은 개별 라인.
본인 오르간 방식에 맞는 펌웨어를 선택해야 합니다. (아래 코드 참조)
- 스위치 타입 확인 (멀티미터 다이오드/저항 모드)
- NO (Normally Open): 키 누르면 회로 닫힘 (일반적)
- NC (Normally Closed): 키 누르면 회로 열림 (페달보드에 흔함)
- 타입이 다르면 펌웨어 내 로직 반전 필요 (코드 내 주석 참조)
- 분해 및 아두이노 장착 위치 선정
- 건반/페달 접점 접근 가능한지, 아두이노 고정 공간 확보되는지 확인
- 전원 공급용 3핀 플러그/잭, 미디 단자 장착용 홀 가공 계획
- 매트릭스 크기 확인
- 예시 오르간: 매뉴얼 2단 각 6×11(61키), 페달 6×7(32키)
- 8×8 매트릭스라면 코드/배선 수정 또는 재배선 필요
배선 및 조립 단계별 가이드
2단계: 아두이노 본체 고정
동봉된 플라스틱 플레이트에 #4 기계 나사로 아두이노 고정 → 오르간 내부 나무 판에 #4 목나사로 플레이트 고정. 케이블 길이 여유 있게 배치할 위치 선정.
3단계: 케이블 재단 및 피복 벗기기
매트릭스 방식: 각 건반/페달의 행(6선), 열(매뉴얼 11선, 페달 7선)별로 AWM 케이블 2가닥씩 재단. 오르간 내부 기존 배선 경로 따라 여유 있게 라우팅.
버스 방식: 6가닥 AWM 케이블(각 10선) + 61번째 키용 단선 1가닥 준비.
케이블 끝단 심선 분리 → 와이어 스트리퍼로 피복 벗기기.
4단계: 케이블 끝단 수핀 헤더/나사 단자에 납땜
아두이노 핀맵(회로도 참조)에 맞춰 각 심선을 수핀 헤더 핀에 납땜. 나사 단자 보드 사용 시 해당 단자에 조임.
5단계: 스위치 측 케이블 납땜 (가장 손 많이 감)
매트릭스 방식:
- 기존 배선이 있으면 디솔더링 또는 커팅 후 제거.
- 행 배선(6선)은 그대로 두고, 열 배선(다이오드 쪽)만 아두이노 쪽 케이블로 교체.
- 다이오드 극성 중요: 캐소드(줄무늬)가 스위치 쪽, 애노드가 열(Column) 라인 쪽으로 향하게.
- 케이블 타이로 기존 배선 하네스 따라 깔끔하게 정리.
버스 방식:
- 각 스위치의 버스 반대편 단자에 다이오드 납땜 (캐소드가 스위치 쪽).
- 다이오드 애노드를 케이블 10심 중 하나에 연결, 6개 케이블로 60키 커버, 나머지 1키는 별도 선.
6단계: 미디 출력 회로 구성
DIN 5핀 미디 플러그 핀배치(앞면 기준):
- 핀 2: 그라운드 (실드)
- 핀 4: TX 데이터 (+) → 220Ω 저항 → 아두이노 TX1 (핀 18)
- 핀 5: TX 데이터 (-) → 아두이노 GND
- 핀 1, 3: 미사용 (NC)
※ 아두이노 메가는 하드웨어 시리얼 포트 4개 보유: Serial(USB), Serial1(핀 18/19), Serial2(핀 16/17), Serial3(핀 14/15). 본 프로젝트는 Serial1(핀 18=TX, 19=RX)을 미디 출력용으로 사용. 보드레이트 31250 bps.
7단계: 헤더를 아두이노에 꽂기
회로도 핀맵대로 모든 헤더 삽입. IDC 소켓 + 수-수 점퍼 조합 사용 시 배선 변경 용이.
8단계: 펌웨어 업로드
- USB 케이블로 아두이노-PC 연결
- 아두이노 IDE에서 본인 키보드 타입에 맞는 코드(매트릭스/버스) 복사 → 새 스케치에 붙여넣기
- 보드: "Arduino Mega or Mega 2560", 포트 선택 → 업로드
9단계: 테스트 및 검증
- 미디 어댑터(예: USB-MIDI 인터페이스)로 아두이노 미디 아웃 → PC 연결
- 미디 모니터 프로그램 실행 → 모든 건반/페달 누름/뗌 시 올바른 Note On/Off(채널 1~3, 벨로시티 100) 발생 확인
- 익스프레션 페달(포텐셔미터) 동작 시 CC#11(채널 16~18) 값 0~127 부드럽게 변하는지 확인
- 독립 실행 시: 5V 어댑터(아두이노 전원 잭) 또는 USB 파워 뱅크로 전원 공급
펌웨어 상세: 매트릭스 키보드 버전
아래 코드는 6×11 매트릭스 매뉴얼 2대(채널 1, 2), 6×7 매트릭스 페달보드 1대(채널 3, NC 스위치 대응), 포텐셔미터 2개(채널 16, 17)를 지원합니다.
// Arduino Mega Midi Controller v21
// Author: Larason2
// 매트릭스: Keyboard A(Manual 1), B(Manual 2) = 6x11, C(Pedal) = 6x7
// 포텐셔미터: A0(Ch16), A1(Ch17) → CC#11
byte keysA[11][6], keysB[11][6], keysC[7][6];
byte lastA[11][6], lastB[11][6], lastC[7][6];
const int noteOn1 = 144, noteOff1 = 128; // Ch1
const int noteOn2 = 145, noteOff2 = 129; // Ch2
const int noteOn3 = 146, noteOff3 = 130; // Ch3
const int velocity = 100;
const int chan6 = 181, chan7 = 182; // CC 채널 16, 17 (0xB0+15, 0xB0+16)
const int Exp = 11; // CC#11 Expression
int LastPot6 = 1, LastPot7 = 1;
void setup() {
Serial1.begin(31250); // 미디 전용 하드웨어 시리얼
// 행 핀(풀업 입력): 2, 22, 24, 26, 28, 30
// 열 핀(출력): 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52 (A: 11열)
// B: 3, 23, 25, 27, 29, 31 / 열: 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53
// C: A2~A7 (풀업 입력) / 열: A8~A14 (출력)
// 핀모드 초기화 생략 (코드 참조)
}
void loop() {
// --- Keyboard A 스캔 (열 단위로 행 읽기) ---
for (int col = 0; col < 11; col++) {
// 해당 열 출력 LOW, 나머지 입력
// keysA[col][row] = digitalRead(행핀);
}
// --- Keyboard B 스캔 (동일 로직) ---
// --- Keyboard C 스캔 (NC 스위치이므로 데이터 반전) ---
// --- 상태 변화 감지 → MidiSend(noteOn/Off, note, velocity) ---
// --- 포텐셔미터 읽기 → 변화량 >= 8이면 CC#11 전송 ---
}
void MidiSend(int cmd, int note, int val) {
Serial1.write(cmd);
Serial1.write(note);
Serial1.write(val);
}
전체 코드는 원문 첨부 파일을 참조하세요. (지면 관계상 핵심 로직만 요약)
펌웨어 상세: 버스 키보드 버전
버스 방식 전용 펌웨어로, 4개 키보드(각 61키) + 포텐셔미터 3개 지원. 핀 2~53, A0~A8을 키 입력 풀업으로, A9~A12를 버스 선택 출력으로, A13~A15를 포텐셔미터 입력으로 사용.
// Arduino Mega Midi Controller 61x4 + 3 Pots
// 버스 방식: 공통 버스 라인(A9~A12)을 차례로 LOW 드라이브하며 61개 키 읽기
// 핀 2~53, A0~A8 = 키 입력 (풀업)
// A9~A12 = 버스 선택 (출력)
// A13~A15 = 포텐셔미터 (아날로그 입력)
전체 코드는 원문 첨부 파일을 참조하세요.
익스프레션 페달 하드웨어 제작 가이드 (포텐셔미터 마운트)
기존 페달 레버에 연동해 포텐셔미터 슬라이더를 작동시키는 기계 장치 제작법입니다.
필요 자재
- 아크릴 시트 8×10 inch (투명, 3mm 두께 권장)
- PTFE(테플론) 블록 3/4″ 두께
- 알루미늄 로드 1/4″ 직경 (철물점 구매)
- JB Weld 에폭시 접착제
- 리니어 포텐셔미터 10kΩ (슬라이드 타입)
- 소형 가구 경첩(힌지), 브레이스(꺾쇠)
- 아이 볼트(고리 볼트), 기계 나사/너트/와셔 세트
- 목나사 #4 (짧은 것)
- 테플론 락 와셔 (페달 축 고정용)
필요 도구
- 취미용 칼, 직각 자, 보석용/일반 드라이버, 몽키 렌치, 펜치
- 전동 드릴 + 드릴 비트 세트, 취미용 톱, 벤치 바이스, 소형 목공 클램프
- 사포(고운 입자), 아이스크림 막대(에폭시 혼합용), 골판지 조각, 젖은 천
제작 순서 요약
- 아크릴 시트 재단: 메인 플레이트 3″×4.5″, 스페이서 3″×0.5″, 힌지 플레이트 2.4″×0.3″
- 테플론 블록 3/4″ 잘라 3″×1.5″×3/4″ 블록 제작 → 알루미늄 로드 관통 구멍(1/4″ 비트) 가공
- 포텐셔미터 본체와 아크릴 메인 플레이트 사이에 스페이서 끼워 JB Weld로 접착 → 24시간 경화
- 힌지(아크릴 하단), 테플론 블록(아크릴 상단) 기계 나사/너트로 고정
- 포텐셔미터 슬라이더 돌기에 아이 볼트 부착 → 알루미늄 로드에 연결 (필요시 JB Weld 추가 고정)
- 알루미늄 로드 타단에 가구 브레이스 부착 → 페달 기존 브라켓 구멍에 기계 나사+테플론 락 와셔로 고정
- 힌지 하단을 오르간 바닥 목나사로 고정 (아크릴 플레이트가 힌지와 바닥 사이 위치하도록)
- 페달 밟았을 때 포텐셔미터 슬라이더가 0~전체 스트로크 범위에서 부드럽게 움직이는지 확인
자주 묻는 질문 및 트러블슈팅
- 버스 방식 코드 미테스트 상태: 작성자 미검증. 문제 발견 시 댓글로 제보 바랍니다.
- 다이오드 극성: 버스 방식은 캐소드(줄무늬)가 스위치 쪽, 매트릭스 방식은 캐소드가 열(컬럼) 쪽. 반대면 고스트 키/누락 발생.
- 핀 13 내장 LED 간섭: 버스 방식에서 핀 13 사용 시 내장 LED가 풀다운 역할 해 키 감지 오류 유발. LED 제거(납땜 인두 2개로 떼어내기 또는 롱노즈로 조심히 파쇄) 필요.
- 인산청동 버스 바: 산화로 접점 불량 잦음. 버스 라인 전체를 한 선으로 묶고, 각 키 접점도 병렬로 묶어 접촉 면적 확보 권장. 그래도 불안정하면 12V 키잉 회로 필요(본 프로젝트 미지원).
- 미디 채널 매핑: 매트릭스 코드 기준 Manual 1=Ch1, Manual 2=Ch2, Pedal=Ch3. DAW/신디사이저 설정에서 채널 매치 확인.
회로도
프로젝트 페이지에서 다음 회로도 확인 가능:
- 6×11 매트릭스 키보드/페달보드 + 포텐셔미터 배선도
- 버스 방식 키보드 + 포텐셔미터 배선도
마치며 & 추가 지원
아두이노 프로젝트 허브 댓글 알림이 작동하지 않을 수 있습니다. 더 빠른 답변을 원하시면 아두이노 공식 포럼 또는 작성자 지정 포럼 게시판에 글 남겨 주세요.
이 프로젝트로 수십 년 된 오르간이 현대적인 MIDI 컨트롤러로 다시 태어나, DAW 가상 악기, 신디사이저, 라이브 공연 장비와 연결되어 새로운 음악적 생명을 얻길 바랍니다. 즐거운 메이킹 되세요!