목록개발 공부/Max 공부방 (5)
음악, 삶, 개발
앞서 파트3 에서 [dict] 는 global 하게 [mtr] 전체를 업데이트 한다고 했는데, 각 개별 track inlet 으로 [dict] 를 넘길수있는데, 이에 대한 내용이 공식 문서에 나와있지않았고, 일종에 reverse 엔지니어링을 통해 발견하였다. 먼저 [dict] 속 데이터의 구조는 아래와 같다. { "events" : [ { "time" : 0, "message" : "hello", "args" : [1, 2, 3, 4, 5] } ], "length" : 0.0, "loop" : 0, "trackspeed" : 1.0, "type" : "track" /* 반드시!!!!!!! */ } 반드시 type 속성에 "track" 이라고 명시되어야하며, 이게 없다면 에러가 뜬다. 이를 내가 원하는 해..
앞서 addevent 를 사용하여 이벤트를 추가하는 방법을 배웠다. addevent 가 가장 기본적인 방법이긴하나, 동시에 수십개의 이벤트를 한번에 집어넣고싶다던지 한다면 결국 js 를 통해 루프를 만들어야할텐데 꽤나 귀찮은 작업일수있다. addevent 를 여러번 호출해서 이벤트를 추가하는 방법보다, 한번에 객체를 [mtr] 에 할당하는 방식으로 [dict] 를 넘길수있다. 먼저 [dict] 에 이벤트들을 작성한다. /* [dict] 안에 들어갈 데이터 */ { "tracks":[ { "events":[ { "time":0.0, "message":"list", "args":[ 1000.0, "two" ] }, { "time":0.0, "message":"list", "args":[ 0.0, "one" ..
addevent 라는 메세지를 통해서 [mtr] 에 특정 시점에 이벤트를 추가할수있다. 이 시점은 ms 또는 @sync 1 일 경우 tick 으로 정의된다. tick 으로 정의되는 경우는 추후 다른 포스팅에서 설명하도록 하고, 먼저 ms 로 event 를 추가하는 방법을 알아보겠다. addevent 메세지는 기본적으로 2개의 인자를 받게되는데, 첫번째는 어느 시점에 추가할지 ms인 float 이고, 두번째는 이벤트명이다. 하지만 이벤트명만으로는 이벤트를 추가하는데에 충분하지않다. 우리는 다양한 정보들 (velocity, pitch 등등) 을 저장하고싶을것이다. 이때는 길이의 제약없이 $3 $4 $5... 계속 늘려나갈수있고 이는 array 가 된다. ..
Max 7.2 Pressure (Polyphonic-Aftertouch) Slide Pitch 나는 MPE 가 지원되는 컨트롤러를 가지고있지않다.
mtr 은 내가 너무너무도 기다려온 Max 8.1.6 에서 새로 추가된 object 이다. mtr 은 multi-track-recorder 의 약자로 Max 에서 timeline 을 구현할수있는 event sequencer 이다. 사실 새로 추가된것은 아니고, 기존에 있었던 object 인데 거의 새로 쓰여진 object 이라고 보는게 맞다. event 를 원하는 지점에 추가 또는 녹음할수있고 추후 이 event 들을 playback 할수있다. 공식문서에는 아래와 같이 적혀있다. "Records messages and provides sequenced playback." message 를 녹음하라고되어있지만, 녹음뿐만 아니라 sequencer 처럼 event 를 추가할수있다. 사실 mt..