2010年7月21日 星期三

▌pd小練習_ 任意的頻率來產生相對八度音


隨意一個音都能夠產生八度音 from kicko on Vimeo.





根據wiki上對12平均律的解釋:將八度音等分為十二等分,其數學意義如下:
八度音指的是頻率加倍(即二倍頻率)。因此在八度音中分為十二等分乃是分為十二個等比級數,其結果就是每個音的頻率為前一個音的 倍。


[ expr $f2*(pow (2, ($f1/12))) ]

ps 影片裡的 fa 位置有錯,然後圖片跟檔案都是正確的。




檔案下載

[筆記-33] [seq] 存取midi訊號


[seq] test from kicko on Vimeo.

前兩天圓圓問到pd有無可以讀取.midi檔的方法,當是我回答我也不清楚。
因為我的midi訊號都是在pd產生,或是藉由鍵盤等樂器將訊號輸入。
後來honki提到其實pd有[seq]這個物件來存取midi訊號,我才知道pd原來還有這功能。(那當初sound bit 我寫的要死不活是怎麼回事......)
總之在pd裡可以透過[seq]這物件來載入外部midi檔,也可以將自己在pd產生的訊息匯出成外部的midi檔。

影片中的測試分成兩部份,第一部份是我去載入網路上找到的midi檔,第二部份則是藉由akai的lpk25,來簡單的彈奏快樂頌。
並且將訊息儲存成.midi檔,在把它讀取播放出來。

2010年7月20日 星期二

[筆記-32] [vcf~] voltage controlled bandpass



就我目前所瞭解[vcf~]它跟[bp~]的差異,就只有center frequency 的輸入不同(一個是聲音訊號,一個是數值)的差異...

有人能跟我說明更多其中不同嗎?

[筆記-31] [bp~] bandpass filter 帶通濾波器


[bp~] 簡單來說就是一個帶通道的聲音濾鏡,我們可以透過center frequency去選擇讓它通過的頻率,也可以透過Q點去調整過濾的大小(數值越大,得到的頻率越準確)。

[bp~]左上的inlet是原始頻率 中上是 center frequency 右上是Q點。

2010年7月15日 星期四

[筆記-30] [bondo]


有時候我們使用[expr]時會發現,數值運算結果錯誤。(例如左上方就算成42)
其實原因多半是數值未有效的輸入進[expr],當然有很多種處理方法,例如每送出
一個新的數值就去bang第一個[expr]的inlet,不過我後來發現用[bondo]這個function更方便,
反正它就是把每個數值都改成hot message,這樣一來任何數值進expr,都會及時運算。

▌pd小練習_ gemmouse2(滑鼠拖拉及兩點距離公式)

gem_mouseDrag from kicko on Vimeo.


我還記得當初學flash的時候,這個效果只要幾行程式就可以寫完,所以說pd是很簡單也很複雜的軟體....囧
在這patch裡我用[gemmouse]去偵測滑鼠座標,如果該座標剛好跟圓形的座標相減小於0.5(圓的半徑為0.5),
我就因此判定他選到的是那顆圓形,當按下滑鼠左鍵,就可以將滑鼠的座標輸入到圓形,因此就會有MouseDrag的效果。

然後這個patch裡順便練習一下,兩點距離公式(AB=√((x1-x2)^2+(y1-y2)^2)),然後依此來做聲音的調變。

檔案下載

2010年7月14日 星期三

▌pd創作_ Game of life

use puredata to create "Game of life" from kicko on Vimeo.


一開始寫這程式前卡關很久,就一直花時間在網路上試圖找到有無其他人的創作可參考。
不過後來還是回歸現實面,自己從生命遊戲的規則去推導這隻程式的邏輯,反而進行的很快。

規則其實很簡單,只要分成兩部份去處理就好(以下是網路上找到的規則 生命遊戲,與其規則

◆ 對於存活的細胞:
  當有二或三個存活的鄰近細胞時,才能繼續存活(表示為 Survivals=23)

◆ 對於死亡的細胞:
  當恰有三個存活的鄰近細胞時,則誕生活細胞(表示為 Births=3)

只要遵循這規則,然後由左到右,從上到下,逐一的對每個方塊做狀態確認,跑到最後一格時,才將所有變更數值一起送出,
其實就做完了。(本以為會比上個練習難,但發覺根本沒有 立方體切割

聲音的部份目前還沒有處理好,同時間觸發很多正弦波似乎會有所干擾,我還要想想要怎麼改比較妥當。

檔案下載

2010年7月11日 星期日

▌pd小練習_ gemmouse的使用(順便練習套用加速度來變更移動位置)




有網友詢問[gemmouse]怎麼使用,我就以這個簡單範例來解釋。
當按下滑鼠左鍵時可以去把gemhead打開或關閉。而第一及第二個[gemmouse]的outlet則可以偵測滑鼠在gem視窗上的坐標。

檔案下載

2010年7月8日 星期四

[筆記-29] [change] 改變



不管是做影像偵測或是聲音偵測,好像都會遇到數值雖然沒變但其實一直在接收訊號,
並且重複將訊號送出。

可是往往我們希望相同訊號只送ㄧ次,例如上回送1,這次又送1時,我們要將訊號視而不見。
這時候[change]就超級好用了(雖然我還是覺的叫[different]不是更好理解嘛...)

[筆記-28] [prepend] 前置訊息


在左邊這個patch中藉由[set orange]及[set apple]可以將訊息前置在累加的數字前。

[prepend set]可以將訊息顯示在[message]裡(畫面裡是orange 8)

▌pd創作_ 立方體的切割


split cell from kicko on Vimeo.

這一個練習和另外一個預備要寫的康威的生命遊戲,都是我自己開給自己的暑假程式作業。
想寫這隻程式已經很久了,今年的open lab跨年趴時,就跟聖博約好一起用不同自由軟體來完成它。
只是聖博大師當晚就完成了,而程式初心者的我,過了半年才有時間花了四天去寫完它。
(真是汗顏,人家是一個晚上,我是四天)

當晚要做的只是平面矩型的切割,也沒有包含聲音(好像也沒啥不同...),不過我終究是用了連李駿大師都說:
”pd寫這東西有複雜喔!“的軟體 puredata去完成它(因為它跟其他文字型物件導向語言還是有不同,比較難呼叫)。
過了半年才寫出來的原因,除了是暑假時間比較多以外,另外一點就是前鎮子跟經堯合作的科技表演Distortion City,在那表演裡有一段程式,
就需要不停的用陣列儲存新的物件,也是因為那個實作,才讓我用習慣了陣列的用法。(在gem裡用repeat和separator去對同一個物件切割,並且將新的物件的參數都儲存在不同陣列)。

寫完之後我自己很開心反覆的執行這patch,這對一年前連1加到100的程式都不會寫的我,真的是很大鼓舞。
最後,真的很感謝在程式上啓蒙我的巧三,還有在pd上惠我良多的李駿以及經堯,你們讓我完成了一年前我不敢做的夢(Coding)。

ps.因為我將每個分裂的方塊都做計算,所以帶耳機比較能夠聽出不同方塊的聲音差別,也比較立體。

檔案下載

2010年7月5日 星期一

[筆記-27] 數值冷熱開關輸入的不同

我自己也常犯這這個邏輯的小錯誤,總之如果從左邊的inlet輸入零,下一次訊號輸出就是1;
反之如果從右邊的inlet輸入0,下次輸出訊號是0。


2010年7月4日 星期日

▌pd創作_ box2d 球體碰撞

上次看到田所淳來北藝大示範openframework時,看到他用of做了這樣子的範例,
自己當下就想要用pd做看看。不過自己做完後總感覺哪裡怪怪的,聲音跟互動反應好像都沒有田所淳所展示的範例有趣。到底是哪裡出了問題了呢?


box2d 球體碰撞練習 from kicko on Vimeo.

2010年7月3日 星期六

▌pd小練習_ 直線運動

這是個套用自由落體公式(d=1/2gt^2)的簡單練習,在不考慮空氣阻力下,讓球體進行持續的上下跳動。