기술 글보기제목아두이노 미디 컨트롤러 만들기2022-06-26 20:47작성자 biplane 친구 정공이 갑자기 이런 문의를 해왔습니다. 정공 : "내가 아두이노 소스를 수정했는데 안되네 함 봐 주 셈" 멋진 것 : "어캐 보내도"정공이 보내준 소스를 보니 논리적으론 문제가 없어 보였습니다. 멋진 것 : "이상 없어 보이는데? 원소스는 되나?" 정공 : "안 해봤는데? 잠시만.. 이런 원소스도 안되네. 촤하하" 멋진 것 : "원소스를 보내도 봐봐, 그런데 이게 어디에 쓰인 건데?” 정공 : “미디 컨트롤러라고 전자악기들 제어하는데 쓰이는 거래”미디 컨트롤러라… 뭔가 재미있을 것 같다고 생각하는 중 친구는 제가 관심을 보이자 소스 외 컨트롤러를 만들 수 있는 아두이노 관련 부품을 바로 챙겨 보내주었습니다.이렇게 시작한 프로젝트의 이름은 “아두이노로 미디컨트롤러 만들기!”진행 순서는 :1. 참고한 사이트2. 테스트보드 구성3. 아두이노 IDE 구성 및 MIDI 라이브러리 설치4. MIDI Program Change / Control Change 코딩 및 검증5. Web MIDI API 구현 1. 참고한 사이트 : 구글링을 해보면 아두이노를 이용하여 미디컨트롤러를 구현한 것을 소개하는 곳이 무척 많습니다. 그중 가장 초보자가 접근하기 쉽게 설명한 곳은 아래 링크 같습니다. https://www.makeuseof.com/tag/make-midi-controller-arduino/ 그외 참고한 곳은https://www.circuitbread.com/tutorials/midi-controller-knobs-buttonshttps://www.mule.co.kr/bbs/info/guide?idx=56027012&page=1&map=list&mode=list®ion=&start_price=&end_price=&qf=title&qs=&category=&ct1=&ct2=&ct3=&store=&options=&soldout=&sido=&gugun=&dong=&period=6&of=wdate&od=desc&v=vhttps://colorscripter.com/s/WnZqOtN등등이 있습니다.2. 테스트보드 구성참고한 사이트의 내용대로 브레드보드 레이아웃을 그려봅니다.레이아웃은 fritzing을 사용했고, 사용할 보드가 나노이므로 나노 기준으로 변경했습니다. 레이아웃 구성에 대한 자세한 설명은 위 사이트를 참고하세요.저항이 두종류 사용되는데, 택트 스위치에 연결된 것은 10k 옴, 미디잭 쪽은 220 옴이 사용됐습니다. 사용 된 부품 리스트 입니다. 1) 아두이노 나노2) 브레드 보드3) 미디잭 (5-pin DIN female socket)4) 택트 스위치 2개5) 220 옴 저항 2개6) 10k 옴 저항 2개5) 브래드 보드 용 점퍼선들6) USB2.0-MIDI 어뎁터상기 부품 중 USB2.0-MIDI 어뎁터는 아두이노가 발생시킨 신호를 컴퓨터(혹은 미디기기)로 보내주는 역할을 하는 것으로 이 프로젝트에서 가장 중요한 부품입니다.즉, 미디 인터페이스가 없는 PC에 미디 인터페이스를 구현해 주는 녀석이죠.요렇게 생겼습니다. ^^미디 USB 등으로 검색하시면 여러 장비가 검색 될 겁니다.레이아웃을 기준으로 브레드보드에 부품들을 올려보면… 미디 인터페이스에는 IN/OUT 두개의 잭이 있는데 미디 인터페이스 입장에서 데이터를 받는 잭이 IN, 데이터를 보내는 잭이 OUT 이므로 테스트보드와의 연결은 IN 잭을 연결해야 합니다.이렇게 테스트 보드 구성이 완료되었으니 이제 개발환경을 만들어 보겠습니다.3. 아두이노 IDE 구성 및 MIDI 라이브러리 설치1) 아두이노 IDE는 아래 링크에서 받을 수 있습니다. 대부분 OS를 지원하므로 사용하는 OS에 맞는 것을 받아 설치하면 됩니다. https://www.arduino.cc/en/software2) MIDI 관련 라이브러리를 설치합니다. 여기에 사용된 라이브러리는 아래 링크의 것을 사용했습니다.https://github.com/FortySevenEffects/arduino_midi_library/링크 내에 라이브러리 설치법 및 간단한 사용예제가 포함되어 있으니 그 부분을 잘 따라 설치하면 됩니다.개발환경이 완료되었으니 이제 본격적으로 코딩을 시작(이라고 쓰고 copy&paste 라고 읽는)하겠습니다.4. MIDI Program Change / Control Change 코딩 및 검증MIDI는 Musical Instrument Digital Interface의 머릿자로 전자악기들을 디지털신호로 제어하는 것에 대한 규약을 말합니다. 악기를 제어하기 위해 수많은 명령들이 있지만 친구인 정공이 원했던 기능은 프로그램(악기)의 변경인 Program Change(이하 PC)와 악기 내 기능 조절인 Control Change (이하 CC) 였는데, 앞서 설치한 MIDI 라이브러리 내에서는 PC와 CC를 위한 함수(오브젝트? 클래스?)를 제공하고 있고 이걸 사용하면 쉽게 구현할 수 있을 것 같습니다. 우선 PC부터 진행해보기로 했습니다.PC를 송신하는 함수는 MIDI.sendProgramChange(PC#, Channel)인데, 여기에서 PC#는 변경할 프로그램의 번호를, Channel에는 사용할 미디 채널을 넣으면 됩니다.간단하네요. 이걸 짜집기한 코드에 적용 후 아두이노 IDE를 통해 아두이노에 업로드를 해봅니다. 위 그림에서 편집 아래 화살표가 그려진 동그라미 버튼을 누르면 컴파일과 아두이노 업로드가 동시에 진행됩니다. 편하네요. 자 이제 아두이노 미디 컨트롤러가 완성 되었습니다. ^^미디 시그널이 제대로 오가는지 확인을 위해 미디 시그널 모니터링 앱을 찾아봤습니다. 종류가 많고 대부분 무료입니다. 저는 MidiView라는 녀석을 쓰기로 했습니다. 일단 UI가 깔끔, 간단한게 맘에 드네요. https://hautetechnique.com/midi/midiview/ Midi View를 설치 후 아무리 스위치를 눌러도 시그널이 발생하지 않네요. 이리 저리 만져보니 아두이노가 컴퓨터에 연결되어 있으면 미디 신호가 미디 인터페이스로 송출되지 않는 것 같습니다. 아두이노를 컴퓨터에서 제거 후 별도 전원을 연결을 하니 비로서 신호가 잡히기 시작하네요. 위 그림과 같이 미디 신호가 들어오면 성공입니다!하드웨어 및 소프트웨어가 준비 되었으니 미디 악기에 적용해서 제대로 작동하는지도 검증을 해보도록 하겠습니다.테스트에 사용된 악기는 Amplitube 라는 것으로 소프트웨어로 전기기타의 앰프와 이펙트들을 구현한 일종의 VST(Virtual Studio Technology)악기입니다. 원래는 무척 비싼 소프트웨어입니다만 우리는 기능확인만 할 것이므로 무료 버전인 Amplitube CS를 사용하기로 했습니다. 뭔가 굉장히 근사해 보입니다.설치가 완료되면 입출력을 설정합니다. 입출력 설정이 안되어 있으면 미디 신호를 받지 못하네요. 중요! MIDI Input 에 USB2.0-MIDI를 선택해야 하는데, 같이 진행한 정공은 Any로 설정해도 됐다고 합니다.이제 택 스위치 버튼을 누르면!따란~ 버튼을 누를 때 마다 프리셋이 변경되는 것을 보실 수 있습니다.PC가 됐으니 내친김에 CC도 바로 도전!CC는 PC와는 달리 변수가 하나 더 필요합니다. MIDI.sendControlChange(CC#, CC value, Channel)CC#는 0~127 중 어느 번호로 해당 기능을 조절할 것인지를 정하는 것이고CC value는 조절할 값을 0~127 값으로 송신합니다. 미디 기기는 이 값을 다시 0~100%로 환산해서 값을 적용하게 됩니다. 이 기능을 이용하여 Amplitube에서 앰프 노브(knob)의 값을 조절한다고 생각하면 편할 것 같습니다.사실 CC는 가변저항이나 로터리엔코더를 쓰는 것이 더 편할 것 같은데 아쉽게도 제게는 해당 부품이 없어서.. 택 스위치로 구현가능 여부만 확인해봤습니다. (정공은 둘 다 성공했다고 하네요)http://39.123.45.107:8080/Data/220624%20CC%20test.mp4 기능 검증이 끝났으니 여기에 버튼을 늘리고 소스를 그에 따라 조금 손을 봐주면 값비싼 미디 컨트롤러를 충분히 대체할 수 있을 것 같습니다. ^^ 5. Web MIDI API 구현 마지막으로 Web MIDI API 라는 것이 있습니다.이걸 이용하면 미디 신호를 웹에서 받을 수 있는 것이지요.여러 예제들이 있으니 웹 개발에 관심 있는 분들은 여러 응용처를 찾으실 수 있을 것 같습니다.제가 테스트로 개발한 홈페이지 주소를 남기고 긴 글 마치겠습니다.<MIDI 입력 확인>https://estorytel.cafe24.com/midi/midi.html <MIDI 신호 받아 신호 번호 읽기>https://estorytel.cafe24.com/midi/ 좋은 주말 되시기 바랍니다~~~ 태그 목록글쓰기 댓글 [0] 댓글작성자(*)비밀번호(*)내용(*) 댓글 등록 더보기이전8BitDo N30 무선마우스 biplane 2022-06-30-아두이노 미디 컨트롤러 만들기 biplane 2022-06-26다음LG 듀얼업 모니터 biplane 2022-06-05 Powered by MangBoard | 워드프레스 쇼핑몰 망보드 Share it now!