본문 바로가기

만들기 / Programming/MAXMSP,Jitter

메시지의 순서(Message Order)

보통 하나의 오브젝트에는 한 개 이상의 아웃렛이 있으며,  메시지를 보낼 때는 모든 아웃렛이 ‘동시에’ 메시지를 보내는 것처럼 보입니다. 그러나 실제로는 동시에 일어나는 일이란 없습니다.  메시지 전송은 아주 빠른 속도로 진행되기 때문에 한번에 동시에 진행되는 것처럼 보이지만, 맥스에서 메시지의 순서가 실제로는 어떤지를 아는 것은 중요한 일입니다.



하나의 오브젝트가 여러 개의 오브젝트에서 여러 개의 메시지를 한번에 내보낼 때, 실제로는 오른쪽에서 왼쪽의 순서로 메시지를 차례로 보냅니다. 가장 오른쪽에 있는 아웃렛이 제일 먼저 메시지를 보냅니다. 그리고 나서 그 다음 바로 옆에 있는 것에서부터 맨 왼쪽에 있는 아웃렛까지 차례로 메시지를 보냅니다. 맥스에서 모든 오브젝트는 실제적으로는 이런 식으로 작동합니다.

왼쪽에 있는 그림에서는 오른쪽에서 왼쪽의 순서에 따라 아웃렛에서 메시지를 전송한 결과를 도식적으로 설명해 놓았습니다. 오른쪽에 있는 그림에는 하나의 아웃렛에 많은 패치 코드가 연결되어있습니다. 이 여러 개의 패치 코드들은 각기 다른 오브젝트의 인렛에 연결되어 있습니다.

이런 경우에 메시지를 보내는 순서는 메시지를 받는 오브젝트들이 화면상에 배열된 위치에 따라 오른쪽에서 왼쪽의 차례로 진행됩니다.  만약에 메시지를 전달 받는 오브젝트가 (어느 것이 더 오른쪽에 있는 지를 구별할 수 없게) 수직으로 배열되어있다면 명령은 밑에 것에서부터 위의 순서로 전송됩니다. 만약 하나의 아웃렛이 같은 오브젝트 안에 있는 다른 두 개의 인렛에 연결되어 있다면 오른쪽에 있는 인렛이 먼저 메시지를 받게 될 것입니다.

하나의 오브젝트가 한 개 이상의 인렛을 갖고 있으면, 메시지는 오른쪽에서 왼쪽의 순서로 받게 될 것입니다. 일반적으로 오브젝트는 제일 왼쪽에 있는 인렛이 메시지를 받을 때까지 전달 받은 모든 메시지를 저장하고 있습니다. 맨 왼쪽 인렛까지 메시지를 다 받고 나면 필요한 작업을 수행하고 아웃렛을 통해 메시지를 내보냅니다. 대부분의 오브젝트에서 가장 왼쪽의 인렛이 메시지를 받으면 이것이 신호로 작용합니다. 가끔 예외가 있기도 하지만 대부분의 모든 오브젝트에서 가장 왼쪽 인렛이 신호가 되는 인렛입니다. 이런 원칙에 예외도 있기는 하지만 왼쪽에 있는 인렛은 대부분의 오브젝트에서 인렛에 신호를 주는 역할을 합니다. 오브젝트는 메시지를 오른쪽에서 왼쪽으로 메시지를 보냅니다. 그래서 오브젝트가 맨 마지막에 받는 메시지가 보통 아웃풋을 내도록 하는 신호가 되기 때문에 이런 메커니즘을 이해하는 것은 중요합니다.



어떤 오브젝트가 왼쪽 인렛으로 일련의 숫자를 전달 받습니다. 그러면 오른쪽에서 왼쪽의 순서로 다른 인렛으로 전달 받은 숫자와 똑 같은 결과가 나올 것입니다.



자기가 받은 메시지를 보내기 위해서  수신 오브젝트에 신호를 준다고 가정해 봅시다. 이런 경우에는 순서가 어떻게 될까요? 먼저 메시지는 수신 오브젝트에 신호를 줍니다. 그리고 오브젝트의 아웃풋이 전송됩니다. 메시지는 다른 반응 신호가 더 이상 일어나지 않을 때까지 계속해서 다른 오브젝트에 신호를 줍니다. 그러고 나서 맥스는 원래의 발신 오브젝트로 돌아가서 다음 메시지 전송을 시작합니다.

In the example below, note that steps 3, 4, and 5 are all performed (up to the point where no fur- ther message is triggered) before the message is sent to the left inlet of the + object.

다음 보기에서 메시지가 +오브젝트의 왼쪽 오브젝트에서 메시지가 noteout 오브젝트로 전달되기 전에 더 이상 처리할 다른 메시지가 없을 때까지3, 4, 5번의 과정은 계속됩니다.

 

'만들기 / Programming > MAXMSP,Jitter' 카테고리의 다른 글

맥스 문서(Max Documents)  (0) 2008.10.04
창(Windows)  (0) 2008.10.04
둘러보기  (0) 2008.10.04
셋업하기  (0) 2008.10.04
맥스란 무엇인가?  (0) 2008.10.04