본문 바로가기
카테고리 없음

[Light It Up 1편] 개괄 & 통신을 위한 미디의 기본

by Rescura 2024. 2. 23.

이 시리즈에 대하여

  이 시리즈는 충주고등학교 첨단과학실 1층 벽면에 설치된 작품 Light It Up의 구성 요소 각각들을 설명하여 후배들이 계속해서 작품을 작동시키고 유지/보수하는 것을 돕기 위해 만들어진 시리즈이다. 혹 LED strip를 런치패드와 연동시켜 라이트쇼를 진행하고 싶은 사람이 있다면 이 시리즈를 정독하는 것이 도움이 될 것이다.

  이 시리즈는 다음과 같은 순서로 이루어져 있다.

  1. [Light It Up 1편] 개괄 & 통신을 위한 미디의 기본
  2. [Light It Up 2편] 하드웨어 구성요소 (1) : 런치패드 커스텀 펌웨어, 커스텀 velocity 팔레트 업로드
  3. [Light It Up 3편] 하드웨어 구성요소 (2) : WS2812 LED strip과 전원 공급용 SMPS
  4. [Light It Up 4편] 하드웨어 구성요소 (3) : Teensy 4.0 보드와 74AHCT125 로직 레벨 쉬프터
  5. [Light It Up 5편] 소프트웨어 구성요소 (1) : Arduino 스케치
  6. [Light It Up 6편] 소프트웨어 구성요소 (2) : Ableton Live 10.0.6
  7. [Light It Up 7편] 소프트웨어 구성요소 (3) : Apollo Studio

https://youtu.be/pfflmu2hSmQ

Light It Up 공연 동영상

이번 글의 주제

  이번 시리즈는 Light It Up 작품을 개괄적으로 소개한다.

  • Light It Up이 무엇인지
  • 어떤 구성 요소들로 이루어져 있는지
  • Light It Up이 어떻게 작동하는지
  • 각각의 구성요소는 어떤 역할을 하는지 설명한다.

충주고등학교 벽면에 설치된 Light It Up 전체 모습

1. Light It Up이란

 Light It Up은 일반적인 런치패드 라이트쇼에 LED 스트립을 연동하여 벽면에 부착된 LED가 런치패드와 함께 노래에 맞추어 불빛을 내도록 만든 작품이다. 보통 런치패드 라이트쇼는 아래 영상과 같이 하나(또는 여러개)의 런치패드를 준비하고 순서에 맞게 버튼을 눌러 노래를 연주하며 화려한 불빛을 관람하게 된다.

"Ed Sheeran - Shape Of You   (Ellis Remix) // Launchpad Cover" by KasKobi

2. Light It Up의 구성요소

- 하드웨어

  • Launchpad Pro MK2 1개 (연주용으로 하나를 더 사용할 수 있음)
  • WS2812 LED strip 6줄
  • 5V 450W SMPS (Mean Well MSP-450-5)
  • MIDI 신호에 따라 LED에 불을 켜도록 직접 납땜해 만든 회로 5개
    • Teensy 4.0 보드 1개
    • 74AHCT125 로직 레벨 쉬프터 1개
    • 220옴 저항 1개

- 소프트웨어

  • Ableton Live 10.0.6
  • Apollo Studio

 3. Light It Up의 작동 원리

  1. 런치패드의 버튼이 눌리면 버튼 입력 MIDI 신호가 컴퓨터의 에이블톤 라이브, 아폴로 스튜디오에 입력된다.
  2. 에이블톤 라이브는 버튼 입력 MIDI 신호에 맞추어 LED 라이트 효과 MIDI 신호를 생성하고, 이를 Teensy 4.0 보드에 출력한다. 
  3. Teensy 4.0 보드는 LED 효과 MIDI 신호를 받아들여 WS2812 LED Strip을 켜기 위한 3.3V LED 제어 신호를 출력한다.
  4. 74AHCT125는 Teensy의 3.3V LED 제어 신호를 5V 신호로 변환하여 WS2812 LED Strip에 출력한다.
  5. WS2812 LED Strip은 74AHCT125의 신호를 받아 라이트 효과대로 불이 켜진다.
  6. 한편, 아폴로 스튜디오는 버튼 입력 MIDI 신호에 따라 런치패드 라이트 효과 MIDI를 생성해 런치패드에 출력하고, 런치패드에 라이트 효과가 나타난다.
  7. 이 모든 과정은 에이블톤 라이브의 타임라인에서 런치패드 연주 MIDI가 재생(Playback)됨에 따라 자동으로 이뤄지는데, Apollo Connector M4L 플러그인이 에이블톤의 런치패드 연주 MIDI Playback과 아폴로 스튜디오를 연동시킨다.

Light It Up에서의 통신 과정을 나타낸 사진

Launchpad Pro MK2

Novation사의 Launchpad Pro MK2 (출처 : https://novationmusic.com/products/launchpad-pro)

  런치패드는 가운데에 64개의 네모난 연주용 버튼과 주위 동그란 유틸리티 버튼이 존재하여 버튼을 누르면 지정된 소리가 나고 라이트 효과가 나타나는 전자악기이다. '버튼을 눌러 컴퓨터와 MIDI 신호를 주고 받을 수 있는 전자악기' 라고 생각하면 된다.

  • 버튼을 누르면 MIDI 신호가 컴퓨터로 전달되어 Ableton Live 10이 처리하고
  • 반대로 MIDI 신호가 런치패드에 입력되면 버튼에 불이 켜진다.

  보통 런치패드를 이용한 라이트쇼 연주 퍼포먼스를 보일때 64개의 버튼만으로 한 곡을 연주하기 어려워, 여러개의 '페이지'를 만들어 64개보다 많은 버튼들을 연주에 사용한다. 가운데 64개 버튼 오른쪽에 보이는 동그란 화살표 버튼들이 위에서부터 순서대로 1~8번 페이지를 선택하게 해주며, 각 페이지마다 64개 버튼에 서로 다른 소리를 지정해 줄 수 있다. 예를 들어, 1번 페이지를 선택한 후 64개의 네모난 버튼 중 가장 왼쪽 위 버튼을 눌렀을 때 피아노 '도'음이 났다면, 2번 페이지를 선택한 후 동일한 버튼을 눌렀을 때에는 기타 '파' 음이 나게 만들 수 있다.

  물론, 음뿐 아니라 라이트 효과 또한 페이지가 달라지면 동일한 버튼을 눌러도 다른 라이트 효과가 재생되도록 만들 수 있다.

MIDI

참고한 자료

MIDI에 대해 설명하는 부분을 작성할 때 다음 두 블로그 글을 참고하였다.

[1] : https://www.instructables.com/What-is-MIDI/

[2] : https://www.songstuff.com/recording/article/midi-message-format/

 

MIDI란

  MIDI(미디)는 Musical Instrument Digital Interface의 약자로, 전자악기들이 통신하기 위한 신호 규약이다. 미디 규약을 따라 작성한 미디 메시지를 이용해 전자악기와 전자악기, 혹은 전자악기와 컴퓨터가 통신하며 '어떤 음을' '얼마나 큰 세기로' 연주했는지 등의 정보를 주고받을 수 있다. 주의할 점으로, 미디 자체는 어떤 소리도 내지 않는다.

Ableton Live 10에서 MIDI Clip을 만든 후 Piano Roll로 MIDI 메시지들을 작성한 모습

 

MIDI 메시지의 구성

 미디 메시지는 최대 3바이트 크기를 가질 수 있다. 미디 메시지는 다음과 같이 앞의 'Status Byte', 뒤따라오는 'Data Byte'로 이루어져 있다. Status Byte는 미디 메시지의 종류와 채널을 설정하며, Data Byte는 미디 메시지에 필요한 데이터들을 담고 있다.

Status Byte Data Byte1 Data Byte2
1 t t t n n n n 0 x x x x x x x 0 x x x x x x x
  • Status Byte는 맨 앞자리 비트 ( MSB )가 1로 시작하며, Data Byte는 맨 앞자리 비트 ( MSB )가 0으로 시작한다.
  • Status Byte의 앞 세자리 비트는 미디 메시지의 종류( Type )을 나타낸다.
  • Status Byte의 맨 뒤 네자리 비트는 어떤 미디 메시지를 보낼 채널을 나타낸다.
    →  2^4 = 16개 채널로 보낼 수 있다.
  • 하나의 Data Byte는 MSB 0을 제외한 7비트를 이용해 2^7 = 128가지 데이터를 나타낼 수 있다.

MIDI 메시지로 런치패드 버튼에 불 켜기

우리가 앞으로 사용할 MIDI 메시지는 Note On, Note Off 메시지가 전부이다.

메시지 종류 의미 데이터1 데이터2
Note On 소리를 발생시킨다 노트(음정) 번호 노트 세기 (Velocity)
Note Off 소리를 끈다 노트(음정) 번호 노트 세기 (Velocity)

 

  • Ableton Live 에서는 C1음이 노트번호 36으로 지정되어있고, C-2 (0) ~ G8(127) 범위의 음을 사용가능하다.
  • Velocity는 0 ~ 127 사이의 값을 가지고 있으며, 이 Velocity를 이용해 런치패드와 LED 라이트 색을 지정한다.

 앞서 런치패드는 컴퓨터와 미디 메시지를 주고받을 수 있는 전자악기라고 하였다. 런치패드의 버튼을 누르면 그 버튼의 음정 번호로 MIDI Note On 메시지가 컴퓨터로 입력되고, 버튼을 그만 누르면 그 버튼의 음정 번호로 MIDI Note Off 메시지가 컴퓨터로 입력된다.

 또한, 컴퓨터에서 런치패드로 MIDI Note On 메시지를 보내면 그 음정 번호의 런치패드 버튼에 Velocity 색 불이 들어온다.

런치패드의 각 버튼별 음정 번호를 나타낸 그림

Ableton Live 10.0.6

  Ableton Live (에이블톤 라이브) 10은 작곡 등에 사용되는 DAW (Digital Audio Workstation)이다.

  • 런치패드에서 MIDI 신호가 컴퓨터로 입력됐을 때 이를 처리하여 버튼에 맞는 소리를 재생시키고
  • 런치패드에서 MIDI 신호가 컴퓨터로 입력됐을 때 LED 라이트 효과 MIDI를 생성하여 Teensy에 출력한다.

  Ableton Live는 5가지 에디션이 존재한다.

에디션 Lite Trial Intro Standard Suite
저장 / 내보내기
(Save / Export)
O X O O O
Max For Live X O X X O

 

  Ableton Live에서 LED 라이트 효과 MIDI를 생성할때 Max For Live로 제작한 플러그인을 사용하기 때문에 Light It Up의 작동을 위해선 Max For Live가 지원되어야한다. 따라서 프로젝트 파일을 제작할때는 개인적으로 구매한 Suite 버젼으로 제작하고, 학교에서 Light It Up을 작동시킬때에는 무료로 사용할 수 있는 Trial 버젼으로 프로젝트 파일을 불러와 사용한다.

 또한, 런치패드 MIDI, Max For Live 플러그인 안정성을 위해서 다른 버젼이 아닌 Ableton Live 10.0.6 버젼을 사용하는 것을 권장한다. (이것 때문에 10.1.43 버젼에서 프로젝트를 다 만들어놓고 10.0.6 버젼으로 한번 더 만드는 노가다를 거쳤다... 하위 버젼 프로젝트를 상위버젼에서 여는건 되는데 그 반대는 안되더라..)

Ableton Live 10.0.6 Suite의 화면

Teensy 4.0 보드

  Teensy 4.0는 Arduino IDE로 코딩이 가능한 개발 보드로, USB Type을 MIDI로 두고 업로드하면 컴퓨터-Teensy 간 MIDI 통신이 가능하다. 이를 이용해 Ableton Live에서 생성한 LED 라이트 효과 MIDI 신호를 Teensy가 읽고 실제 LED를 켜주는 역할을 하게 된다.

  주의할 점으로, Teensy 4.0은 기본 출력이 3.3V이기 때문에 5V 신호가 입력되어야하는 WS2812 LED strip에 바로 신호를 출력하면 LED가 제대로 켜지지 않는다. 

Teensy 4.0 보드의 핀맵 (출처 : https://www.pjrc.com/store/teensy40.html)

 

74AHCT125 로직 레벨 쉬프터 (Logic Level Shifter)

74AHCT125 로직 레벨 쉬프터 사진 (출처 : https://grobotronics.com/74ahct125-quad-level-shifter.html)

 앞서 Teensy 4.0 보드는 3.3V 출력을 하기 때문에 바로 신호를 LED Strip에 넣어주면 제대로 불이 켜지지 않는다고 했다. 이 74AHCT125 로직 레벨 쉬프터는 Teensy의 3.3V 출력을 5V로 변환하여 LED Strip에 전달하는 역할을 한다.

 

  Teensy 4.0 보드와 74AHCT125 로직 레벨 쉬프터는 만능기판에 납땜하여 연결해주었다. 이때 인터넷에 찾아보니 데이터핀에 저항을 달아주고, LED 전원 연결시 전압 스파이크 현상을 완화하기 위해 축전기를 달아주라고 하여 함께 납땜하였다.

만능기판에 납땜하여 서로 연결한 Teensy 4.0 보드와 74AHCT125 로직 레벨 쉬프터

WS2812 LED Strip

WS2812 사진 (출처 : https://www.adafruit.com/product/1138)

  WS2812 LED Strip은 5V 전원을 공급받아 한쪽 끝 DIN 단자로 5V 동작신호를 인가하면 개별 LED마다 색깔을 지정해줄 수 있는 LED이다. (= Addressable LED)

  총 6개의 LED Strip을 사용하였고, 1m당 60개 LED가 들어있는 것을 사용하였다.

Apollo Studio

Apollo Studio를 최초 실행했을 때 나타나는 화면

 Apollo Studio는 mat1jaczyyy가 만든 런치패드 라이트 제작 / Playback 전용 독립 소프트웨어이다. 원래는 Ableton Live에서 런치패드 라이트 MIDI 효과를 발생시켜 런치패드에 불이 들어오게 만드는데, 이 Apollo Studio를 사용하면 무거운 Ableton Live를 사용하지 않고도 라이트 효과를 제작할 수 있고, 버튼이 눌렸을 때 런치패드에 불이 들어올 수 있게 만들 수 있다.

  Light It Up 작품 제작 과정에서는 빠른 진행을 위해, 그리고 RAM 부담 완화를 위해 Apollo Studio로 런치패드 라이트 효과를 제작하고 라이트 신호 생성 엔진으로 사용하였다.

SMPS (Mean Well MSP-450-5)

사용한 SMPS (MSP-450-5)

  LED Strip에 전원을 공급해주기 위한 SMPS (Switching Mode Power Supply) 전원공급 장치이다. LED가 하얀색으로 켜졌을때 가장 많은 전류를 소모하는데, 이를 기준으로 최대 사용 와트를 계산하여 넉넉하게 와트를 공급할 수 있는 SMPS를 구입하였다.

글을 마치며

  이로서 Light It Up 작품이 무엇인지, 작품에 사용된 구성 요소들은 무엇이 있고, 각각은 무슨 기능을 하며, Light It Up이 노래에 맞추어 불을 자동으로 켜는 작동 메커니즘은 무엇인지 살펴보았다.

  다음 글에서는 Light It Up 작품을 제작하기 위해 필요한 런치패드 커스텀 펌웨어 업로드 방법과 커스텀 팔레트 업로드 방법을 설명하겠다.