Pure Data

維基百科,自由的百科全書
Pure Data
Pure Data
Pure Data
原作者米勒・帕克特英語Miller Puckette
當前版本
  • 0.54-1 (2023年10月30日;穩定版本)[1]
編輯維基數據鏈接
源代碼庫 編輯維基數據鏈接
類型視覺化程式設計語言
許可協議類BSD許可證
網站puredata.info
Pure Data
編程範型數據流程
設計者米勒・帕克特
面市時間1996年,​28年前​(1996
當前版本
  • 0.54-1 (2023年10月30日;穩定版本)[1]
編輯維基數據鏈接
操作系統跨平台
許可證BSD許可證
網站puredata.info
啟發語言
Patcher

Pure Data(或稱作PD)是米勒・帕克特英語Miller Puckette在1990年代為創造交互的計算機音樂和多媒體作品而開發的視覺化程式設計語言。雖然帕克特是Pd的主要作者,但是它是一個多數開發者為起開發新擴展的開放源代碼項目。它以一個類似於BSD許可證類似許可證下發行,可運行在GNU/Linux、Mac OS X、iOS、Android和Windows。

Pd在範圍和設計上與Puckette在IRCAM(聲學/音樂協調研究所英語IRCAM)工作時開發的Max程序非常相似,並且在某種程度上與Max/MSP(Max語言的商業前身)具有互操作性。它們可以作為Patcher[3]語言家族的成員來共同討論。

隨着加入多媒體圖形環境(GEM),以及為其設計的外部程序(如用於Linux、Mac OS X的Pure Data Packet / PiDiP)、用於Windows的framestein、GridFlow(處理n維矩陣,用於Linux、Mac OS X、Windows),可以實時創建和處理視頻、OpenGL圖形、圖像等,並具有與音頻、外部傳感器等互動的廣泛可能性。

Pd的原生設計是為了實現跨網絡或互聯網的現場協作,允許通過局域網連接的音樂家,甚至是全球不同地區的音樂家,一起實時創作音樂。Pd使用FUDI英語FUDI作為網絡協議。

語言特性[編輯]

像Max一樣,Pd是一種數據流編程語言。與大多數數字信號處理軟件一樣,有兩種主要的數據傳遞速率:採樣(音頻)速率,通常為每秒44,100個樣本;控制速率,為每64個樣本1個塊。控制信息和音頻信號通常在通過入口和出口連接的 "對象 "之間從屏幕的頂部流向底部。

Pd支持四種基本類型的文本實體:消息、對象、原子和注釋。原子是Pd中最基本的數據單位,它們由一個浮點數、一個符號或一個數據結構的指針組成(在Pd中,所有數字都以32位浮點數存儲)。消息由一個或多個原子組成,並向對象提供指令。有一種特殊類型的消息,內容為空,稱為bang,用於啟動事件,並將數據推入流,很像按下一個按鈕。

Pd的本地對象包括從每一種編程語言中的基本數學邏輯位運算符到一般的和專門的音頻速率DSP功能(用波浪線(~)符號指定),如波表英語Wavetable synthesis振盪器、快速傅里葉變換(fft~)和一系列標準濾波器。數據可以從文件中加載,從音頻板、MIDI中讀入,通過FireWireUSB或網絡連接的開放聲音控制英語Open Sound Control(OSC),或在運行中生成,並存儲在表格中,然後可以讀回並作為音頻信號或控制數據使用。

語言限制[編輯]

Pd雖然是一種強大的語言,但Pd在實現面向對象的概念方面有一定的局限性。[4]例如,創建大規模的並行進程非常困難,因為由於缺乏構造函數,實例化和操作大型對象列表是不可能的。此外,Pd的數組和其他實體很容易受到命名空間碰撞的影響,因為傳遞補丁實例ID是一個額外的步驟,有時很難完成。

代碼例子[編輯]

Pure Data可視代碼樣例跳線(Patch):

  • 第一個跳線向顯示器打印「hello world」。
  • 第二個跳線向到來自第1聲道的信號應用混響,接着發送它到聲道1和2。
  • 最後的更複雜的跳線過濾在9000 Hz的白噪聲(使用Q為20),接着每秒在半秒進程中淡入和淡出。在PD中,時間以微秒計量。

引用[編輯]

  1. ^ 1.0 1.1 Release 0.54-1. 2023年10月30日 [2023年11月19日]. 
  2. ^ 2.0 2.1 Software by Miller Puckette. Miller Puckette. [12 November 2020]. (原始內容存檔於2021-03-21). 
  3. ^ Puckette, M. (1988). The patcher. In Proceedings of International Computer Music Conference.
  4. ^ Possibilities#2: Audio Layer. 2 March 2010 [5 January 2017]. (原始內容存檔於2022-09-10). 

外部連結[編輯]