2008/11/3

2.9.1. 遍歷

Pd物件是提供給遍歷名單和矩陣,並解決數據結構的元素,獲取和設置。 下面是一個patch顯示這些設施可以如何使用,例如,序列圖形評分如上所示:

Pd沒有內建的編曲,甚至沒有任何概念,即"x"的數值應該被用來作為時間軸。 (不過,"sort"功能是被提供,由左向右紀錄一份清單,在這假設的是,使用者可能經常要使用Pd資料作為X命令序列。)事件的記錄序列納入到清單裡,和/或播放清單回到序列,這功能是使用者期待去支援在Pd的多個貢獻中最重要事物,這是希望將使這些功能在一個更大的各種可能性,包括事件的隨機重新命令,樂譜跟隨,自我修改樂譜,反應即興創作,或許更多的工作。

資料的Traversal是有可能加入一種新類型的原子,"pointer"「指針」,這兩個先前定義的類型,彌補訊息,即,數字和符號。不像數字和符號,指針沒有印刷形式,因此不能說出在消息盒子。Traversal物件,如"pointer" "get"(其中包括其他幾個)可以產生或使用指針。指針資料類型,也是整合到管裝修的物件,例如"pack""unpack" "route"

在如上面patch所示,最上層的"pointer"物件擁有一個指針給向下一個物件去"play"(發送它給在底部的"voice"抽象物其中一個。)指針物件採取"traverse"訊息去設置它給清單(命名為"pd-data")的頭部,以及"next"訊息移動到(和輸出)未來基準的名單(即,未來在樂譜6個物件的清單)另一個"pointer"物件也可以使用,在進一步下跌,作為一個存儲單元為指針,正如"float"是為數字。

該任何音序器的中心,始終是"delay"物件,必須餵食時間差在每個事件(包括非事件打到"start")和未來之間。正如我們提取在樂譜中6個物件的每一個,我們必須等待delay,為播放物件,然後傳送其指針到"voice"抽象物其中之一去播放它。不過,我們要檢查物件本身知道的延遲之後才會播放它。因此,在迴圈裡,我們剝離第一個其餘對象去播放和檢查在這與先前之間的時間差,使用這數值來設定延遲,而且還儲存指針在較低的"pointer" "pack"物件。

時間差需要設定延遲物件是取得使用"get template-toplevel x"的物件。(這是轉換為增量的時間("-"),更正為節奏,餵食到延遲)。Pd提供了"get" "set"物件從資料結構讀取和寫入數值。這兩個"get"物件在這裡顯示獲取的"x" "voiceno"當前物件的領域。模板名稱(template-toplevel)是提供給"get"物件,使他們進一步查閱所需要領域的抵銷,為了更大的即時效率。

一旦延誤已過期,該物件的指針是重新呼叫(最下面的"pointer"物件),並且voice的數字被重新呼叫。指針本身和路由被包裹,使指針到適當的voicevoice數字是顯示頻率微量的顏色在「 999 」的單位(第一位數的紅色,第二位數是綠色,第三位數藍色)和「路線」是任意成立選擇在六個最初和第二的的顏色加上黑色。

提取音高和動態斷點的細節來自陣列的定義,模板被管理在"voice"的抽象物裡。. "voice"的抽象收到一個指針,以某一特定的物件和管理陣列順序,所以它本身包含兩個時序。程序裝置patch整體結構的巢反射原始資料結構的巢。最後,把voice抽象物推出其音頻輸出在總結匯流排。

更普遍的patches可以輕易地興建獲取異構物件清單(有不同的模板)。就這樣,一個任意的豐富個人的"score language"可以發展和測序。

沒有留言: