第四章、 程式建構
4.2 演算系統
4.2.1.4 休止方式
在本樂曲中,每次十二個序列的實際音符長度有兩種計算方式,一種是直接帶入先前所 演算出的長度序列大小,另一種則序列中音符長度各只有二到三個32分音符,多餘的時間 則全部為休止。兩種休止方式的出現順序並無特定安排,因此本程式直接將原樂曲每個序列 中的休止方式記錄下來,當音符長度參數經過子程式時,會根據相應的段落而改變音符長度、
加入休止符。
表示法轉換成單位音符(32分音符)的毫秒數,公式就為「(一分鐘有 60 秒×每秒有 1000毫秒)÷(節拍音符單位為32分音符的幾倍×每分鐘有幾拍)」。以 lent 為例,就是 (60×1000)÷((32÷16)×120)=250毫秒。換算過來,各單位音符的毫秒數分別為
「250、125、104」,各段落採用哪一種速度並沒有明確的演算規則。本程式也是將其全部 性的演算模式:亂數自動生成(auto mode)模式與 super-rhythm 模式,搭配手動的即時觸發 功能。
亂數自動生成模式會以完全隨機方式產生各音樂參數的數值而觸發音符,不斷產生出符 合十二音列規則的旋律來。而 super-rhythm 模式則是由 Karlheinz Essl 撰寫的 RTC 物件(見 2.1.5),能夠產生在一定程度固定而又具有柔軟變化的觸發時值 [40],使得生成的音符更有
模式並用,都絕對不會背離十二音列的規則。
圖 20 可自由隨機控制十二音列音符參數的滑桿組
4.2.2 簡約主義
《Phrygian Gates》的結構變化主要來自反覆模式的改變及不定時(但非隨機)穿插進來 的音符。因此本程式的簡約主義演算元件分成兩部份:
4.2.2.1 模式控制介面
(預設數值為大調音階的相對音高,從 Gn-1 到 D n+1,n為整數)。使用者可以在矩陣物件上 開啟或關閉任意座標,當一矩陣座標顯示為開啟(紅點)時代表會送出音符。矩陣物件底下 的滑桿可以控制反覆模式會送出的橫軸時序,當滑桿數值為 1 時,程式會不斷反覆矩陣最左 一行的音符;若滑桿數值為 8,則程式的反覆模式就會是從最左行一直到最右行。
當演算元件啟動時,模式控制介面在預設上會將矩陣上的任何改變即時輸入音符產生 模組。但是為了使模式保有瞬間變化的可能性,即時輸入功能設定為可開關。當關閉時,音 樂的反覆模式對於矩陣物件上的任何改變都不會即時反應,而要按下左上角的觸發鍵才會送 出新的反覆模式。
為了確保操作模式介面時的和聲和諧程度,介面左下方另有一個五聲音階的開關。當 打開時,矩陣上面音階次序為 4 與 7 的音符(分別為大調音階的F與B,不存在於五聲音階 當中)都會被過濾掉,使輸出的模式必定落在五聲音階上。
圖 22 簡約主義的模式演算流程圖
控制模式演算的子程式構造如下圖。介面上的模式會先依序呼叫出模式上各行列中,
各音高數值是否存在(為1或0),連帶矩陣位置的參數(x-y 軸)一同輸入右下方的訊息 物件中。當受到[bang]觸發時,訊息物件會輸入左側的矩陣中,再由左側的矩陣接收依序輸 出每一行音高數值的訊息,形成音高。
圖 23 簡約主義的模式演算子程式(單一聲部)
4.2.2.2 穿插音符
這部份則是簡單地將反覆模式中的輸出音符訊號作出調換。穿插音符的控制介面與模式 的控制介面類似,但是時程上只有最高三個音符單位的長度。當使用者按下 enter 鍵時,從 演算模式輸出的音符觸發訊號會改通往穿插音符的子程式當中,依序觸發穿插音符後再回到 模組子程式上。這樣設計的用意在於確保穿插的單音能自動服貼在反覆模式的拍子上,而沒 有任何拍子錯落的風險。
由於穿插音符是輸入後再視時機啟動,因此沒有即時輸入產生音符的開關。
圖 24 簡約主義的穿插音符控制介面
4.2.3 樂風共通操作物件
本程式當中建構了完整的《Structure Ia》曲式演算法,只要按下 b 鍵,就可以直接生成 整首曲子。而簡約主義的《Phrygian Gates》則是提供了樂曲的速度、音符長度等參數,只要 按下 a 鍵,就可以自動輸入這些參數。
4.3.2 自動隨機生成
《Structure Ia》的 14 個段落可以不照順序隨機生成。按壓隨機選取段落的紐,就會隨機 生成 14 個段落當中的任一段落。若將反覆開關打開,則可以不斷地隨機選取段落生成,產 生出永不停止的《Structure Ia》。
十二音列模式也有自動模式(詳見 4.2.1)。
4.3.3 互動模式
序列主義模式的基礎序列,預設值為《Structure Ia》使用的音列。但是使用者可以按壓 序列產生按鈕隨機產生新的序列,再選擇想要的序列按壓輸入整個系統。
圖 26 隨機產生新序列的按鈕
在十二音列模式中,使用者可以按壓空白鍵來觸發音符,同時利用各滑桿來操控音高之 外的音符參數。
簡約主義模式則含有大量互動成份,使用者必須自己對矩陣物件輸入反覆模組型態、
控制反覆時序,同時可操作滑桿來控制音符長度、強度與移調。
第五章、結論與未來展望
5.1 結論
在本論文中,我們透過分析樂曲,建構了可以根據演算法生成兩種現代音樂風格的程式。
其生成控制方式包括了自動與互動。本程式可以透過演算生成《Structure Ia》的樂曲,達到 除了八度區域外完全再現的程度。同時還可以依據序列主義、十二音列及簡約主義風格參數 的變化法則,進行自動或互動的樂曲生成程序,產生全新的樂曲。
我們也發現,《Structure Ia》中定義的各種音樂參數對應法,同樣可以應用在極微音樂 的生成上面。二者在音符處理生成的基本概念上具有共通之處,只是相較於序列音樂不斷地
5.2.3 自動跟譜
自動跟譜(score following)技術能使電腦程式即時聆聽現場樂手的演出、判斷演奏到 樂譜的什麼位置,同步做出相應的聲音處理。傳統的自動跟譜採用一套音符完整寫定的既定 樂譜,而電腦正如字面所示,一個音符一個音符地去跟隨樂手的演奏 [4]。若是加上適當的 感應與分析介面及程式,則演算系統也可以搭配樂手的演出即時運算合適的伴奏等音樂內容。
5.2.4 結合其他程式語言
Max 雖然屬於圖形介面的程式語言,但它一直保有能使用其他文字程式語言(如 Java、JavaScript 或 perl,甚至 C 語言)結合運用的空間。這些程式語言對於 Max 來說是各 有長才,尤其在數學演算的自動化上面,可以作到比 Max 更加簡潔的程式。若能適當地結 合它們,必定能更有效率地編寫演算規則。
5.2.5 畫面美學更直覺、美觀
本程式的視覺介面僅使用 Max 內建的物件外型,並沒有作很複雜的介面設計。若要進 一步改良視覺介面,除了加上圖像設計(物件顏色大小配置、加掛介面圖片檔等等)之外,
操作的介面也可以作得更直覺。例如將操作用的矩陣元件與顯示用的矩陣結合起來,使矩陣 顯示輸出音樂參數的同時,使用者也可以在其上面直接操作音樂內容進行互動。
參考文獻
外文:
[1] Robert Rowe. Interactive Music Systems. MIT Press 1993.
[2] Robert Rowe. Machine Musicianship. MIT Press 2001.
[3] Phil Winsor. "PAT-PORC: An Interactive, Pattern-Process, Algorithmic Composition Program."
Proceedings of the International Computer Music Conference. San Francisco: International Computer Music Association, pp. 114-117, 1991.
[4] Todd Winkler. Composing Interactive Music: Techniques and Ideas Using Max. MIT Press 1998.
[5] Eduardo Reck Miranda (2009). “Preface: Aesthetic Decisions in Computer-Aided Composition.” Contemporary Music Review, 28:2, 129-132.
[6] Thom Holmes. Electronic and experimental Music. Routledge; 3rd ed., 278-279, 2008.
[7] Joel Chadabe. “Interactive Composing: An Overview.” Computer Music Journal. Vol. 8, No. 1.
CA: People's Computer Company: 22-27.
[8] Heinrich Taube. Notes from the Metalevel: An Introduction to Computer Composition.
Routledge, 2004.
[9] Eduardo Reck Miranda. Composing Music with Computers. Focal Press, 2001.
[10] Gerhard Nierhaus. Algorithmic Composition Paradigms: Paradigms of Automated Music Generation. Springer Verlag, 2009.
[11] David Cope. New Directions in Music. Waveland Pr Inc; 7th ed., 2000.
[12] Charles Ames. "Automated Composition in Retrospect." Leonardo, MIT Press, 1987.
[13] Nick Collins. Introduction to Computer Music. Wiley, 2009.
[14] Otto Laske. “Composition Theory in Koenig's Project One and Project Two”, in The Music Machine. MIT Press 1989.
[15] Karlheinz Essl. "Lexikon-Sonate. An Interactive Realtime Composition for Computer-Controlled Piano." Proceedings of the II Brazilian Symposium on Computer Music, 1997.
[16] Karlheinz Essl. "Algotithmic Composition." The Cambridge Companion to Electronic Music, 2007.
[17] Keith Musutt. "Composing with Algorithms: An Interview with David Cope". Computer Music Journal, MIT Press 2007.
[18] Markus Bandur. Aesthetics of Total Serialism: Contemporary Research from Music to Architecture. Birkhäuser Basel, 2001.
[19] Reginald Smith Brindle. The New Music: The Avant-garde since 1945. Oxford University Press, USA; 2 edition, 1987.
[20] Lynden DeYoung. 1978. "Pitch Order and Duration Order in Boulez Structure Ia", Perspectives of New Music 16, no. 2:27–34.
[21] David Cope. Techniques of the Contemporary Composer. Schirmer, 1997.
[22] Wim Mertens. American Minimal Music: LA Monte Young, Terry Riley, Steve Reich, Philip Glass. Pro Am Music Resources, 1988.
[23] Leon Dallin. Techniques of Twentieth Century Composition: A Guide to the Materials of Modern Music. Wm. C. Brown Company Publishers; 3 ed., 1974.
[24] Michael Nyman: Experimental Music. Cage and Beyond. Cambridge University Press,1999.
[25] Steve Reich. “Music as a Gradual Process” in Audio Culture: Readings in Modern Music.
中文:
[32] Lexikon-Sonate: laptop performance by Karlheinz Essl. Retrieved 2013-01-30, from http://
www.youtube.com/watch?v=WxtAGzlikNM
[33] Ryan Blitstein. Triumph of the Cyborg Composer. Retrieved 2013-01-30, from http://
www.psmag.com/culture/triumph-of-the-cyborg-composer-8507
[34] Karlheinz Essl: WebernUhrWerk (2005-2011.) Retrieved 2013-01-30, from http://www.essl.at/works/webernuhrwerk.html
[35] Wikipedia, Dynamics (music.) Retrieved 2013-01-30, from http://en.wikipedia.org/wiki/
Dynamics_%28music%29
[36] Matsumoto Akihiko. “Max/Msp Tutorial: Phasing (Steve Reich).” Retrieved 2013-01-30, from http://akihikomatsumoto.com/maxmsp/pianophase.html
[37] John Adams. “John Adams on Phrygian Gates and China Gates.” Retrieved 2013-01-30, from http://www.earbox.com/W-phrygiangates.html
[38] Computer Software by Laurie Spiegel. Retrieved 2013-01-30, from http://retiary.org/ls/
programs.html
[39] Karlheinz Essl: Lexikon-Sonate - algorithmic music generator. Retrieved 2013-01-30, from http://www.essl.at/works/Lexikon-Sonate.html
[40] Max Objects Database: super-rhythm. Retrieved 2013-01-30, from http://www.maxobjects.
com/index.php?v=objects&id_objet=1561
附錄一、程式操作熱鍵
本程式除了面板上的操作介面之外,亦制定了某些熱鍵來操作。以下列出各熱鍵與機能作為 參考。
b 將 Structure Ia 整個演奏一次
space 即時觸發音符,與 auto mode/super-rhythm mode 可並行使用
a 設好 Phrygian Gates 的音符參數,實際音高則由下面左右的 matrix 輸入 Enter 即時觸發添加的音符,實際音高則由下面中間只有三行的 matrix 輸入 p 關閉程式的核心節拍器,使樂曲暫停
附錄二、Max/MSP 常用物件簡介
Max/MSP 內建許多功能便利的物件,以下簡介一些程式寫作時常用到的物件以作參考。若 希望瞭解完整的物件清單與功能,可閱讀 Max/MSP 內建的說明文件。
loadbang 此物件在程式開啟時會自動送出能啟動物件機能的 「bang」訊息,可用來 控制程式的各種預設值。
select 可簡寫為 [sel],其能夠篩選輸入的數據是否與物件所設參數一致。
gate 閘門物件,能將輸入的物件送入不同的流通路徑。
send / recieve 可簡寫為[s] / [r],當這兩個一組的物件參數相同時,[s]所接收的數據就會 從[r]送出。
urn 不重複地隨機送出給定範圍內的數值。
buddy 接收複數個數據,當所有輸入端均接收到數據時才會一同送出。
uzi 同時送出給定數量的「bang」訊息。
pack 接收複數個數據,結合成單一個 list 訊息。
counter 能夠依序計數,除了給定數數範圍外,也可以指定是正數還是倒數。
counter 能夠依序計數,除了給定數數範圍外,也可以指定是正數還是倒數。