2010年9月30日 星期四

P5的基本繪圖_4 Easing

以下是processing的原始碼

範例在這


float x;
float y;
float targetX, targetY;
float easing = 0.05;

void setup()
{
size(200, 200);
smooth();
noStroke();
}

void draw()
{
background( 51 );

targetX = mouseX;
float dx = targetX - x;
if(abs(dx) > 1) {
x += dx * easing;
}

targetY = mouseY;
float dy = targetY - y;
if(abs(dy) > 1) {
y += dy * easing;
}

ellipse(x, y, 33, 33);
}


以下是puredata的做法
需要注意的是,在processing 是透過void draw()去跟新畫面,在pd的做法我是讓gemhead產生bang(send bb),去觸發easing的效果。





檔案下載

2010年9月26日 星期日

P5的基本繪圖_3

在processing練習中,我們自定了[drawtarget]這個function,這包函式裡包含了圓圈的大小,位置,顏色,以及複製的數量。

因此我們只要重複呼叫[drawtarget]就可以快速的產生多組圖形。

我在pd中也是用一模一樣的做法來玩成這支程式,包含物件命名以及參數的對應都相同。不過需要注意的是,在processing裡圓的直徑如果是200時,是填滿整個螢幕的大圓。而pd卻是直徑4為填滿視窗的大圓.

然後就算我在pd開了[FSAA 8]來反鋸齒,算圖品質依然是大輸processing阿...so sad






檔案下載

P5的基本繪圖_2

在這一個練習裡,紅色的直線會隨著時間往上移動(y軸移動),然後移動到最高點,會返回視窗最底點做循環移動。

然後我實在不懂gem的座標到底怎麼計算,正常當畫面是預設值大小是x,y(500px,500px),他預設的y軸最高點為4,最底點為-4。但這個範例裡長寬為x,y(200px,200px)時最高點就變成3,最低點為-3,它座標的轉換邏輯是甚麼我實在搞不懂?

有人能解答我嗎?






檔案下載

P5的基本繪圖_1

最近因為某些原因要開始玩processing,不過因為我對逐行撰寫的程式語言很有恐懼感,

所以我想照著processing官方網站上的教學開始練習起。但畢竟我程式的啓蒙是pd,

所以為了在練習processing時不荒廢pd,我規定自己每當我完成一個processing程式時,

我就用pd寫一個一模一樣的,證明processing可以的pd也都行。

以下是我第一個processing練習,畫面裡是一個縱橫交錯的棋盤線。

在撰寫這影像的過程,processing裡只要少少幾行就可以撰寫完畢,但pd就得複雜弄一大串。

我自己也很明顯的從這一個範例中體認到,在繪圖功能上processing實在遠勝pd阿。








檔案下載

2010年9月2日 星期四

playaround 2010 助教筆記三

第三天

今天是工作坊純教學的最後一天,後兩天的課程排定是讓學員自由創作。
也就是這樣,今天李駿拿出他的獨門絕活殺手鐧!!
也就是他把玩pd中最讓人嘖嘖稱奇以及瞠目結舌的Live codeing 教學!!

所以其實我也聽不太懂.....所以本文到此結束..............


好啦,上述都是因為我其實很逃避接下來要講的,所以為了騙字數在亂打...
以下進入正題,不過我真的也不太懂,所以應該解釋的也......

李駿在live codeing 中最長使用到的就是[phasor~],它是一種鋸齒波,波型如下圖


由此圖可以看出,[phasor~]是一種在0跟1之間做循環線性增加的波型,因此我們可以借用此特性來控制,生成,合成一段聲音。



上圖中[phasor~]產生了訊號給[osc~]產生正弦波以及調變了音量,並且我們可以看到[phasor~]下面接了[expr floor($v1*8,0)],這代表就算[phasor~]經過調變產生了大於1以上的值,他都只輸出小數點以上的訊號出去給[osc~],而音量則做從無聲到最大聲的變化。



上圖中[phasor~ 1] 上面的inlet數值改成0.25。我們知道[phasor~ 1]代表 一秒鐘振盪一次,那0.25就會變成經過4秒才振盪一次,也可以說我們產生了持續四秒的聲音,而我們在[*~]上接了一個toggle去控制開關。


上圖的意思是,我們加入另外一種波型去做合成音色,並且因為有兩種波型,所以我們都把音量遞減一半,也就是各乘於0.5。順便解釋一下訊號會變成怎樣...

[phasor~ 1]-----------------訊號目前是0到1

|
[expr~ abs($v1-0.5)*2]-----------------訊號目前是1到0到1

|

[expr~ floor($v1 * 16,0)]--------------訊號目前是16到0到16(都是整數在跑)

|

[expr~ ($v1 *7)%5]-----------------------做三次0-3-4-1-2的循環,接著三次0-2-4-1-3

我知道大家到這裡已經有想死的感覺了,所以我用數值訊號把他印出來給大家看。


如影片中最後輸出的訊號就是做三次0-3-4-1-2的循環,接著三次0-2-4-1-3。

ㄜ....如果真的有人可以看到這裡還沒end,我一定能夠理解你心情,我實在也很不想繼續解釋下去了呀!!丟鍵盤........
我還記得當時學員們的眼神有多空洞,可是李駿還是繼續教下去了(如下圖)


我記得課上到這裡時我還理解78成,可是就在我想要把他融會貫通,正在冷靜思考時,一扎眼
程式就變成這樣了(如下圖)


然後我就跟學員們一起放棄了!!!喔ya~~~~

而且我一回頭就看到李駿露出這樣的表情(青光)

幫他補足內心話 駿神:“科科....看我一口氣嚇死你們”.......


後來駿神總算大發慈悲停止了live codeing的教學,我想應該是看到大家發愣的表情,
開始進行比較簡單的pd連線演奏教學(又好玩),而且課程中還擷取到別組發出的pd訊號,
我們還趁機駭客進去惡搞亂送數值進去,只是都沒聽到樓下傳來哀號聲就是....

以下幾張圖是連線教學,我就不細解釋了...






這大概就是我們這幾天的教學,希望別組或是我們這組同學,都能藉由我這亂七八糟的紀錄,
學到甚麼東西。



最後這是李駿兩年前在youtube上放的live codeing練習,大家可以看看他有多變態!!上面對他來說根本是小菜一碟。





ps.文中對李駿的玩笑,都是因為我太愛慕他,並且愛不到才刻意詆毀他,請大家不要輕易模仿。並且還是趁機在表達一下對李駿的感謝,因為沒有他一年前的分享傳授,哪有現在的我阿(雖然也不怎樣)...


文----結束

playaround 2010 助教筆記二

第二天



早上的課程延續昨天的用amen break來顆粒合成。在昨天我們要改變amen break的組成方式時,必須手工的去做連接,這不是個完整的做法,一來要產生新的播放規則都得重連,二來聲音播放時只能有一種撥放可能......所以在早上的課程中,我們便利用昨天沒教的[select]這個物件來做條件判斷,當音樂結束或重頭開始時,程式都能夠自動切換到另外一種播放規則。
檔案下載

下午的課程主要是要用puredata的gem物件來製造影像。
何謂gem呢?以下摘錄honki在Puredata.Taiwan做的中文介紹

GEM的全名為 "Graphics Environment for Multimedia" ,是專門用來處理視覺創作的工具。它是pd-extended 其中一個函式庫。使用 GEM,在 Pd 裡可以產生與操縱 2D 、 3D 圖形和動畫,處理與修改例如影像和視訊的媒體,並且產生粒子運動......



課程的一開始,李駿先講解了在pd當中,如何製造for迴圈,因為之後的課程,
幾乎都建立在利用for 迴圈去建立綿延不斷的圖形變化。




當我們能夠產生迴圈,我們便可以利用[repeat]及[separator]這兩個物件將參數賦予在迴圈產生的多重物件,並給與獨立參數。(影片中將不同的物件,賦予每個坐標sin &cos的變化後,就可以將多個物件排成圓形) 檔案下載





在上gem物件的李駿

課堂的最後,李駿用上述的方法製造了三個不同的圓圈,它們的開口會隨著時間的流動而改變,這樣等同於我們利用gem來製作時鐘,下課後李駿也給了大家回家作業,叫大家試著變更時鐘的構成,顏色變化等等。(影片裡,我簡單調變了顏色)

gem時鐘下載

還有一些有的沒的上課的檔案都放在這裡


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

李駿除了是聲音製造處理的專家外,大家知道他也很熱愛瑜珈,此外他還有一件大家不知道的專長就是!!?.....................隔空抓藥(大誤





2010年9月1日 星期三

playaround 2010 助教筆記一

第一天

李駿介紹了amen break 的歷史,並藉由amen break後來造成的影響(影響hip pop等多種樂風),
去敘述開放原碼及使用自由軟體的重要性。


wiki的介紹

接著的課程,就是教導學員們如何將聲音載入到puredata的陣列當中,並且藉由有規則邏輯的去讀取陣列,
來讓 amen break 的鼓聲產生新的組成方式。

下載amen break





這支程式將amen break 這段鼓聲切細為32等分,影片中可以看到我用了四種邏輯去播放amen break,第一種是正常播放,第二種是反著撥,第三種的邏輯是當陣列的索引值是0,2,4時抓取原本的訊號,1,3,5時則亂數決定。第四種則全亂數。

工作坊第一天的教學檔




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

ps雖然就連蔡老闆都在上課時特地跑來調侃李駿的香蕉合成器,不過駿神就是威,不顧世俗眼光的在眾人面前勇敢把玩(誤