Pure Data
此條目需要擴充。 (2018年5月10日) |
Pure Data(或稱作PD)是米勒・帕克特在1990年代为创造交互的计算机音乐和多媒体作品而开发的视觉化程式设计语言。虽然帕克特是Pd的主要作者,但是它是一个多数开发者为起开发新扩展的开放源代码项目。它以一个类似于BSD许可证类似许可证下发行,可运行在GNU/Linux、Mac OS X、iOS、Android和Windows。
原作者 | 米勒・帕克特 |
---|---|
当前版本 | 0.51-2[1](2020年8月15日[1]) |
源代码库 | |
类型 | 视觉化程式设计语言 |
许可协议 | 类BSD许可证 |
网站 | puredata |
编程范型 | 数据流程 |
---|---|
設計者 | 米勒・帕克特 |
发行时间 | 1996年 |
当前版本 |
|
操作系统 | 跨平台 |
許可證 | BSD许可证 |
網站 | puredata |
啟發語言 | |
Patcher |
Pd在范围和设计上与Puckette在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作为网络协议。
语言特性
像Max一样,Pd是一种数据流编程语言。与大多数数字信号处理软件一样,有两种主要的数据传递速率:采样(音频)速率,通常为每秒44,100个样本;控制速率,为每64个样本1个块。控制信息和音频信号通常在通过入口和出口连接的 "对象 "之间从屏幕的顶部流向底部。
Pd支持四种基本类型的文本实体:消息、对象、原子和注释。原子是Pd中最基本的数据单位,它们由一个浮点数、一个符号或一个数据结构的指针组成(在Pd中,所有数字都以32位浮点数存储)。消息由一个或多个原子组成,并向对象提供指令。有一种特殊类型的消息,内容为空,称为bang,用于启动事件,并将数据推入流,很像按下一个按钮。
Pd的本地对象包括从每一种编程语言中的基本数学、逻辑和位运算符到一般的和专门的音频速率DSP功能(用波浪线(~)符号指定),如波表振荡器、快速傅里叶变换(fft~)和一系列标准滤波器。数据可以从文件中加载,从音频板、MIDI中读入,通过FireWire、USB或网络连接的开放声音控制(OSC),或在运行中生成,并存储在表格中,然后可以读回并作为音频信号或控制数据使用。
语言限制
Pd虽然是一种强大的语言,但Pd在实现面向对象的概念方面有一定的局限性。[4]例如,创建大规模的并行进程非常困难,因为由于缺乏构造函数,实例化和操作大型对象列表是不可能的。此外,Pd的数组和其他实体很容易受到命名空间碰撞的影响,因为传递补丁实例ID是一个额外的步骤,有时很难完成。
代码例子
Pure Data可视代码样例跳线(Patch):
-
跳线1: PD的Hello world程序。
-
跳线2: PD中的混响。
- 第一个跳线向显示器打印“hello world”。
- 第二个跳线向到来自第1声道的信号应用混响,接着发送它到声道1和2。
-
跳线3: PD中的过滤器和数据流程。
- 最后的更复杂的跳线过滤在9000 Hz的白噪声(使用Q为20),接着每秒在半秒进程中淡入和淡出。在PD中,时间以微秒计量。
引用
- ^ 1.0 1.1 Software by Miller Puckette. Miller Puckette. [12 November 2020]. (原始内容存档于2021-03-21).
- ^ Release 0.55-1. 2024年9月9日 [2024年9月26日].
- ^ Puckette, M. (1988). The patcher. In Proceedings of International Computer Music Conference.
- ^ Possibilities#2: Audio Layer. 2 March 2010 [5 January 2017]. (原始内容存档于2022-09-10).