Live API에 접근하기 – Live Object Model

Cycling74가 Ableton에 인수된 영향일까. Live와 Max의 연계성은 Max for Live가 등장한 이래 그 어느때보다 가장 많이 통합되고, 발전되어있다. 그 중에서도 확실히 달라졌다고 느끼는 것은 Max for Live 디바이스를 제작하는데 필요한 내용을 정리한 Live Pack이 출시되었다는 점 아닐까.

Building Max Devices by Ableton

Max for Live의 가장 흥미로운 기능 중 하나는 Live API를 이용하여 Ableton이 가진 거의 대부분의 매개변수에 직접 액세스가 가능하다는 점이다. 이를 통해 특정 길이의 시간를 4마디로 나눴을 때의 BPM을 계산한다거나, 플러그인 세팅을 바꾸거나 모듈레이션 할 수도 있다.

Live API는 여느 다른 형태의 API와 비슷하게 get, set 등의 명령어를 통해 LOM(Live Object Model)로 명명된 구조체에서 특정 파라미터를 가져올 수 있다. LOM의 구조 및 자세한 레퍼런스는 Cycling74 내부 문서(https://docs.cycling74.com/max8/vignettes/live_object_model)에서 확인할 수 있다.

Live API는 LOM의 계층에 따라 각각 Object Id를 부여하고, 오브젝트를 호출하여 특정 파라미터를 작동시키는 형태를 따른다. 만일 내가 현재 내 Live 프로젝트의 템포를 가져오고 싶다면 [live.path] 오브젝트에 this_device 메세지를 입력하여 Object Id를 가져온 뒤, getpath를 [live.object]에 입력하게 되면 현재 내 디바이스의 위치를 Live Object Model의 계층구조를 따른 다음과 같은 패턴이 나온다.

live_set tracks 1 device 0 은 현재 내 Live 세트의 첫번째 트랙의 첫번째 (device의 인덱스는 0부터 시작하며, tracks 0은 마스터 트랙을 가리킨다.) 디바이스의 위치를 호출하고 있다는 사실을 알려준다. 또는 현재 디바이스의 위치에서 상위 계층 (트랙)을 호출하기 위해선 this_device canonical_parent 를 live.object에 입력하면 된다.

만일 내 Live 세트의 템포를 바꾼다면 live_set의 경로를 구한 뒤, live.object에 set tempo 명령어를 통해 M4L에서 템포를 바꿀 수 있다.

Jitter Tutorial: 행렬 / matrix

이 튜토리얼은 OpenGL을 이용한 컴퓨터 아트에 접근하고자 하는 아티스트, 디자이너, 음악가를 위해 만들어졌다. Max는 프로그래밍에 대한 지식이나 경험이 적은 사람들이 비교적 쉽게 접근할 수 있는 툴로 시작되었지만 많은 업데이트를 통해 단순한 프로토타이핑 툴 이상의 기능과 가능성을 가진 개발 환경으로 발전하게 되었다. 다만 프로그램의 기능에 비해 학습 자료들이 몹시 파편화되어 이를 사용하고자 하는 개발자/아티스트의 접근성이 좋지 않다.본 튜토리얼은 Max를 이용하여 제너러티브 아트와 같은 컴퓨터 아트를 새로 배우는 사람들에게 다소 편리하게 사용되기 위한 일종의 매뉴얼이 되길 기대하며 제작하게 되었다.

Digital Media

먼저 시작하기 전에 디지털 미디어에 대해서 생각해보자. 음악 파일에 기록된 것은 무엇이고 우리가 듣게 되는 것은 무엇일까? 우리는 음악에서 화성(Harmony)을 듣고, 노래의 음색을 파악하고 무드를 이해한다. 그렇다면 음악 파일에는 이와 같은 ‘데이터’가 담겨있는 것일까? 마찬가지로 비디오 파일에 기록된 것은 무엇일까? 카메라가 담은 피사체가 담긴 것일까, 아니면 빛이 담긴걸까?

정답은 모두 ‘숫자’라는 것이다.

사진: PCM 오디오에 실제 기록된 데이터
실제 PCM 오디오에 기록된 것은 샘플 포인트의 위치값이다.

오디오 데이터는 두 점의 데이터(스테레오인 경우)가 매우 빠른 속도로 지나가는 궤적으로 볼 수 있다. 실제 기록된 것은 샘플레이트 시간에 맞춰 기록된 샘플의 위치값이며, 이것이 인간의 감각기관을 통해 소리로 해석되게 되는 것이다.

사진: 파형이란 시간선 위에 기록되며, 각 파형은 주파수 도메인에서 인식된다.
파형이란 시간선 위에 기록되며, 각 파형은 주파수 도메인에서 인식된다.
사진: 컴퓨터 그래픽스의 정교함은 표현하는 픽셀의 밀집도에 의해 결정된다.
컴퓨터 그래픽스의 정교함은 표현하는 픽셀의 밀집도에 의해 결정된다.

디지털 이미지, 영상 또한 기록되어있는 것은 수많은 픽셀들이다. 각 데이터는 일련의 숫자값으로 표현되지만, 그래픽 카드와 컴퓨터 그래픽스 라이브러리를 통해 이는 ‘그림’으로 인식되게 된다. 다만 영상이 음악과 다른 점이 있다면, 두 개의 점이 아니라 화면 해상도 크기, FHD라면 1920×1080개의 서로 다른 점이 초당 60번 이상 변화하며 만들어낸 결과를 우리가 본다는 것이 다를 뿐이다.

행렬 Matrix

그렇다면 컴퓨터 그래픽스에 대한 정확한 비유는 뭐가 있을까? 각 픽셀은 4개의 숫자로 이루어져 있으며 이는 각각 Alpha, Red, Green, Blue 컴포넌트를 담당한다. (일반적으로 컴퓨터 그래픽스는 RGB를 이용한 감산 합성 방식으로 색상을 표현한다) 그래픽카드가 처리하게될 픽셀 데이터들은 하나의 자료구조로 묶여 처리되어야 했으며, 이런 디지털 이미지와 같은 형태의 데이터셋을 우리는 행렬이라고 부른다.

사진: ARGB 데이터셋의 시각화 (cycling74.com)
ARGB 데이터셋의 시각화 (cycling74.com)

수학에서 행렬(Matrix)은 수 또는 다항식 등을 직사각형 모양으로 배열한 것을 뜻한다. 마찬가지로 컴퓨터 공학에서는 두 개 이상의 변수의 묶음을 Array 또는 List로 칭하게 된다. 컴퓨터가 발전하면서 다양한 형태의 자료구조를 나타낼 필요가 있었고, 어레이 또한 다차원 구조를 띄는 형태를 표현하기 위해 발전해 왔다.

사진: 2차원 어레이 시각화 (cycling74.com)
2차원 어레이 시각화 (cycling74.com)

결과적으로 그래픽 처리에 사용되는 GPU는 동시에 수많은 픽셀 데이터를 처리할 수 있는 병렬 구조로 만들어지도록 발전해왔으며, Nvidia가 GPU를 이용한 병렬 연산을 가능케 하는 CUDA를 내놓으면서 GPU는 단순 그래픽 데이터 처리 뿐만 아니라 범용적인 병렬 컴퓨팅 요소로 각광받게 된다.

jit.matrix

디지털 이미지의 이러한 특성을 본따 Max에서 그래픽 데이터 및 다른 다차원 구조를 띄는 형태의 데이터셋을 처리하기 위해 고안된 오브젝트의 이름 또한 matrix로 정해지게 된다. jit.matrix는 이러한 형태의 자료구조를 Max 내에서 선언하기 위해 만들어진 오브젝트로 다음과 같은 형태의 패턴을 띈다.

사진: jit.matrix 입력 키워드 분석

name

오브젝트 이름 뒤에 오는 문자열은 매트릭스의 이름이 오게 되는데 이를 비워놓을 경우 Jitter가 임의의 문자열을 배정하게 된다. 만일 단일 오브젝트가 아니라 패처의 다른 위치에서 매트릭스 데이터에 접근하려는 경우라면 고유 이름을 지정해주는 것이 좋다.

planecount

이름뒤의 오는 숫자는 몇개의 평면(plane)을 가지는 데이터인지를 의미한다. 만일 비디오 데이터라면 ARGB에 해당하는 모든 평면을 가지기 위해 4가 선언되어야 할 것이다.

data type

세번째로 오는 문자열은 해당 매트릭스가 사용하게 될 데이터 타입을 정의내리게 된다. 일반적으로 비디오는 8비트 컬러 뎁스, 즉 256 단계 (2^8)로 색상의 깊이를 나타내게 되는데, 이를 위한 데이터 타입은 char 이다.

사진: 색상 깊이가 표현하는 색상의 개수 계산

만일 0-255보다 더 큰 범위의 데이터를 매트릭스에서 사용하려는 경우 16bit, 32bit 부동소수점 데이터를 처리할 수 있는 float16, float32를 매트릭스에서 지정해줘야 한다.

size, attributes(@)

jit.matrix 사용 방식 분석 (cont'd)

이후 오는 숫자는 각 데이터셋의 크기를 의미한다. 일반적으로 x/y 크기를 가지는 형태로 사용되나, 3D Noise 와 같은 형태를 만들려 할때 두 개 이상의 숫자를 사용하기도 한다. 또한 Jitter는 오브젝트의 속성을 동적으로 변경하는 경우가 상당히 잦은 편인데, 오브젝트 내에서 특정 속성을 변경하기 위한 @ 키워드를 사용하거나, 메세지 박스에 attribute 명령어를 이용(크기의 경우 @dim)하여 오브젝트의 속성을 변경할 수 있다.

참고 자료:

What is a Matrix? – cycling74.com

Sound Synthesis: Pitch CV 란 무엇인가

신호란 한 시스템(또는 네트워크)에서 다른 시스템으로 데이터나 정보를 전달하는 전기적 또는 전자기적 양(전류, 전압, 전파, 마이크로파 등)을 뜻한다. 데이터를 전송하는 데는 아날로그 신호와 디지털 신호라는 두 가지 기본 유형의 신호가 사용되는데 이번 포스트에서는 CV가 음높이를 처리하는 방식을 비교하며 디지털 / 아날로그 신호의 차이에 대해 알아보도록 하자.

Analog Computer

전기적 신호를 사용한 전자-아날로그 컴퓨터 (기계적인 방식으로 계산결과를 도출하는 기계 장치를 전기적으로 구현한 형태의 초기 컴퓨터)는 겉보기에는 아날로그 신디사이저와 크게 다르지 않다. 가장 다른 점이라면 전자는 다이오드, 커패시터 등의 특성을 사용한 과학적 계산을 아날로그 신호로 도출하며, 후자는 이를 이용해 음악적 결과물을 내놓는 점이 다르다고 할 수 있다.

스프링 질량 시스템의 동역학을 계산하기 위한 아날로그 회로 - 위키백과
스프링 질량 시스템의 동역학을 계산하기 위한 아날로그 회로 – 위키백과

이러한 유사성을 사용하여 현대에 들어서는 아날로그 컴퓨터의 부속으로 쓰이거나 컴퓨터의 테스트 장비로 사용되던 기계를 이용하여 음악적 신호를 생성하여 신디사이저로 탈바꿈하는 경우도 생겼다. (대표적으로 네덜란드의 왕립 헤이그 음악원의 소놀로지 스튜디오와 전자음악 스튜디오 Willem Twee가 있다.)

Willem Twee 의 아날로그 컴퓨터를 이용한 잼 세션

Control Voltage (CV)

Moog에서 첫 상용 모델로 출시한 Moog Modular 55 System.
Moog에서 첫 상용 모델로 출시한 Moog Modular 55 System.

처음 개발된 아날로그 신디사이저들은 각자 서로 다른 인터페이스를 사용했는데, 모듈간의 통신에 사용되는 신호를 Control Voltage라고 부른다. CV는 일정 범위의 전압량(0V~12V, etc)을 이용해 특정 결과를 도출하는 방식을 말하며 이는 아날로그 신호의 일종이다. 모듈들은 특정 전압에 따라 지정된 형태의 결과값을 도출하게 된다.

Pitch CV

Intellijel 오실레이터 Dixie2+의 CV입출력
Intellijel사의 오실레이터 Dixie2+의 CV입출력

Pitch CV는 입력되는 volt값에 맞춰서 오실레이터의 음높이를 변화시키는 CV 신호를 말하는데, 이 경우 사용되는 Pitch CV의 형식은 1V/oct, Hz/Volt 두 가지로 나뉜다.

1V/oct는 대부분의 아날로그 및 모듈러 신디사이저에서 피치를 제어하기 위해 사용되는 표준으로 Moog, Sequential, ARP 그리고 유로랙 포맷 등에서 사용된다. 이름에서 알 수 있듯이 1V가 증가될 경우 옥타브가 올라가게 된다. 건반을 기준으로 보게 되는 음높이와 주파수 간의 로그 관계를 기반으로 한다고 볼 수 있다.

MIDI to Frequency 차트

음높이와 주파수의 관계를 살펴보자. 주파수는 음높이와 밑이 2인 로그로 표현될 수 있다. 즉, 주파수가 2배 증가할 때, 증가한 주파수는 이전 주파수의 옥타브만큼 음높이가 상승하는 것을 볼 수 있다. (log2(2f / f) = log2(2) = 1)

1V/oct 계산방법

마찬가지로 1V/Oct는 1V가 증가하게 되면 옥타브가 상승하게 되며, 1V를 12등분한 값이 평균율의 12음계를 나타내게 된다.

반면 Hz/Volt는 입력 전압이 두배 증가할 경우 출력 주파수 또한 두배로 증가하는 인터페이스로, 주파수의 변화와 선형적인 관계를 띄는 것을 볼 수 있다. 이는 주파수를 조금 더 세밀하게 변화하고자 하는 장비에서 사용되어온 인터페이스이며, Korg에서 사용한 방식이다.

1V/oct 와 Hz/V의 비교
1V/oct 와 Hz/V의 비교

표에서 볼 수 있듯이 1V/oct와 Hz/V는 사용 전압의 범위와 적용 방식이 상이하다. 뿐만 아니라 게이트 신호를 인식하는 방법도 서로 정 반대의 극을 사용하였기 때문에 CV, 즉 아날로그 신호만 사용하는 제어 방식은 호환성 문제를 일으켰고 음악 하드웨어를 제어하기 위한 통신 방식 및 인터페이스를 통일해야하는 필요성이 생기기 시작했다.

V-Trig와 S-Trig 비교.
V-Trig와 S-Trig 비교.

다음 장에서는 MIDI 신호가 악기를 제어하는 방식 및 디지털 신호가 데이터를 구성하고 읽는 방식에 대해 알아보도록 하자.

참고 자료:

CV/gate – Wikipedia

MSP Tutorial: Audio Rate와 Control Rate

Max/MSP (이하 Max로 통일)을 사용하다보면 Max 오브젝트와 MSP 오브젝트들의 처리방식에 대한 차이를 정확히 이해하지 못하는 경우가 생기곤 한다. 특히 [metro] 와 같은 오브젝트를 사용하여 시퀀싱을 하는 등 타이밍과 직결된 문제들을 해결하려 할때 중요한 개념 중 하나가 Audio Rate와 Control Rate이다.

Vector Size

Audio Rate란 무엇인가? 이는 MSP오브젝트들이 데이터를 주고 받는 속도를 의미한다. 이것을 이해하기 위해서는 우선 Max의 오디오 상태창을 먼저 확인할 필요가 있다.

Max의 오디오 상태창

샘플레이트, I/O Vector Size 그리고 Signal Vector Size를 확인해보자. 이 세가지가 현재 나의 Max의 MSP 오브젝트가 데이터를 처리하는 방식을 정의내린다. 다른 디지털 오디오 소프트웨어와 마찬가지로 Max 또한 오디오 데이터를 처리하기 위해 버퍼(Buffer)를 사용한다. 버퍼는 오디오 인터페이스로 전달될 데이터 컨테이너를 뜻하며, 동시에 오디오 데이터가 입/출력되는 속도를 결정하는데, Max에서는 이를 Vector라는 이름으로 부르는 것이다.

I/O Vector 크기는 [adc~], [dac~], [ezadc~], [ezdac~]과 같은 오디오 인터페이스와 데이터를 주고받는 오브젝트들이 보내는 데이터의 대역폭을 말한다. 샘플링 속도가 44100hz일때 벡터 사이즈가 512Sample이라면 Max는 오디오 데이터를 입출력하는 주기가 512/44100초, 즉 0.0116초마다 오디오 인터페이스와 512샘플 크기의 데이터를 주고받는다는 뜻이 된다. 벡터 사이즈가 줄어들수록 데이터를 주고받는 주기는 짧아지고 이는 곧 CPU에 더 많은 부하를 가하는 결과를 낳는다.

Signal Vector(신호 벡터) 는 무엇일까? 이는 MSP 오브젝트가 교환하는 버퍼의 크기를 말한다. 현재 Max의 신호 벡터 크기는 4로 되어있는데, 이는 오브젝트간 주고받는 데이터의 크기가 4 Sample이라는 뜻이며, 4/44100s 의 속도로 전송된다고 할 수 있다. 시퀀싱 등 샘플 레벨의 정확도가 필요한 패치를 디자인한다면 시그널 벡터 사이즈를 좀 더 작게 줄일 필요가 있고, 아니라면 사이즈를 좀 더 키워서 CPU 프로세싱 파워의 오버헤드를 키워줄 수도 있다.

따라서 현재 MSP 오브젝트가 데이터를 주고받는 속도, 이것을 Audio Rate라고 부른다.

Control Rate vs. Audio Rate

다음으로 Max 및 MSP가 데이터를 처리하는 방식을 비교해보자.

두 수를 더하는 동작을 Max 오브젝트인 [+ ]와 MSP 오브젝트 [+~ ] 를 통해 처리하였다. Max 오브젝트의 경우 오브젝트 오른쪽에 위치한 Cold Inlet(파란색으로 표시)에 먼저 데이터를 집어넣고 왼쪽의 Hot Inlet(빨간색)으로 나머지 숫자 2가 입력되었을 때 7이라는 값이 출력된다.

반면 MSP에서는 양쪽 Inlet이 모두 Hot Inlet으로 표시된 것을 볼 수 있다. 다만, 명심해야할 것은 Max내에서 처리되는 어떤 데이터도 동시에 처리되지 않는다는 것이다. MSP에서 데이터가 처리되는 것은 패처 내의 DSP의 동작 유무에 따라 결정되는데, MSP 시그널이 동시에 처리되는것처럼 보이는 것은 이 데이터들이 Audio Rate에 따라 처리되기 때문이다.

일반적으로 Max 오브젝트가 처리하는 신호들은 Video, MIDI, DMX, Serial 통신, OSC, UDP 데이터 등 오디오보다 상대적으로 느린 신호들이며, 이를 처리하는 속도를 Control Rate라고 부른다. 기본적으로 Max 오브젝트들은 밀리초(ms) 단위의 처리 속도를 가지게 된다.

[metro] 오브젝트는 ms 뿐만 아니라 Hz 단위로 속도를 설정할 수 있다.

[metro]를 고속으로 작동시켜서 bang을 보내야 하는 많은 경우중 하나는 비디오 재생을 위해 Jitter 오브젝트에 bang을 전달해야할 때가 대표적이다. 이 경우 metro가 bang을 보내는 속도는 1000/60초, 즉 16.67ms로 Audio Rate에 비해 현저히 느린 속도인 것을 알 수 있다. 이를테면 모니터 주사율이 144hz를 지원하고 이에 맞게 bang을 내보낸다 해도 1000/144초, 약 6.944ms이다.

자세히 보면 램프는 직선을 그리지 않고 계단 현상을 동반한다.

실제로 [line]과 같은 오브젝트로 선형적인 램프를 생성하다 보면 당연하게도 매끄러운 곡선이 아닌, 에일리어싱을 동반한 거친 형태의 선이 그려진다. 이는 모든 데이터가 전송되는 속도가 Control Rate에 맞춰져 있기 때문이다.

마찬가지로 Max 데이터를 MSP 도메인으로 변환하는 [sig~], MSP 데이터를 측정하는 [snapshot~]도 마찬가지로 ms 단위의 측정 속도인 Control Rate에 맞춰서 처리된다.

정확한 Clocking을 위하여

이러한 이유로 인해 Max for Live 디바이스를 이용해 아르페지에이터 등을 제작할때, metro를 이용해 타이밍을 계산해서 노트를 생성할 경우 실제 Live의 트랜스포트와 정확히 동기화되지 않고 지연되는 것을 볼 수 있다. 이 경우 보다 정확한 타이밍 계산을 위해서는 오디오 도메인에서 계산할 필요가 있으며 이를 샘플 단위로 정확한 클럭(sample-accurate clock)이라고 부른다.

Max가 제공하는 샘플 정확도의 두가지 클럭

샘플 정확도의 클럭을 만들기 위해 사용되는 오브젝트는 일정 주기의 램프를 Audio Rate에 맞춰 생성하는 [phasor~] 오브젝트이다. 만일 Live의 트랜스포트와 동기화된 phasor를 사용하고싶다면 Max for Live 에디터에서[plugphasor~]를 사용해야 한다.

Max 8.3 업데이트를 통해 시그널을 이용한 시퀀싱이 보다 쉬워지게 만드는 오브젝트 [what~]이 업데이트 되었는데, MSP 시그널을 이용한 시퀀싱에 대해선 다른 에피소드에서 다룰 예정이다.

참고 문서

DSP Tutorial: 오디오 샘플레이트

Ableton Live의 오디오 설정 메뉴
Ableton Live의 오디오 설정 메뉴

오디오 샘플레이트는 DSP를 공부하거나 DAW(Digital Audio Workstation) 사용자들이 가장 먼저 마주치는 기술 용어중 하나이자 쉽게 이해되지 않는 개념중 하나이다. 디지털 신호처리에서 샘플레이트란 무엇이고, 어떤 식으로 정의내려지는지에 대해서 알아보자.

아날로그 vs 디지털

아날로그 신호는 일반적으로 연속적인 신호라고 불린다. 일반적으로 우리가 측정하게 되는 신호는 초당 회전수 (cps, cycle per seconds) 또는 Hz, 즉 주파수만을 알 수 있다.

1Hz Sine 파형 그래프, 아날로그 신호는 연속적인 하나의 선으로 나타낼 수 있다.
아날로그 신호는 연속적인 하나의 선으로 나타낼 수 있다.

1Hz의 사인 파를 시각화한 자료를 보면서 우리가 자주 잊는 사실중 하나는 우리가 ‘파형’을 듣는 것이 아니라, 한 점의 궤적을 시간 선에서 모은 결과가 파형이라는 것을 잊는다는 것이다. ‘하나의 점이 0도에서 360도까지 사인 함수와 같은 반복 운동을 1초의 간격으로 수행한 결과‘ 가 곧 우리가 보는 사인 파형의 그래프인 것이다.

아날로그 신호 ADC 과정 일러스트, ADC 과정에서 사인 곡선이 아닌, 궤적 안에 있는 데이터들이 저장되어 단속적인 신호가 된다.
ADC 과정에서 사인 곡선이 아닌, 궤적 안에 있는 데이터들이 저장되어 단속적인 신호가 된다.

디지털 신호란 무엇일까? 간단히 말해, 디지털 신호는 일정한 시간동안 아날로그 신호의 궤적을 촬영한 것이라고 볼 수 있다. 결국 디지털 신호는 유한한 수를 가지는 샘플들의 집합이 될 것이므로, 이러한 신호를 우리는 단속적(Discrete) 신호라고 부른다.

샘플레이트는 아날로그 신호를 단속적 신호로 변환하는 과정에서 초당 몇 개의 샘플을 저장할지를 결정하는 속도이다. 오디오 매체 뿐만 아니라 비디오에도 샘플레이트와 유사한 개념이 존재하는데 그것은 프레임률(Framerate), 화면 주사율(Refresh Rate)이다. 샘플레이트를 설명하기 전에 먼저 애니메이션에 대 알아보자.

프레임률과 화면 주사율

얼마만큼의 프레임이 모여야 부드러운 애니메이션이 될까? 자연스러운 동작을 표현하기 위해서는 최소 15프레임 이상이 되어야 하며, 보다 부드러운 동작을 위해서는 24프레임, 30프레임 이상을 요구한다. 모든 프레임을 손으로 그려야했던 셀 애니메이션 시대에는 예산을 아끼기 위해 표현해야되는 동화에 맞춰서 사용하는 프레임수를 줄이는 형태의 가변 프레임률을 사용하기도 했다.

League of Legends 스크린샷, PC 벤치마크에서 빼놓을 수 없는 게임 벤치마크.
PC 벤치마크에서 빼놓을 수 없는 게임 벤치마크.

수없이 많은 벤치마크에서 지금 현재 사양의 CPU, GPU를 사용했을때 특정 어플리케이션 또는 게임의 프레임률이 얼마나 나오는지를 비교하곤 한다. 물론 이는 실제로 컴퓨터 성능을 알아볼 수 있는 척도이긴 하지만, 실제로 컴퓨터 화면이 이러한 프레임들을 어떻게 표현하는지 생각해본 적 있는가?

프레임수에 따른 이미지의 부드러움 차이 차트: 프레임이 증가할수록 동작은 부드러워진다.
프레임이 증가할수록 동작은 부드러워진다.

프레임률은 초당 몇개의 프레임이 모여 동작을 이루는지를 의미한다. 80FPS면 초당 80개의 프레임을 재생하고 있다는 뜻이다. 명심해야할 것은 게임상의 FPS는 소프트웨어 안에서 처리되는 속도를 말한다는 것이지, 실제로 모든 프레임이 모니터에 표현되는 것이 아니라는 점이다. 나의 게임 또는 그래픽 프로그램의 프레임률이 아무리 높게 나타난다 해도, 실제 우리가 보게 되는 화면의 속도는 가능한 속도는 외부로 출력되는 기기에 따라 정의내려진다. 이것이 화면 주사율(Refresh Rate)이다.

80FPS로 리그 오브 레전드가 돌아가고 있고 내 모니터의 주사율이 75Hz인 경우. 초당 80개의 동작을 75등분한 값인 75Hz, 즉 초당 75개의 화면으로 나뉘어져 나오게 된다. 주사율보다 프레임률이 떨어지면 부정확하거나 연속적인 동작 사이에 오류가 생기거나, 화면 속 캐릭터가 순간이동 하는 등의 시각적 오류가 일어날 수 있다. 이것에 대해서는 다음에 다루도록 하자.

나이퀴스트 정리

관측하고자 하는 파형이 x Hz일때, ‘최소한 얼마나 많은 샘플을 모아야 원본 신호와 최대한 비슷한 결과를 가져올 수 있는가?‘ 당연히 많을수록 좋겠지만, 비디오의 프레임률처럼 규격화된 시스템을 만들기 위해서는 디지털 오디오 또한 영상매체를 만들때와 비슷한 문제에 직면하게 된다. 이를 정의한 최소 샘플레이트에 대한 정리를 나이퀴스트-새넌 정리 (Nyquist-Shanon Theorem) 또는 표본화 정리라고 한다.

Nyquist 주파수 계산식

입력 신호 x(f)가 B Hz보다 높은 주파수 성분을 가지고 있지 않다면, 표본화에 필요한 주기는 최소 1/(2B) 초이다.

간단하게 정리하자면, 1Hz 의 신호를 측정하기 위해선 ‘최소한’ 1Hz의 2배, 즉 2Hz 이상의 속도를 가져야한다고 할 수 있으며, 이를 나이퀴스트 속도 (Nyquist Rate)라고 부른다.

1Hz 사인파의 최소 샘플링 위치

하지만 나이퀴스트 속도는 샘플링을 위한 최소 조건이지, 충분조건이 아니다. 1Hz의 사인파를 정보화하기 위한 최소한의 내용은 무엇일까? 파형의 궤적을 모두 완벽히 담지는 못하더라도 주파수가 무엇인지 알기 위해서는 파형의 Zero-crossing Point 및 최대/최저 값의 위치를 알아야 할 것이다. 따라서 샘플링 속도는 설정된 최소 나이퀴스트 속도의 두배인 4Hz가 되어야 할 것이다.

인간의 가청주파수 대역 (20-20khz)를 고려하였을 때, 오디오 신호처리를 위한 표본화 속도는 1/40000(2 * 20khz) 이상이 되어야 한다. 이때 처리 가능한 대역폭은 샘플레이트의 절반 값이 되며 이를 나이퀴스트 주파수(Nyquist Frequency)라 한다.

나이퀴스트 속도는 샘플링하려는 신호의 속도인 B Hz의 두배여야 하며, 나이퀴스트 주파수는 샘플링 속도의 절반이 된다.
나이퀴스트 속도는 샘플링하려는 신호의 속도인 B Hz의 두배여야 하며, 나이퀴스트 주파수는 샘플링 속도의 절반이 된다.

결과적으로 샘플링 속도는 측정하려는 나이퀴스트 주파수를 상회하는 속도가 되어야 하며, 이러한 이유로 PCM(Pulse Code Modulation) 오디오의 표준이라 할 수 있는 매체인 CD의 샘플레이트로 44.1khz가 채택되게 된다.

Fabfilter Pro-L 2의 오버샘플링 메뉴

하지만 44.1khz로도 가청주파수를 모두 커버할수 있을텐데, 어째서 많은 오디오 플러그인/신디사이저, DAW를 포함한 디지털 오디오 장비들은 이보다 더 높은 고속 샘플레이트를 지원하는 것일까? 이에 대해서는 다음 장에서 오버샘플링과 에일리어싱에 대해 다루면서 알아보도록 하자.

참고 자료:

Wikipedia – Oversampling

London Underground Through Overground

힙합엘이의 연재 기사 시리즈인 Essential 6라는 코너에 지난 8월 올린 글을 다시 이곳에 올려둔다.

영국에서 4년을 살았고, 킴 케이트(Kim Kate)의 많은 활동을 런던에서 시작했다. 단순히 베이스 음악을 좋아하는 것 이상으로 많은 영감과 영향을 런던에서 받았다. 이 때문에 음악 여섯 곡을 소개해달라는 부탁을 받았을 때, 단순 히 좋아하는 음악이 아닌, 매일 내게 영향을 준 장소들의 로컬 음악가 또는 친구의 음악을 이야기 하고 싶어졌다. 마 침 그 모든 음악가를 하나로 묶는 이야기, 런던 오버그라운드 지하철 정거장들과 함께 소개한다.

런던 오버그라운드(London Overground)는 그레이터 런던의 교외 지역을 한 바퀴 순환하는 형태로 만 들어진 전철 노선으로, 런던 시외의 아주 큰 구간을 책임지고 있다. 아이러니하게도 최근 젠트리피케이션 이 진행되거나, 혹은 이미 끝나버린 곳. 그러니까 힙이 모이고 힙이 끝나는 곳들을 다 관통하는 노선이었다.

  1. Ross from Friends — Golf School (New Cross Gate)

뉴 크로스 게이트(New Cross Gate)는 런던 동남부의 작은 역이다. 내가 통학하기 위해 들리던 곳이었 다. 그라임의 아이콘 중 하나인 노벨리스트(Novelist)가 사는 지역구인 루이스햄 보로(Lewisham Borough)의 가장 북쪽 자리이며, 아직도 로컬 덥 페스티벌, 파티가 활발히 열리는 곳이기도 하다.

첫 번째 소개할 음악가는 학교 동기인 로스 프롬 프렌드(Ross from Friends)다. 그는 2015년 재기 넘치는 로파이 하우스(Lo-Fi House) 트랙으로 가득한 [Alex Brown]를 시작으로 지난 3월, 하우스 레이블 랍스터 데어민 (Lobster Theremin)에서 [Don’t Sleep, There Are Snakes], [You’ll Understand]를 발표하며 많은 로파이 하우스 팬에게 지지와 관심을 받으며 빠르게 성장하는 중이다. OOUKFunkyOO, Molten Jets와 같은 유튜브 채 널 뿐만 아니라 BBC 라디오1(BBC Radio1)까지 그의 음악을 다루었으니, 앞으로도 더 많은 활동을 기대해봐도 좋을 것 같다. “Golf School”은 그의 첫 EP인 [Alex Brown]의 첫 곡으로, ‘프렌즈에 나온 로스’라는 이름처럼 재 기발랄한 그의 프로듀싱 스타일을 느껴볼 수 있다.

2. Henry Wu — Croydon Depot (Peckham Rye)

지금 런던 언더그라운드 음악에서 가장 흥미로운 지역이 어디냐고 묻는다면 역시 페컴(Peckham)일 것 이다. 보일러룸(Boiler Room)의 초창기 멤버였던 트리스 티안(Thris Tian)과 그의 새 파트너 월드와이 드 FM(Worldwide FM), 쇼핑몰 안에 비밀스럽게 감춰진 발라미 라디오(Balamii Radio), 매주 수없이 많은 파티를 호스트하는 부세이 빌딩(Bussey Building)과 레코드샵 라이 왁스(Rye Wax) 그리고 이제 는 꽤 유명한 레이블이 된 브래들리 제로(Bradley Zero)의 비밀스러운 파티 <리듬 섹션(Rhythm Section)>까지. 모든 움직임이 이 작은 역을 중심에 둔다.

그냥 따분하고 지루했던 2014년의 어느 금요일, 친구들이 동네 근처에 재밌는 파티를 하나 안다고 해서 따라갔다. 촬영을 엄격히 금지하고, 조명 하나 없이 어두운 당구장의 댄스 플로어에서 펼쳐지는 오직 바이닐만 플레이하는 파 티. 리듬 섹션에서 브래들리 제로와 함께 플레이하던 헨리 우(Henry Wu)를 발견한 게 그의 이름을 알게 된 계기였 다. 이후에 그가 재즈 밴드 유수프 카말(Yussef Kamaal)의 키보디스트이자 솔로 프로듀서라는 사실을 알았다. 동 시에 자일스 피터슨(Gilles Peterson), 벤지 비(Benji B) 등 수많은 레전드 디제이와 음악가의 지지를 받는다는 사실도 함께.

“Good Morning Peckham”은 동명의 앨범에 실린 마지막 곡으로 텁텁하고 그루비한 브로큰 비트 드럼과 베이스 의 시퀀싱, 허비 행콕(Herbie Hancock)의 [Head Hunters] 시절을 떠오르게 하는 신디사이저 사운드로 가득하 다. 같은 앨범의 “Croydon Depot”처럼, 헨리 우 외에도 같은 동남부 런던의 지역을 제목과 가사에서 호명하는 음 악가들의 곡이 더 있으니, 찾아보는 것도 또 다른 재미일 것이다.

3. Riz La Teef — Top 10 Dubplate Mix (Bedroom Dubplate Maker)

덥플레이트는 레코드의 정식 대량생산 전에 테스트 녹음용으로 제작되는 10인치 아세테이트 견본 레코드 를 의미하나, 최근은 미발표 곡이나 새로운 리믹스를 담아 소량 제작된 음반을 의미한다.

이번에 소개하는 건 믹스다. 믹스를 소개하는 이유가 뭐냐고? 이 믹스를 만든 이가 재능이 뛰어난 수많은 디제이/프 로듀서 사이에서 스킬이나 셀렉션이 아닌, 자신만의 방식으로 독보적인 존재감을 만들어낸 인물이기 때문이다. 리 즈 라 티프(Riz La Teef )가 언더그라운드 씬에서 놓쳐서는 안 될 디제이가 된 방법은 말 그대로 세상에 오로지 단 하나만 존재하는 버전, ‘덥플레이트’만 플레이하는 것이었다.

리즈 라 티프는 페컴의 발라미 라디오와 레이더 라디오(Radar Radio)에서 레귤러 쇼를 방송하는 디제이이자 베드 룸 ‘덥플레이트’ 메이커이다. TSVI, MM(Miss Modular), 스크레차 DVA(Scratcha DVA), 릴 실바(Lil Silva) 같은 베이스 뮤직 씬의 유명 프로듀서, 음악가들의 트랙부터 시작해서 그가 이메일로 받는 불특정 다수의 트랙까지 모 두 직접 ‘자신의 마음에 들면 덥플레이트로 제작’해서 플레이한다고 하니, 관심이 있는 사람이라면 자신의 트랙을 그 에게 보내봐도 좋을 것 같다.

4. Holloway & Simkin — Untitled (Goldsmiths, Merci Jitter)

골드스미스(Goldsmiths)는 내가 다녔던 런던의 대학교이며, 메르시 지터(Merci Jitter)는 다니엘 네스 (Daniel Ness)와 내가 함께 운영하는 레이블이다.

홀로웨이(Holloway)와 심킨(Simkin), 다니엘 네스와 나는 모두 골드스미스에 다녔다. 그중 같은 과 동기였던 홀로웨이는 런던에서는 이미 전도유망한 프로듀서이자 프로그래머로 활동 중이다. 린스 FM(Rinse FM)의 키사운드 (Keysound), 플라스티션(Plastician) 쇼에서 그의 곡들이 여러 번 플레이되었으며, 앞서 소개한 리즈 라 티프의 서포트를 받기도 했다. 이 곡은 메르시 지터(Merci Jitter)의 두 번째 컴필레이션, [Merci Jitter Movements Vol. II]에 수록한 곡이다. 참여한 음악가들의 곡 중 가장 많이 플레이된 곡이기도 하다. 어쩌면 나의 지나친 편애라고 생 각할지도 모른다. 하지만 듣고 나면 언급하게 된 이유를 알 수 있을 것이다.

5. Akito — Cherry Bisous (Radar Radio, Shoreditch / Shoreditch High Street)

쇼디치 — 올드 스트릿 지역은 젠트리피케이션 이후에도 여전히 흥미로운 가게들과 클럽들이 있다. 다섯번 째로 소개하게 될 레이더 라디오 또한 이곳에 있다.

라이브 스트리밍 시대에서 인터넷에 기반을 둔 해적 라디오는 전혀 낯선 개념이 아니다. 하지만 오직 오디오만 방송 하는 인터넷 해적 라디오 중에서도 레이더 라디오는 무척 인상 깊다. 그들은 단순히 인터넷을 통해 자신들의 믹스를 송출하는 것에 그치지 않고, 상시 개방된 스튜디오에서 벌어지는 여러 사람의 크고 작은 만남과 스튜디오 레이브 등 으로 런던 언더그라운드 씬의 큰 축으로 성장했다.

아키토(Akito)는 런던을 중심으로 활동하는 일본계 영국인 프로듀서/DJ이자 자신의 레이블, 산스 앱센스(Sans Absence)의 설립자이다. 여러 클럽 히트와 팝 트랙들을 절묘하게 섞은 블렌드 바이 아키토(Blends by Akito)와 데뷔 EP [Acid Fantasy], 아키토 & 프렌드(Akito & Friends) 등의 활동으로 런던의 신진 프로듀서들을 후원하 는, 2014년 이후의 UK 훵키 씬의 없어서는 안 될 인물로 자리 잡았다.

“Cherry Bisous”는 지난 4월 발매된 EP [Turbo Blues]의 첫 번째 곡으로, 콤플렉스 UK(Complex UK)를 통해 선공개 되었다. 그의 시그내쳐 스타일인 퍼커시브하고 미니멀한 구성의 비트와 화성 진행 그리고 아프리카 또는 남 미의 전통음악에서나 들어볼 만한 트라이벌 리듬, 그라임 샘플의 재해석과 같은 인터넷 기반의 댄스뮤직이 가지고 있는 맥락들을 끌어다 놓는다. 최근 영국발 베이스 뮤직을 팔로잉하고 있는 사람이라면 반드시 들어봐야 할 곡 중 하나라고 생각한다.

6. TSVI — Malfunction (Hackney — Dalston)

마지막으로 향할 곳은 Shoreditch에서 조금 더 올라가는, 남동부 런던 오버그라운드 라인의 종착역인 Dalston — Hackney 지역이다. 이스트사이더들의 본진(?) 정도로 인식되던 동네였고, Cafe OTO 등 생각보다 역사가 깊은 클럽, 바 들이 위치한 곳이었지만 젠트리피케이션의 흐름에서 생존하지 못하고 Dance Tunnel 같은 소규모 클럽들은 패브릭이 문을 닫는다는 소식이 나오기 약 2개월 전 쯤에 결국 영 업을 종료할 수 밖에 없었다. 하지만 여전히 웨어하우스 파티와 레이브가 펼쳐지고, 창고를 개조한 스튜디오에 사는 음악가와 예술가들이 존재하는 동네이다.

포스트-나이트 슬럭스, 클래시컬 커브스(Classical Curves)를 발매할 당시의 잼 시티(Jam City)가 보여준 새로 운 UK 훵키의 청사진-최근 들어서 에코-퓨처리즘(Eco-Futurism)으로 명명되기도 하는 그 사운드 (혹은 힐스고쓰 사운드트랙(Healthgoth Soundtrack)), 디지털 드럼 샘플러와 빈티지 신디사이저 모듈을 기반에 둔 미래적인 드 럼 댄스 트랙-을 이어받은 적자가 누구냐고 묻는다면, 망설임 없이 TSVI라고 말할 수 있다.

그는 2014년 파리를 기점으로 하는 레이블 B.YRSLF 디비전(B.YRSLF Divison)에서 [Malfunction]을 발매했 다. 이를 기점으로 동료 프로듀서인 월워크(Wallwork)와 함께 운영하는 레이블 너버스 호리즌(Nervous Horizon)을 통해 여러 EP와 컴필레이션들을 내놓았다. 이를 통해 언더그라운드 댄스음악 씬에서 ‘전혀 버릴 트랙 이 없는 음악을 내는 레이블’이란 명성을 프로듀서와 디제이들에게 얻으며 자신들의 영향력을 확고히 세웠다.

현재 그는 앞서 소개한 아키토, 작년에 한국을 방문하기도 했던 룸(Loom)과 함께 애시드 판타지(Acid Fantasy) 의 멤버로 활동며 인스트루멘탈 댄스 트랙 외에도 니코 린세이(Nico Lindsay), 잼즈(Jammz)와 같은 MC와 함께 그라임 곡을 발매하기도 했다. 이 모든 것에 시작을 다시 기억하기에 “Malfunction”만한 트랙이 없다는 생각이 들 었다. 베이퍼웨이브는 아니지만 콘크리트와 관엽식물들, 기계로 가득찬 공간에 대한 상상으로 가득했던 2013- 2014년의 그 분위기를 다시 곱씹어볼 만한 기회가 되지 않을까.