2013年12月26日 星期四

[音像實驗室] 9/30 排序的矩形



這件作品的構成跟8/30恰好是相反的概念,8/30是分裂,本作則是累加。
音樂表現的方法則全然不同,8/30是把一個音不斷微分,9/30則是每次的累加都是新的音符,並且依序的演奏完畢後,音樂還會不斷循環重頭來過。
兩年前我有一件作品名為“Matrix Monster”,概念很像是8/30跟9/30的集合,這幾年我對分裂還真是情有獨鍾啊..XD。

[音像實驗室] 8/30 分裂的矩形


數位藝術中常可以見到以分裂為主要概念的作品,畢竟碎形就是電腦圖學非常重要的研究概念,因此許多的藝術家也以此創作,例如在 openprocessing 中的Urban DivisionsJS DivisionDividing Rectangles。在本作中,當繪製一個區域後,程式便會自動度量這區域的長寬比例,接著建立一個起始矩形,並且不斷的將較長的那邊對分、往相反方向移動。方塊一分為二後,面積會以等比級數的方式遞減,因此如果將它對應到聲音的頻率上,可以想像分裂前的方塊,聲音會比分裂後的來的高,舉例來說矩形的起始面積如果是100,音高對應成500,當矩形面積變成50後,音高則會是500/2=250。

現代音樂中,有一種作曲方式叫做“微分音音樂”,音階不同於傳統的12個半音構成八度,可以是原先音程的對分,甚至4/1分。本作的音階很接近微分音音樂的概念,透過不斷的對分面積,音高也逐漸微分或遞增。也因為每個音跟下個音都是倍數關係,聽起來有一種特殊的和諧感。


延伸閱讀:碎形

2013年12月18日 星期三

[音像實驗室] 7/30 音樂盒


音樂盒應該算是自動樂器之祖,早在18世紀初期就已經誕生在這世界上,並且我也一直覺得Pd的陣列圖形,應該就是模擬音樂盒的滾輪。一切都數位化的現在,手機的app上也可以看各式以音樂盒概念為出發的小遊戲。藝術家岩井俊雄幾年前跟Yamaha開發了類似音樂盒的音樂機器“TENORI-ON”透過視覺化及實體界面的輸入,任何人都能夠輕鬆的製造一段的旋律。

在這一個實驗上,我設計了兩個八度的序列音階,並且隨著滑鼠的輸入,產生不同的碰撞點,自動的循環旋律也因此產生。

2013年12月12日 星期四

[音像實驗室] 6/30 聲音風景


當我還是小時,坐在車上時常常會陷入自己的小世界,默默玩著各種自創遊戲。我會盯著車窗玻璃的污點,幻想他是我的遊戲主角,當車子以平穩的速度移動時,自己則上下點頭改變觀看污點的視野,想像我的主角正在車窗外的真實世界,隨著屋頂、電線、山陵線,跳躍遊走著。(那是馬力歐兄弟當紅的年代啊)

這個作品概念緣自於當初的遊戲,不過在這裡做了一些小修正,當初我是主角配合風景遊走,在這裡則是主角的遊走產生了風景。這個範例中透過控制觸發點(遊戲主角位置)的高度,去產生抽象的視覺風景,上方的多邊形我定義為一片山陵,下方則是一片樹海,並且觸發點會隨著山陵(振幅)、樹海(頻率)的高度,去合成、產生所謂的聲音風景。



延伸閱讀:OscilloScoop

2013年12月9日 星期一

[教學]以數學建構人體曲線

之前在這篇文章中,透過數學模型去模擬一個類似海浪的平面

今天下午時,好友經堯Q我試試看能否用Pd算出此圖形,請見

此圖形的數學公式為:y=3*x*log(x)-1/36*exp(-(36*x-36/e)^4)

雖然公式很短,但還是花了我一點時間(為了搞懂公式裡的e是啥,正解是e=exp(1))

我還加了一點小小動態在裡面,算是本人的惡趣味...





2013/12/13 補充

後來發現此公式有3d版本,所以不免俗的一樣用pd做看看(這真的是很糟糕的實驗啊,希望網友都已經超過法定年齡,XD),3d版本的公式
  • x=0 to 1
  • y=0 to 1
  • z=11*x*log(x)*y*(y-1)+exp(-((25*x-25/e)^2+(25*y-25/2)^2)^3)/25 





3d版本 Download,可能需要的擴充物件

2013年12月5日 星期四

[音像實驗室] 5/30 節拍器交響曲


已故作曲家李格悌 György Ligeti,是古典音樂中的先鋒作曲家。1950年代時,他創作許多前衛概念的電子音樂,其中一件非常有名的聲響實驗作品「Poema sinfónico para 100 Metrónomos」中,他利用了一百個節拍器的敲擊聲去製造音樂,並且因為每個節拍器設定的速度不同,演出時的聲音也呈現快慢交疊的錯落現象。

在AV-5這個實驗中,我以相同的概念來跟大師致敬。當滑鼠拖拉畫面中的橙色矩形色塊時,節拍器就會開始運作,橙色色塊會隨時間消逝(我這邊想像的是類似格鬥遊戲中的血條),而不同的擺動速度也影響了每個節拍器演奏的時間,因此當多個節拍器一起演奏時,產生出
來的節奏相當有意思。



延伸閱讀:https://www.youtube.com/watch?v=QCp7bL-AWvw

2013年12月2日 星期一

[音像實驗室] 4/30 從哪邊出發



前三個實驗中,聲音都是以單聲道設計為主,在這個實驗中則是要測試視覺物件與左右聲道的關係。在本作品中,滑鼠可以在畫面的左右兩側增加碰撞點,生成的碰撞點會自動循環,去撞擊中心的黑桿。並且因為起始位置的不同,碰撞後產生的音源也會對應成左右聲道。

作品完成後,我自己倒是有個小疑問?如果左右邊的位置跟左右聲道的結合是那麼的理所當然,那如果一開始規則是反的,或是到一半才反過來,人腦對這樣的狀況,又會產生怎樣解讀..

2013年11月26日 星期二

[音像實驗室] 3/30 快跑啊!凱妮絲!


這作品的概念來自前兩天看的電影《饑餓遊戲2:星火燎原》。但為了不劇透,所以以下只簡單描述。在本集中,主角所在的競賽場地,是一個類似時鐘的舞台,每到整點時,對應的區塊就會產生不同的狀況來痛整主角們(喔不,我可愛的詹妮弗·勞倫斯)..

因此我也做了一個類似時鐘概念的作品,當時針(掃描線)接觸到某一區塊時,便會掃描該區塊的半徑,產生對應的音高。

2013年11月24日 星期日

[教學] 網站範例檔當中,遺失的[k_xxxx ] 物件

在我的網站中分享了許多的patch,這些程式中很可能會用到我過往自製的物件,
例如在http://www.dazegraffiti.com/p/workshop.html 網頁中,就有許多以k開頭的物件。如果你沒有這些檔案,或是沒有把這些擴充物件放置在相同資料夾內,擴充物件不會成功載入,程式也不會正確運行。

想要使用這些擴充物件的朋友,方法很簡單,首先到你電腦的桌面(pc的話請注意路徑不能有中文),建立一個資料夾pd_abs(這是我慣用的名稱),然後把你下載到的擴充物件,全部丟到這資料夾後,在打開pd在偏好設定中,設定預先載入的入徑(圖一)。


(圖一)


再點選new 按鈕(圖二)
(圖二)

指定到剛剛建立在桌面的pd_abs資料夾

重開pd後,鍵入相關的擴充套件名稱,物件即可成功載入。



(補充:20140822)
我未來想把所有的程式檔都放到github上,來響應開源風潮。但有些朋友並不知道該如何使用github,在這邊做簡單使用說明,連結到github網頁後,把程式檔複製起來,並打開文字編輯軟體(mac可用文字編輯,pc可以用記事本)新建一個檔案,再把程式碼貼上,最後把副檔名命名成.pd即可。

(補充:20170717)
dropbox 空間已死,所以k_obj全都移到github上了,請到這裡下載使用
https://github.com/aluanwang/k_obj



[音像實驗室] 2/30 他將點醒我



這這一系列[音像實驗室]的創作中,有別以往的邊做邊想,這次計劃中的作品都是先有草圖後,在依據假想完成作品。一方面可以考驗自己執行的能力,檢視自己的不足,二方面透過預先規劃,避免30個不同主題間,概念太過接近。

繪製多個的矩形區塊,形成不同觸發區域。當時間軸遇到區塊時便會撞擊出聲響。並且時間軸會不停往返移動,最終的結果會像是序列鼓機。

In this series of "Audiovisual Lab", unlike previous style of thinking along the way of doing, all works in this series would begin with a draft, then implement the draft accordingly. By doing so, first of all, I can examine my competency and understand the insufficient of my ability. Secondly, by planning in advance, to avoid similarity among 30 experiment.

In this experiment, many square zones shall be drawn to form different triggering zones. When the time axis meets the zone, it makes sounds. The interval axis will keep moving back and forth. The final result is like a sequencer drum machine.


2013年11月17日 星期日

[音像實驗室] 1/30 電流急急棒




在這個實驗中,一開始拖拉出來的紅綠線決定了聲音的音高(越長聲音越高)­,而接下來的控制點距離紅綠線上的距離,決定了聲音的振幅(越遠音量越大),最後控制點­映射到紅綠線上的交點,這交點距離紅綠線端點的比例,決定了聲音持續的長度(一秒鐘要響多久)。


In this experiment, the red/green line pulled out at the beginning decides the pitch of the sound (the longer the line, the higher the pitch). The following distance between the control point and the red/green line decides the amplitude of the sound (the farther the distance, the louder the sound). Finally, the prportion between the distance between the crossover point reflected by the control point to the red/green line and the ends of the red/green line decides the length of the sound.

2013年11月14日 星期四

2013年11月3日 星期日

「Pd筆記-68」 清除win安裝的預設值

曾經在這篇文章中,介紹如何清除在mac系統中,安裝pd產生的預設值。這是為了避免在安裝不同pd版本後,出現library載入錯誤的問題。

而在這篇筆記,則要介紹如何移除pc windows 上的預設值(也就是完整移除pd)。

步驟一:到開始工作列,移除pd主程式。

步驟二:到C:Program Files(x86)資料夾中,刪除pd這個資料夾。

步驟三:到開始工作列輸入regedit,進入登入檔編輯器



步驟四:搜尋有關pd-extended 的所有登入檔。



步驟五:刪除所有的找的到的pd登入檔。

步驟六::安裝其他版本的pd,就能夠正確載入library。


2013年10月25日 星期五

[GLSL]入門-5 用binary(2進制)來繪製點陣圖形


shader是無法載入字體的,但假使有一天我們想要在shader裡面秀出文字,這時候便可以透過,把文字轉成2 維矩陣方塊的方式(點陣字體),載入進shader。

所以在pd程式中,透過2進制去產生要丟進shader的pattern數值,然後才在shader中解譯回2維點陣圖案。並且最後才把圖形繪製在一個旋轉的cube上。


uniform vec2 iResolution;
uniform float pattern;

float bit(float n, vec2 p) {
 p.x=(floor(p.x*5.0));
 p.y=(floor(p.y*5.0));
 float k = (p.x + (5.0*p.y));
        if (int(mod(n/(exp2(k)), 2.0)) == 1){
  return 1.0;
 } else{
  return 0.0;
 } 
 
}
void main()
{
 vec2 uv = gl_FragCoord.xy/iResolution.xy;
 uv.y=1.0-uv.y;
 
 vec2 uv2=mod(uv*5.0,1.0);
 vec3 col2;
 if((uv2.x<0 .95="" uv2.x="">0.05)  && (uv2.y<0 .95="" uv2.y="">0.05) ){
  col2=vec3(1.0,1.0,1.0);
 }else{
  col2=vec3(0.3,0.3,0.3);
 }   
 vec3 col = vec3(bit(pattern, uv)*floor(mod(gl_FragCoord.x/2.0,2.0)) * floor(mod(gl_FragCoord.y/2.0,2.0)));
 gl_FragColor = vec4(col*col2,1.0);
}
shader code


Download

2013年10月20日 星期日

「Pd筆記-65」 [getdir]、[folderpanel] 檔案位置




[getdir],知道檔案目前所在的入徑位置。

[folderpanel],選擇一個新的路徑。


2013年10月17日 星期四

[表演]失聲祭76

http://lsf-taiwan.blogspot.tw/2013/10/lsf76.html

失聲祭 Listen76
2013, October, 19 (Sat) @噪咖
入場時間︱18:30入場 19:00準時開始
入場費︱NT$.150 (含飲料)

暖場藝術家 | Imagination Galaxy
演出者 | 張晏慈 X 沈聖博
演出者 | 王新仁


「跟混種的演出稍稍的不同,加強了GUI的設計,以及繪圖操控。」

[Squaring the circle]
演出時,藝術家透過尺規作圖的方式,在空間中繪製出長寬比恰巧為黃金比例的多種線段。
每條線段都是獨立的發聲物件,並且依其長度決定發聲頻率,最終透過中心點逐一觸發,在時間軸上揚起和諧的幾何之聲。

2013年9月23日 星期一

[混種現場]音像之夜



去年數位藝術節到現在,我做了非常多小型的作品demo,

從中我挑選了一個跟「動態中心」完全不同的概念去發展新的作品。

在「動態中心」中電腦跟人為的控制比例大概是7:3,而新作中人為的比例則佔了八成,

也就是新的作品比起以往的作品都更像是一個電子樂器,演出過程中

藝術家需花費更多精神,全神灌注的去操作這樂器。

也因此這作品的故事的起伏比起以往更有彈性。


用說得實在很難表達,所以只能拜託大家來看我的新作「域的擴展」,一探究竟吧

http://registrano.com/events/91d176

http://registrano.com/events/d8fa94




2013年9月9日 星期一

[演出]混種現場X睡不著-音像系列


fb活動頁:https://www.facebook.com/events/384685454993429/
活動網頁:http://db.tt/1imZqN10
工作坊報名:http://registrano.com/events/bbdb1e (9/22前截止)


我跟經堯、阿超、混種現場一起策劃了這個活動,特別邀請了Pd User中的超級高手來台,包含chdh、Dan Wilcox、Onyx Ashanti、李駿等人!! 我想這樣的活動如無意外,短期之內真的是絕無僅有了!!所以喜歡AudioVisual、聲音藝術的朋友,真的千萬別錯過啊~~~~

2013年8月28日 星期三

[GLSL] 入門-4 翻轉影像

uniform sampler2D tex;
uniform vec2 flip;

void main(void){

 vec3 color=texture2D(tex,abs(flip-gl_TexCoord[0].xy)).rgb;
        //透過外部輸入的2維flip變數,重新排列影像pixel的順序。

 color += gl_TexCoord[0].x>0.99 ? 1.0:0.0;//右邊界畫白線
 color += gl_TexCoord[0].x<0.01 ? 1.0:0.0;//左邊界畫白線
 color += gl_TexCoord[0].y>0.985 ? 1.0:0.0;//上邊界畫白線
 color += gl_TexCoord[0].y<0.015 ? 1.0:0.0;//下邊界畫白線

   gl_FragColor=vec4(color,1.0);
}
這是一個翻轉影像的簡單練習,而gl_TexCoord[0].xy這材質座標,是用來讀取外部材質的索引依據(2維的陣列)
download

2013年8月26日 星期一

[GLSL] 入門-3 把貼圖的材質當成陣列使用

uniform sampler2D tex;
uniform vec2 resolution;
uniform float chsize;

void main(void){
 vec2 uv = gl_FragCoord.xy / resolution.xy;
 vec2 center = gl_FragCoord.xy / resolution.xy * 2.0-1.0;
 
 float k = (gl_FragCoord.x+(gl_FragCoord.y*800.0))/(800.0*600.0);
 vec3 col=texture2D(tex,vec2(mod(mod(uv.x*chsize,1.0)*chsize,1.0) ,
               mod(mod(uv.y*chsize,1.0)*chsize,1.0) 
          )).rgb;
 float f=col.r;
  gl_FragColor = vec4(f,f,f,1.0);
}

這個練習到底要表達什麼,我也還說不清楚.. 總之大約就是想透過材質輸入的方式(把音訊訊號轉成灰階陣列圖),
來取代shader不能讀取外部陣列的困擾..然而目前這方式也還不算完全可行就是.. download

2013年8月23日 星期五

[GLSL] 入門-2 透過glsl載入buffer影像


把影像存在buffer中,透過shader讀取不同的材質。
uniform sampler2D tex;
uniform vec2 resolution;
uniform int f;

void main (void)
{

 vec2 uv=gl_FragCoord.xy/resolution.xy;
 vec3 col= texture2D(tex, vec2(uv.x , 1.0-uv.y)).xyz;

 gl_FragColor = vec4( col, 1.0 );

}
file download

2013年8月6日 星期二

[GLSL] 入門-1 矩陣圓球


[example 1] ↓

//沒有光暈的球
uniform vec2 resolution;
uniform float time;
vec2 uv;

vec2 circle(float i){ 
 return vec2(uv+vec2(fract(i/10.0)*2.0-0.9 ,
  fract(floor(i/10.0)/10.0)*2.0-0.9 ));
}


void main(void){
 uv = (gl_FragCoord.xy / resolution.xy)*2.0-1.0;
 float col;
 float k;

 for(float i=0.0;i<100 .0="" 1.0:0.0="" col="" gl_fragcolor="vec4(col,col,col,1.0);" i="" k="" pre="">

[example 2]

//有光暈的球
uniform vec2 resolution;
uniform float time;
vec2 uv;

vec2 circle(float i){ 
 return uv-vec2(fract(i/10.0)*2.0-0.9 ,fract(floor(i/10.0)/10.0)*2.0-0.9 );
}


void main(void){
 uv = (gl_FragCoord.xy / resolution.xy)*2.0-1.0;
 float col;
 float back=abs(time-0.5);

 for(float i=0.0;i<100 .0="" back="" circle="" col="" gl_fragcolor="vec4(col,col,col,1.0);" i="" length="" pow="" pre="">
example download

[工作坊] Pd-VJing 第八週

範例一:模擬池田亮司的風格



在這個範例中,將透過[k_multi_spec]這個物件,來截取不同頻段的音高振幅,再把這些bang的訊號傳遞給我們預先設計好的patch中,即可得到聲音跟影像的完全對應。(類似不同軟體做法可以參考此篇:Audio FFT )



範例二:透過不同的頻段,疊加對應的影片



範例三:頻譜分析圖,模擬常見的音訊頻譜分析效果。




[工作坊] Pd-VJing 第七週

範例一:用音量來控制影片的播放影格。







範例二:模擬VJ的fade 控制器。
VJ實體控制器中,常常可以見到機器中間會出現一個橫軸的滑桿,我們稱呼為cross fader,它通常是用來切換兩個不同的影像素材。本範例則將透過自製的PD界面來模擬此效果。






範例三:把GEM繪製出來的影像,透過[gemframebuffer]離線繪圖物件壓縮成2d影像寫入在buffer中,在跟wabcam的影像透過[k_blend]物件去疊加出不同效果。


Example Download

[工作坊] Pd-VJing 第六週



本週將透過音量的大小,來控制vj表演中常見到的「宇宙穿梭效果」。
音量的值會決定飛行的速度,當音量超出某個自定的閥值時,程式會替換原本的圖片,產生其它的疊加效果。


Example Download

[工作坊] Pd-VJing 第五週



本週的課程將利用滑鼠以及鍵盤,當作音樂及影像的輸入工具。當在螢幕上繪製出圓圈時,每個圓會因為大小以及位置的不同,產生不同的音高及音量。

主程式



子程式(c-circle)



Example Download

2013年7月26日 星期五

「Pd筆記-64」 gridflow安裝修正

http://gridflow.ca/

把解壓縮的檔案gridflow資料夾,放在硬碟底下的資料庫。

/Library/pd

2013年7月6日 星期六

[表演]Good Vibration,好抖~

跟幾名好朋友,在七月六號有一場演出
對AudioVisual有興趣的朋友,一起過來玩吧。


集合國內多名重量級AudioVisual藝術家,將在睡不著咖啡館藝文空間,帶來一個保證讓你抖到不行的奇妙視覺與聽覺饗宴,各類奇異聲光組合,將引領你探索未曾到過的數位世界。本次表演中,參與藝術家們皆使用開源軟體作為創作工具,並且會後每位觀眾都能獲得一份神秘小禮物(藝術家們的作品原始碼),想要探索藝術家創作核心的朋友,千萬別錯過這個機會。

6/30以前購票還有早抖優惠,位置有限,先抖先贏!
報名網址:http://registrano.com/events/c9acc4

演出名稱:Good Vibration [好抖~]
活動地點:睡不著咖啡(台北市大安區泰順街60巷8號)

演出時間:七月六號(禮拜六),晚上七點半
演出者:林經堯&徐元彥、王新仁、王連晟、李昀臻、木下晃德、督聲響

2013年6月27日 星期四

[公告]關於經堯老師的QC課程的進階筆記

各位朋友們好,關於經堯老師的QC課程進階筆記

經堯老師本人想要在課程結束後,在更有系統地整理釋出

讓整體教學的品質會更好。

所以請大家在課程結束後(最後一堂課在 2013 7/8號),

再到睡不著音像講座觀看完整記錄

感謝大家

2013年6月23日 星期日

「筆記」QC進階筆記 4-1



本週經堯老師跟大家分享他的作品軌跡 (tracks)的創作過程,感謝經堯老師無私的分享作品,透過開放作品程式碼,讓我們更理解了他的創作方法以及作品的意涵,以下為本週課程內容的部分節錄。

var clicked=false;
var control={};
var clock=[];

function dis(x1,y1,x2,y2){ 
 return Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));
}

function angle(x,y,x1,y1){
 return Math.atan2(y1-y,x1-x);
}

function (__structure outlet,__structure outlet2) main (__number x,__number y,
__boolean click,__boolean reset,__number time)
{

 for(var i=0;i<clock.length;i++){
  clock[i].theta+=clock[i].r/10;
  clock[i].x1=clock[i].x+Math.cos(clock[i].theta)*clock[i].r;
  clock[i].y1=clock[i].y+Math.sin(clock[i].theta)*clock[i].r;
 }


 var result = new Object();
 //if(click==true && clicked==false)
 if(reset){
 clock=[];
 }
 
 
 if(click && !clicked){
  clicked=true;
  control.posx=x;
  control.posy=y;
  control.enable=true;
 }
 if(click && clicked){
  control.posx1=x;
  control.posy1=y;
  control.dis=dis(control.posx,control.posy,control.posx1,control.posy1);
  control.angle=angle(control.posx,control.posy,control.posx1,control.posy1)
 }
 if(!click && clicked){
  clicked=false;
  control.enable=false;
  
  clock.push({
   x:control.posx,
   y:control.posy,
   x1:control.posx1,
   y1:control.posy1,
   r:control.dis,
   theta:control.angle,
  }); 
 }
 result.outlet=control;
 result.outlet2=clock; 
 return result;
}

(draw line)

(iterator)

qc2-w4-1.qtz