2010年4月28日 星期三

[筆記-24] pmpd的[mass]&[link] 初探一




mass的參數

1.weith of the masse [setM]
[setM 10] 設定質量為單位10

2.position of the masse [setX]
[setX 50] 設定位置初使值為50


[setXmin -50,setXmax 200] 設定距離的最小值為50,最大值為200
[mass] 左下的outlet為目前距離;中下outlet為目前力量;右下outlet為目前速度




link的參數

1.lenght [setL]
link跟mass距離,如果是lenght是 0,link值是158,mass最後的值也會是158。
如果lenght是 20,link值是160,mass最後的值會是140(160-20)。

2.rigidity [setK]
推進的速度或力道,值越大跟隨的速度越快。

3.Damping of the link deformation [setD]
值等於0時,振盪不會縮小,值越大阻值越大,愈快到目標值。

4.Damping of the masses speed [setD2]
值越大,速度







2010年4月23日 星期五

▌pd小練習_氣泡排序法(bubble sort)

檔案下載


其實在pd本來就有[sort]這功能,不過我還是想試試用C語言的同樣邏輯與方法在pd重現

紅色的slider可以控制亂數產生的數量(0-100),按下bang按鈕後,就可以在陣列array1
上,看到自動排序的過程。

如果能把他運用在gem裡,光是想像畫面就覺得會很有趣。


#include<stdio.h>

#include<stdlib.h>

#include<time.h>


void swap(int *x,int *y);
void bubble(int *c,int d);

int main (int argc,char *argv[]){
    int i;
    int th; //幾次//
    time_t t;
  
  
    printf("\n\n");
    printf("請輸入要產生的亂數次數:");
    scanf("%d", &th);
  
    int num[(th-1)];
    int *ptr;
    ptr=num;

  
    printf("\n要產生=%d次亂數\n\n",th);
    printf("\n ==================================================== \n");
  
    srand((unsigned)time(&t));
    for(i=0;i<=(th-1);i++){
        num[i]=rand()%1000+1;
        printf(" 第 %d 次亂數= %d \n\n",i+1,*(ptr+i));
    }
    printf("排序前= \t");
    for (i=0; i<=(th-1); i++) {
        printf("%3d \t",*(ptr+i));
    }
    printf("\n ==================================================== \n");
  
    bubble(ptr,th);
    printf("\n");
    printf("排序後= \t");
    for (i=0; i<=(th-1); i++) {
        printf("%3d \t",*(ptr+i));
    }
    printf("\n\n");
    return 0;
  
}

//----------------------------------------------------//

void bubble(int *c,int d){
  
    int i=d-2;
    int j;
    for(i; i>=0; i--)
    {
        for(j=0; j<=i; j++)
        {
            if(*(c+j)>*(c+j+1))
            {
              
                swap((c+j),(c+(j+1)));
                  
              
            
            }
        }
    }
}


void swap(int *x,int *y){
    int tmp;
    tmp=*x;
    *x=*y;
    *y=tmp;
}
   

2010年4月18日 星期日

[筆記-20] [swap]的法用

[swap]交換,是個乍看之下很不須要的物件,我們有時後會直覺就是把線交換就好,不過這時後輸入的數值就會有hot、cool的差別,這時候[swap]就很好用了,他可以保持原本數值的主導性。

2010年4月17日 星期六

松尾高弘的幻影(舊文重發)





上次聽maxray介紹Siggraph的相關藝術品中,有一件作品特別令我印象深刻, 這件作品就叫做

『phantasm』 中文可以翻譯成幻影。這是松尾高弘Takahiro Matsuo 這位年輕的日本互動藝術家

2006所年創作的,在這件作品中觀眾只要拿著紅色發光的球在展場中遊走,蝴蝶就會跟著紅球

在你身旁翩然起舞,會特別喜歡這件作品是因為 它紓解了一些我童年長久對昆蟲的恐懼感,記得

小時候總是在傍晚回家的路上 看著蝴蝶、飛蛾等昆蟲路燈下飛舞,他們被本能趨光性所控制,

所以縱然高溫的路燈會燒死他們,他們還是不顧一切的往有光的地方衝,也使的的路燈下往往都是

他們壯烈成仁之後留下來的屍體,害怕昆蟲的我看到這場面更是不舒服,並總是加速腳步逃離現場。

但觀看這件作品時卻紓解了我一些對昆蟲的厭惡,因為作者藉由投影機所構成的畫面是這樣的美好,

只見在昏暗的空間中,充斥著彷彿是精靈般的蝴蝶,當你打開你手邊唯一的光源紅球,他們就一擁而

上在你身旁跳躍。我一直認為好的藝術作品在你看到它第一眼你就會愛上它,而無需多做解釋,而這

件作品就讓我感覺到如此。







另外這件作品我也很喜歡『Prince and Migrant Birds』,應該是藉由小王子故事裡的情結所衍生的作品



2010年4月15日 星期四

▌pd小練習_九九乘法表-2

上周去上李駿大師的gem工作坊時,有跟他提到我有用pd練習做九九乘法表,並且遇到一些數值處理先後順序的問題。我當初寫該程式時不得不用一些[buddy] ,[pipe]等物件去延遲訊號讓運算同步,我自己認為不是太好的解法,而李駿不虧是大師中的大師,瞬間幫我解答這個問題,以下是它的解法(完全用不著[delay]等物件)。



[筆記-19] 將訊號送進畫布(canvas)



▌pd小練習_用pd-msg來呼叫patch


首先你可以在pd help裡的 manuals/pd-msg/ 看到相關用法,對我來說這功能可以當作是呼叫自訂的函式來使用,不過其實他功能還很多,相關運用也有很多可能,也許下次可以想想更多可能用法。




既然是要呼叫自訂函示,所以當然會有主程式以及被呼叫的函式,在這練習裡我必須先寫好一個函
式,我把他叫做box.pd,並且把這個patch放在跟主程式main.pd同資料夾。



上圖是主程式,當按下空白鍵時就可以去bang一個新的box,我讓box數量控制在30個,也就是說當數量達到30個後,就會去刪除第一個物件[box 1]再生出個一新的[box],依序產生新的循環。
[obj $1 $2 box $3]代表的是產生一個物件box,它的軸及Y軸坐標分別是$1 $2 而物件編號是$3。並且將新的物件送到main程式本身上。



當[box]函示被呼叫後,就會自動亂數產生新的坐標值,並且我讓他Z軸線性的往前進。




航向外太空的飛船 正式起航 GO!!

▌pd小練習_用迴圈來產生多個物件



以往我們要在gem進行繪圖時,都會用一個gemhead來產生一個物件,在這個練習裡我運用了迴圈的概念,將單一個gemhead進行[repeat],並且使用[separator]讓每個新產生出來的物件都可以擁有自己的坐標以及其他連帶的參數。
這些參數分別存進個別陣列裡,例如我就用了pos_x、pos_y、pos_z三個陣列來儲存每個我所畫出來圓圈的坐標。
並且再運用一次[separator]將這些參數賦予在文字編號上,這樣一來每個圓圈也會帶有自己的名字。

2010年4月9日 星期五

[筆記-18] 用[moses]來作數值判斷的開關

 可以用[moses]這個物件來判斷輸入數值的大小,在結合[spigot]物件
就可作成判斷線性數值的開關。(此範例中超過10的數值才會被輸出)

2010年4月6日 星期二

聲納


聲納sonar from kicko on Vimeo.
這是為了4月4號在國美館的演出,所進行的排演。我使用puredata來產生聲音,並將訊號丟給小黃讓他用vvvv去生成影像。在第二段時加入燈管元 素,使得繼電器與日光燈管start產生的開關聲與原本正弦波混搭,製造另外的碰撞與高潮~

----------------------------------
後記:
當天的表演 狀況超多的,不管是環形360度投影以及聲音輸入輸出的掌控,都出了很多問題,是個非常刻苦銘心的慘痛經驗....





-------------------------------------------------

後記 當天的表演

▌pd小練習_九九乘法表





這個patch是為了練習巢狀迴圈(迴圈裡還有迴圈),在loop1裡可以控制大迴圈,loop2裡可以控制小迴圈,這patch裡比較重要的觀念是[repeat],[buddy],[pipe]等物件的用法。檔案下載

▌pd小練習_任意數的總和




這個patch可以用來計算0-任意數的總和,只是如果在c語言裡,這程式只要寫一行
for(int num=1;num&gt;=100;num++),但在pd裡卻是如此大工程(有誰可以想到更快解法嗎?)
所以說pd很簡單,也很不簡單.....
檔案下載