Live API에 접근하기 – Live Object Model

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

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에서 템포를 바꿀 수 있다.

예제 다운로드하기: tut.live.path.amxd

발행일
카테고리 Blog