Arduino로 MIDI 컨트롤러를 만드는 방법

Arduino로 MIDI 컨트롤러를 만드는 방법

악기와 노이즈 박스 컬렉션을 모은 음악가로서 겸손한 Arduino는 맞춤형 MIDI 컨트롤러를 만드는 완벽한 도구입니다. Raspberry Pi가 사물 인터넷(IoT) 프로젝트의 왕관을 차지했을 수 있지만 간단한 Arduino Uno(Arduino의 다른 유형은 무엇입니까? )는 이 프로젝트에 충분한 성능을 제공합니다.





아두이노를 처음 사용하시나요? 걱정 마세요, 우리는 완전한 아두이노 초보자 가이드 이 프로젝트를 시작하기 전에 읽어보세요.





미디란?

MIDI는 Musical Instrument Digital Interface의 약자입니다. 음악 장치가 서로 통신하는 표준 방법을 설명합니다. 전자 키보드를 소유하고 있다면 MIDI 인터페이스가 있을 것입니다. MIDI 구현과 관련된 몇 가지 기술적인 세부 사항이 있지만 MIDI는 오디오가 아니라는 점을 기억하는 것이 중요합니다! MIDI 데이터는 다른 장치가 다른 사운드를 만들거나 매개변수를 제어하기 위해 구현할 수 있는 간단한 명령 세트(하나의 명령은 '메시지'라고 함)입니다.





MIDI는 16채널을 지원합니다. 이것은 각 케이블이 서로 독립적으로 통신하는 16개의 서로 다른 장치를 지원할 수 있음을 의미합니다. 장치는 5핀 DIN 케이블을 사용하여 연결됩니다. DIN은 'German Institute for Standardization'의 약자로 커넥터 내부에 5개의 핀이 있는 케이블입니다. USB는 종종 5핀 DIN 대신 사용되거나 USB-MIDI 인터페이스를 사용할 수 있습니다.

MIDI-케이블-남



제어 변경 및 프로그램 변경

MIDI 메시지에는 컨트롤 변경과 프로그램 변경의 두 가지 주요 유형이 있습니다.

컨트롤 변경(CC) 메시지에는 컨트롤러 번호와 0에서 127 사이의 값이 포함됩니다. CC 메시지는 종종 볼륨이나 피치와 같은 설정을 변경하는 데 사용됩니다. MIDI를 허용하는 장치는 기본적으로 어떤 채널과 메시지가 설정되고 변경하는 방법(MIDI 매핑이라고 함)을 설명하는 설명서와 함께 제공되어야 합니다.





프로그램 변경(PC) 메시지는 CC 메시지보다 간단합니다. PC 메시지는 단일 숫자로 구성되며 장치의 프리셋 또는 패치를 변경하는 데 사용됩니다. PC 메시지는 때때로 '패치 변경'으로 알려져 있습니다. CC 메시지와 유사하게 제조업체는 특정 메시지에 의해 어떤 사전 설정이 변경되었는지에 대한 문서를 제공해야 합니다.

필요한 것

  • 아두이노
  • 5핀 DIN 암 소켓
  • 2 x 220옴 저항기
  • 2 x 10k 옴 저항기
  • 2 x 순간 스위치
  • 훅업 와이어
  • 브레드보드
  • 미디 케이블
  • MIDI 장치 또는 USB 인터페이스
물 및 목재 5 개 DIN 5 핀 PCB 장착 PC 키보드 용 암 소켓 지금 아마존에서 구매하세요

구축 계획

이 프로젝트는 매우 간단합니다. 물론 필요에 따라 버튼이나 하드웨어를 더 추가할 수 있습니다. 거의 모든 Arduino가 적합합니다. 이 예에서는 3개의 핀만 필요합니다. 이 프로젝트는 프로그램을 제어하는 ​​두 개의 버튼, 데이터를 전송하는 MIDI 포트 및 메시지를 수신하는 장치로 구성됩니다. 이 회로는 여기에서 브레드보드에 구축되었지만 견고한 솔루션을 위해 이를 프로젝트 상자 및 납땜 커넥터로 전송할 수 있습니다.





회로 어셈블리

Arduino-미디-컨트롤러-회로

미디 연결

MIDI 핀아웃

MIDI 소켓을 다음과 같이 연결합니다.

  • 220옴 저항을 통해 Arduino 전송(TX) 1에 대한 MIDI 핀 5
  • 220 옴 저항을 통해 Arduino + 5V에 대한 MIDI 핀 4
  • Arduino 접지에 대한 MIDI 핀 2

버튼 연결

버튼은 Arduino가 '보는'저항을 변경하여 작동합니다. Arduino 핀은 스위치를 통해 직접 접지( 낮은 ) 10k 옴 저항(값을 낮게 유지하는 '풀다운' 저항)을 통해. 버튼을 누르면 회로에 보이는 값이 저항 없이 +5v로 변경됩니다( 높은 ). Arduino는 다음을 사용하여 이 변경 사항을 감지할 수 있습니다. 디지털 읽기(핀) 명령. 버튼을 Arduino 디지털 입/출력(I/O)의 핀 6과 7에 연결합니다. 두 버튼 모두 연결:

  • 버튼의 왼쪽을 +5V로
  • 10k 옴 저항을 통해 Arduino 접지에 대한 버튼의 오른쪽
  • Arduino 핀(6 또는 7)에 대한 버튼의 오른쪽

MIDI 테스트

이제 모든 하드웨어가 완료되었으므로 테스트할 시간입니다. USB-MIDI 인터페이스(많은 오디오 인터페이스에서 가능)와 MIDI 케이블이 필요합니다. 브레드보드에 연결된 MIDI 포트는 데이터를 전송하므로 출력입니다. 컴퓨터가 데이터를 수신하고 있으므로 입력입니다. 이 프로젝트는 우수한 Arduino를 사용합니다 미디 라이브러리 v4.2 Forty Seven Effects에 의해. 라이브러리를 설치했으면 다음으로 이동하여 코드에 포함할 수 있습니다. 스케치 > 라이브러리 포함 > MIDI .

또한 들어오는 MIDI 데이터를 모니터링하는 프로그램이 필요합니다.

Arduino를 컴퓨터에 연결하고 다음 테스트 코드를 업로드하십시오(올바른 보드와 포트를 선택하는 것을 잊지 마십시오. 도구 > 보드 그리고 도구 > 포트 메뉴).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

이 코드는 CC 메시지를 보내고 1초를 기다린 다음 PC 메시지를 보낸 다음 1초를 무기한 기다립니다. 모든 것이 올바르게 작동하면 MIDI 모니터에 메시지가 표시되어야 합니다.

아무 일도 일어나지 않으면 당황하지 마십시오! 문제 해결 시도:

  • 모든 연결이 올바른지 확인하십시오.
  • MIDI 포트가 올바르게 배선되었는지 확인하십시오. 외부 가장자리에 2개의 예비 핀이 있어야 합니다.
  • 회로가 올바른지 다시 확인하십시오.
  • 회로가 MIDI 케이블로 USB-MIDI 인터페이스에 연결되어 있는지 확인하십시오.
  • MIDI 케이블이 연결되어 있는지 확인하십시오. 입력 USB-MIDI 인터페이스에서
  • Arduino에 전원이 있는지 확인하십시오.
  • USB-MIDI 인터페이스에 맞는 드라이버를 설치하십시오

당신이있는 경우 아직 문제가 있는 경우 브레드보드를 ​​확인하는 것이 좋습니다. 저렴한 보드는 때때로 매우 일관성이 없고 품질이 낮을 수 있습니다. 이 프로젝트를 진행하는 동안 제게 일어난 일입니다.

버튼 테스트

이제 버튼이 올바르게 작동하는지 테스트할 시간입니다. 다음 테스트 코드를 업로드합니다. 이 부분을 테스트하기 위해 MIDI를 연결할 필요가 없습니다.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

이 코드를 실행하고(USB 케이블은 연결된 상태로 유지) 직렬 모니터( 오른쪽 상단 > 직렬 모니터 ). 버튼을 누르면 'Button One Works!'가 표시되어야 합니다. 또는 '버튼 투 웍스!' 누른 버튼에 따라.

이 예에서 한 가지 중요한 참고 사항이 있습니다. 바로 소프트웨어 디바운스입니다. 이것은 버튼을 확인한 다음 버튼을 다시 확인하는 사이의 단순한 10밀리초(ms) 지연입니다. 이것은 버튼 누름의 정확도를 높이고 Arduino를 트리거하는 노이즈를 방지하는 데 도움이 됩니다. 권장되지만 이 작업을 수행할 필요는 없습니다.

컨트롤러 만들기

이제 모든 것이 연결되고 작동했으므로 전체 컨트롤러를 조립할 차례입니다.

이 예는 눌려진 각 버튼에 대해 다른 CC 메시지를 보냅니다. 저는 이것을 OS X에서 Ableton Live 9.6을 제어하는 ​​데 사용하고 있습니다. 코드는 위의 두 테스트 샘플과 유사합니다.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

참고 -- 사용할 수 없습니다. Serial.println() MIDI 출력으로.

CC 대신 PC 메시지를 보내려면 다음을 바꾸십시오.

midiOut.sendControlChange(42,127,1);

와 함께:

midiOut.sendProgramChange(value, channel);

실행 중

아래는 컨트롤러로서의 데모입니다. 에이블톤 라이브 ( 모든 예산에 맞는 최고의 DJ 소프트웨어 ). 오른쪽 상단은 오디오 미터를 보여주고 상단 중앙은 들어오는 미디 메시지를 보여줍니다. 미디 모니터 OS X).

블루 스크린 Windows 10을 수정하는 방법

MIDI 컨트롤러를 만드셨습니까?

커스텀 MIDI 컨트롤러는 실용적인 용도로 많이 사용됩니다. 발로 조종할 수 있는 거대한 장치나 세련된 스튜디오 컨트롤러를 만들 수 있습니다. 그리고 구입에 관심이 있다면 구입할 수 있는 최고의 USB MIDI 컨트롤러가 있습니다.

이미지 크레디트: Shutterstock.com을 통한 Keith Gentry

우리가 추천하고 토론하는 항목이 마음에 드셨으면 좋겠습니다! MUO는 제휴 및 후원 파트너십을 가지고 있으므로 일부 구매에서 수익의 일부를 받습니다. 이는 귀하가 지불하는 가격에 영향을 미치지 않으며 최고의 제품 추천을 제공하는 데 도움이 됩니다.

공유하다 공유하다 트위터 이메일 Windows 11로 업그레이드할 가치가 있습니까?

Windows가 새롭게 디자인되었습니다. 그러나 Windows 10에서 Windows 11로 전환하도록 설득하기에 충분합니까?

다음 읽기
관련 항목
  • DIY
  • DJ 소프트웨어
  • 아두이노
  • 전자제품
  • 대낮
저자 소개 조 코번(136건의 출판물)

Joe는 영국 링컨 대학교에서 컴퓨터 공학을 전공했습니다. 그는 전문 소프트웨어 개발자이며 드론을 날리거나 작곡을 하지 않을 때 종종 사진을 찍거나 동영상을 제작하는 모습을 볼 수 있습니다.

조 코번이 참여한 작품 더보기

뉴스레터 구독

기술 팁, 리뷰, 무료 전자책 및 독점 거래에 대한 뉴스레터에 가입하십시오!

구독하려면 여기를 클릭하세요.