[msd]的開發者是知名pd創作團隊chdh的Nicolas Montgermont在2006所開發的。
[msd]下載網頁
[msd]的主要物件有三種,分別為[msd],[msd2D],[msd3D],這三個物件的差異其實並不大,[msd2D]比[msd]多了Y軸,[msd3D]又比[msd2D]多了Z軸這維度。
使用msd必須宣告mass和link的數量以及大小,他們的連結方式可以自定,最基本的範例如下圖。

我們自定三個mass,並且決定它們的連結方式為mass--mass--mass,以類似火車車廂的方式連結。
所以在pd中我們可以這樣撰寫(如下圖)

一開始先送reset給[msd],接下來我們把三個自定的mass給一樣的命名和參數,參數的意義:
[mass $1 $2 $3 $4(
$1:身分(string)
$2:固定或是可移動(0 or 1)
$3:質量
$4:初始位置
所以[mass M1 1 100 50(的意思為,建立一個名叫M1的mass,他是可以被連動的,並且質量為100,x初始值為50。
並且用link將三個"M1"連結起來,link參數的意義為:
[link $1 $2 $3 $4 $5 $6 $7 $8(
$1:身分 (string)
$2:身分 第一個質量(int)
$3:身分 第二個質量(int)
$4:剛體
$5:阻尼
$6:剛體距離的力量
$7:最小長度的連結
$8:最大長度的連結
[msd]下載網頁
[msd]的主要物件有三種,分別為[msd],[msd2D],[msd3D],這三個物件的差異其實並不大,[msd2D]比[msd]多了Y軸,[msd3D]又比[msd2D]多了Z軸這維度。
使用msd必須宣告mass和link的數量以及大小,他們的連結方式可以自定,最基本的範例如下圖。

我們自定三個mass,並且決定它們的連結方式為mass--mass--mass,以類似火車車廂的方式連結。
所以在pd中我們可以這樣撰寫(如下圖)

一開始先送reset給[msd],接下來我們把三個自定的mass給一樣的命名和參數,參數的意義:
[mass $1 $2 $3 $4(
$1:身分(string)
$2:固定或是可移動(0 or 1)
$3:質量
$4:初始位置
所以[mass M1 1 100 50(的意思為,建立一個名叫M1的mass,他是可以被連動的,並且質量為100,x初始值為50。
並且用link將三個"M1"連結起來,link參數的意義為:
[link $1 $2 $3 $4 $5 $6 $7 $8(
$1:身分 (string)
$2:身分 第一個質量(int)
$3:身分 第二個質量(int)
$4:剛體
$5:阻尼
$6:剛體距離的力量
$7:最小長度的連結
$8:最大長度的連結
所以[link l1 0 1 10 10(的意義為,建立一個連結索引值為0跟1的mass,並且將這個鏈結命名為l1,它的rigidity為10,damping也為10。
連結圖示如下

最後送出[Xmax 100,Xmin 0(限定x軸的最大值100最小值0。
接下來為了讓[msd]運作,我們必須送[bang]去觸發msd,必且選擇你要msd回應什麼?

上圖的patch,[msd]會輸出massesPosL訊息出來。上圖範例輸出的結果會是[massesPosL 50 50 50(,這代表三個m1值都是50。
而[msd]能輸出的訊息包括:
[infosL(,輸出所有訊息
[massesPosL(,用list的方式輸出x軸的值大小。
[massesForcesL(,用list的方式輸出作用於mass的力。
[get massesPos(,條列輸出mass的索引編號,還有x軸大小,如果以上圖範例會得到:
[massesPos 2 50,massesPos 1 50,massesPos 0 50)
[get massesPos $1(,輸出特定mass的x軸值。($1在這範例中,能填的值有0,1,2),如果用[get massesPos 1(,在本範例會得到,[massesPosNo 1 50)。
最後透過送出[posX 0 $1(,這訊息去控制索引值為0的mass,而索引值1,2的mass也會受到連動而改變自己的X軸的值大小。


最後送出[Xmax 100,Xmin 0(限定x軸的最大值100最小值0。
接下來為了讓[msd]運作,我們必須送[bang]去觸發msd,必且選擇你要msd回應什麼?

上圖的patch,[msd]會輸出massesPosL訊息出來。上圖範例輸出的結果會是[massesPosL 50 50 50(,這代表三個m1值都是50。
而[msd]能輸出的訊息包括:
[infosL(,輸出所有訊息
[massesPosL(,用list的方式輸出x軸的值大小。
[massesForcesL(,用list的方式輸出作用於mass的力。
[get massesPos(,條列輸出mass的索引編號,還有x軸大小,如果以上圖範例會得到:
[massesPos 2 50,massesPos 1 50,massesPos 0 50)
[get massesPos $1(,輸出特定mass的x軸值。($1在這範例中,能填的值有0,1,2),如果用[get massesPos 1(,在本範例會得到,[massesPosNo 1 50)。
最後透過送出[posX 0 $1(,這訊息去控制索引值為0的mass,而索引值1,2的mass也會受到連動而改變自己的X軸的值大小。
