Files
PatchGen/PdFileFormat/Modified_PdFileFormat.html
AnxiousAnt 3eb4e7ef87 upload
2024-07-10 01:35:45 +05:30

502 lines
73 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0049)https://puredata.info/docs/developer/PdFileFormat -->
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<title>
PdFileFormat
Pd Community Site
</title>
<!--<base href="https://puredata.info/docs/developer/PdFileFormat">--><base href="."/>
<meta content="Plone - http://plone.org" name="generator"/>
<meta content="Unofficial PD v0.37 fileformat specification by Simon Asselbergs and Tjeerd Sietsma Hogeschool voor de Kunsten Utrecht Faculty of Art Media and Technology October 23rd 2004
..." name="description"/>
<!-- Plone ECMAScripts -->
<script src="./PdFileFormat — Pd Community Site_files/ploneScripts2304.js.download" type="text/javascript">
</script>
<script src="./PdFileFormat — Pd Community Site_files/ploneScripts2882.js.download" type="text/javascript">
</script>
<style type="text/css"><!-- @import url(https://puredata.info/portal_css/Plone%20Default/ploneStyles6559.css); --></style>
<link href="./PdFileFormat — Pd Community Site_files/ploneStyles2410.css" media="screen" rel="alternate stylesheet" title="Small Text" type="text/css"/>
<link href="./PdFileFormat — Pd Community Site_files/ploneStyles2700.css" media="screen" rel="alternate stylesheet" title="Large Text" type="text/css"/>
<style media="all" type="text/css"><!-- @import url(https://puredata.info/portal_css/Plone%20Default/ploneStyles6568.css); --></style>
<!-- Internet Explorer CSS Fixes -->
<!--[if lt IE 7]>
<style type="text/css" media="all">@import url(https://puredata.info/IEFixes.css);</style>
<![endif]-->
<link href="https://puredata.info/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="https://puredata.info/" rel="home" title="Front page"/>
<link href="https://puredata.info/search_form" rel="search" title="Search this site"/>
<link href="https://puredata.info/author/" rel="author" title="Author information"/>
<link href="https://puredata.info/sitemap" rel="contents" title="Site Map"/>
<link href="https://puredata.info/docs/developer" rel="up" title="Up one level"/>
<!-- Disable IE6 image toolbar -->
<meta content="no" http-equiv="imagetoolbar"/>
<style type="text/css">
<!-- .documentActions {margin-top:0} /* fix layout in plone 2.0 */-->
</style>
<meta content="Pd File Format" name="keywords"/>
<meta content="Unofficial PD v0.37 fileformat specification by Simon Asselbergs and Tjeerd Sietsma Hogeschool voor de Kunsten Utrecht Faculty of Art Media and Technology October 23rd 2004
..." name="description"/>
</head>
<body class="section-docs" dir="ltr">
<div id="visual-portal-wrapper">
<div id="portal-top">
<div id="portal-header">
<a accesskey="2" class="hiddenStructure" href="https://puredata.info/docs/developer/PdFileFormat#documentContent">Skip to content.</a>
<a accesskey="6" class="hiddenStructure" href="https://puredata.info/docs/developer/PdFileFormat#portlet-navigation-tree">Skip to navigation</a>
<ul id="portal-siteactions">
<li id="siteaction-sitemap"><a accesskey="3" href="https://puredata.info/sitemap" title="Site Map">Site Map</a></li>
<li id="siteaction-accessibility"><a accesskey="0" href="https://puredata.info/accessibility-info" title="Accessibility">Accessibility</a></li>
<li id="siteaction-contact"><a accesskey="9" href="https://puredata.info/contact-info" title="Contact">Contact</a></li>
</ul>
<div id="portal-searchbox">
<form action="https://puredata.info/search" name="searchform" onsubmit="return liveSearchSubmit()" style="white-space:nowrap">
<label class="hiddenStructure" for="searchGadget">Search Site</label>
<div class="LSBox">
<input accesskey="4" autocomplete="off" class="visibility:visible" id="searchGadget" name="SearchableText" size="15" tabindex="30000" title="Search Site" type="text"/>
<input class="searchButton" type="submit" value="Search"/>
<div class="LSResult" id="LSResult" style="display: none;"><div class="LSShadow" id="LSShadow"></div></div>
</div>
</form>
<div class="hiddenStructure" id="portal-advanced-search">
<a accesskey="5" href="https://puredata.info/search_form">
Advanced Search…
</a>
</div>
</div>
<h1 id="portal-logo">
<a accesskey="1" href="https://puredata.info/">Pd Community Site</a>
</h1>
<div id="portal-skinswitcher">
</div>
<h5 class="hiddenStructure">Sections</h5>
<ul id="portal-globalnav">
<li class="plain" id="portaltab-downloads">
<a href="https://puredata.info/downloads" title='All sorts of software built on/with/for Pd. For a quick start, download the "vanilla" Pure Data.'>downloads</a></li>
<li class="selected" id="portaltab-docs">
<a href="https://puredata.info/docs" title="This section of the website is a central resource for finding all sorts of information about Pd, whether that information is on this website or elsewhere. Its all a wiki, so we encourage you to contribute what you can.">documentation</a></li>
<li class="plain" id="portaltab-dev">
<a href="https://puredata.info/dev" title="content related to the development of Pd">development</a></li>
<li class="plain" id="portaltab-community">
<a href="https://puredata.info/community" title="">community</a></li>
<li class="plain" id="portaltab-Members">
<a href="https://puredata.info/Members" title="Container for portal members' home directories">members</a></li>
<li class="plain" id="portaltab-exhibition">
<a href="https://puredata.info/exhibition" title="an exhibition of works made with Pd curated by the Pd community">exhibition</a></li>
<li class="plain" id="portaltab-privacy">
<a href="https://puredata.info/privacy" title="">Privacy Policy</a></li>
</ul>
</div>
<div id="portal-personaltools-wrapper">
<h5 class="hiddenStructure">Personal tools</h5>
<ul id="portal-personaltools">
<li>
<a href="https://puredata.info/login_form">
Log in
</a>
</li>
<li>
<a href="https://puredata.info/join_form">
Join
</a>
</li>
</ul>
</div>
<div id="portal-breadcrumbs">
<span id="breadcrumbs-you-are-here">You
are here:</span>
<a href="https://puredata.info/">Home</a>
<span class="breadcrumbSeparator">
</span>
<span dir="ltr">
<a href="https://puredata.info/docs">documentation</a>
<span class="breadcrumbSeparator">
</span>
</span>
<span dir="ltr">
<a href="https://puredata.info/docs/developer">developer</a>
<span class="breadcrumbSeparator">
</span>
</span>
<span dir="ltr">
<span>PdFileFormat</span>
</span>
</div>
</div>
<div class="visualClear"><!-- --></div>
<table id="portal-columns">
<tbody>
<tr>
<td id="portal-column-one">
<div class="visualPadding">
<dl class="portlet" id="portlet-navigation-tree">
<!-- Commented out Navigation header. ON SUNDAY 11 MARCH 2012 M.D. <dt class="portletHeader">
<span class="portletTopLeft"></span>
<a href="#"
class="tile"
tal:content="name"
tal:condition="name"
tal:attributes="href string:$portal_url/sitemap"
>Navigation</a>
<a href="#"
class="tile"
tal:condition="not:name"
tal:attributes="href string:$portal_url/sitemap"
i18n:translate="">Navigation</a>
<span class="portletTopRight"></span>
</dt> -->
<dd class="portletItem lastItem">
<ul class="portletNavigationTree navTreeLevel0">
<li class="navTreeItem">
<div class="contenttype-plone-site">
<a class="visualIconPadding" href="https://puredata.info/" title="Community Portal for Pure Data">
Home
</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-plonesoftwarecenter">
<a class="state-published visualIconPadding" href="https://puredata.info/downloads" title='All sorts of software built on/with/for Pd. For a quick start, download the "vanilla" Pure Data.'>downloads</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs" title="This section of the website is a central resource for finding all sorts of information about Pd, whether that information is on this website or elsewhere. Its all a wiki, so we encourage you to contribute what you can.">documentation</a>
</div>
<ul class="navTree navTreeLevel1">
<li class="navTreeItem visualNoMarker">
<div class="contenttype-helpcenterfaqfolder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/faq" title="Frequently Asked Questions regarding Pd (now with answers)
If you have something to contribute to this page, log into puredata.info and you will have edit access.">FAQ for Pd</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-zwikifolder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/developer" title="This section covers topics related to the development of Pd itself, like getting source code, building, packaging, etc.">developer</a>
</div>
<ul class="navTree navTreeLevel2">
<li class="navTreeItem visualNoMarker">
<div class="contenttype-wiki-page">
<a class="state-missing-value navTreeCurrentItem visualIconPadding" href="https://puredata.info/docs/developer/PdFileFormat" title="Unofficial PD v0.37 fileformat specification by Simon Asselbergs and Tjeerd Sietsma Hogeschool voor de Kunsten Utrecht Faculty of Art Media and Technology October 23rd 2004
...">PdFileFormat</a>
</div>
</li>
</ul>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/manuals" title="Manuals for many Pd-related things.">manuals</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-zwikifolder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/guiplugins" title="As of Pd 0.43, you can customize the behavior of the GUI using plugins. This is space for the documentation of these GUI plugins.">GUI Plugins</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/workshops" title="A listing of workshops given around that world that are related to Pd. Most include the class materials for downloading and freely using.">workshops</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/style-guide" title="A collection of patch construction guidance in the vein of Python's PEP8 (http://www.python.org/dev/peps/pep-0008/). To add to the menagerie of styles, add a page describing your habits, tips, and reasonings. Typical entries would include: Layout (i.e. presentation and organization), Comments, Arguments, Triggers, Send/Receive/Value naming conventions, Abstraction/Subpatch naming conventions, Interfacing (APIs and inter-patch communication), and general &quot;Programming Recommendations&quot; (e.g. counters, initialization, negating values and other everyday stuffs)">Style Guide</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-zwikifolder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/sitedocs" title="Documentation about how to do things on this website, puredata.info">Site Docs</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/tutorials" title="Pure Data Tutorials covering all sorts of topics">tutorials/howtos</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/articles" title="">articles</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/old" title="a resting place for old stuff">old</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-zwikifolder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/raspberry-pi" title="section to document Pd on Raspberry Pi">Raspberry Pi</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/docs/recycle_bin" title="">deleted wiki pages</a>
</div>
</li>
</ul>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/dev" title="content related to the development of Pd">development</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/community" title="">community</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-large-plone-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/Members" title="Container for portal members' home directories">members</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/exhibition" title="an exhibition of works made with Pd curated by the Pd community">exhibition</a>
</div>
</li>
<li class="navTreeItem visualNoMarker">
<div class="contenttype-folder">
<a class="state-published visualIconPadding" href="https://puredata.info/privacy" title="">Privacy Policy</a>
</div>
</li>
</ul>
<span class="portletBottomLeft"></span>
<span class="portletBottomRight"></span>
</dd>
</dl>
 
</div>
</td>
<td id="portal-column-content">
<div class="documentEditable" id="content">
<h5 class="hiddenStructure">Views</h5>
<ul class="contentViews">
<li class="selected" id="contentview-view">
<a href="https://puredata.info/docs/developer/PdFileFormat">View</a>
</li>
</ul>
<div class="contentActions">
<h5 class="hiddenStructure">Actions</h5>
<ul class="actionItems">
<li id="contentaction-recentchanges">
<a class="" href="https://puredata.info/docs/developer/FrontPage/recentchanges">
Wiki changes
</a>
</li>
<li id="contentaction-contents">
<a class="" href="https://puredata.info/docs/developer/FrontPage/contents#PdFileFormat">
Wiki contents
</a>
</li>
<li id="contentaction-backlinks">
<a class="" href="https://puredata.info/docs/developer/PdFileFormat/backlinks">
Related pages
</a>
</li>
<li id="contentaction-history">
<a class="" href="https://puredata.info/docs/developer/PdFileFormat/diff">
History
</a>
</li>
</ul>
<ul>
</ul>
</div>
<div class="documentContent" id="region-content">
<a name="documentContent"></a>
<!-- always-available zwiki access keys -->
<a accesskey="f" href="https://puredata.info/docs/developer/FrontPage"></a>
<a accesskey="c" href="https://puredata.info/docs/developer/FrontPage/contents#PdFileFormat"></a>
<a accesskey="r" href="https://puredata.info/docs/developer/FrontPage/recentchanges"></a>
<a accesskey="o" href="https://puredata.info/docs/developer/FrontPage/useroptions"></a>
<a accesskey="h" href="https://puredata.info/docs/developer/FrontPage/helppage"></a>
<a accesskey="-" href="https://puredata.info/docs/developer/PdFileFormat/setskin?skin=zwiki&amp;came_from=https%3A//puredata.info/docs/developer/PdFileFormat"></a>
<a accesskey="+" href="https://puredata.info/docs/developer/PdFileFormat/setskin?skin=plone&amp;came_from=https%3A//puredata.info/docs/developer/PdFileFormat"></a>
<a accesskey="v" href="https://puredata.info/docs/developer/PdFileFormat"></a>
<a accesskey="m" href="https://puredata.info/docs/developer/PdFileFormat/subscribeform"></a>
<a accesskey="b" href="https://puredata.info/docs/developer/PdFileFormat/backlinks"></a>
<a accesskey="d" href="https://puredata.info/docs/developer/PdFileFormat/diff"></a>
<a accesskey="y" href="https://puredata.info/docs/developer/PdFileFormat/manage_change_history_page"></a>
<a accesskey="e" href="https://puredata.info/docs/developer/PdFileFormat/editform"></a>
<a accesskey="x" href="https://puredata.info/docs/developer/externalEdit_/PdFileFormat?borrow_lock=1"></a>
<a accesskey="n" href="https://puredata.info/docs/developer/DirectoryLayout"></a>
<a accesskey="p" href="https://puredata.info/docs/developer/SVNCommitAccess"></a>
<a accesskey="u" href="https://puredata.info/docs/developer/FrontPage"></a>
<a accesskey="0" href="https://puredata.info/docs/developer/PdFileFormat/showAccessKeys"></a>
<div class="pageheader">
<!-- page header -->
<form action="https://puredata.info/docs/developer/FrontPage/searchwiki" method="GET">
<table border="0" cellspacing="0" width="100%">
<tbody><tr>
<!-- logo -->
<!-- page name and context (parent topics) -->
<td align="left" width="79%">
<ul class="outline expandable">
<li><a href="https://puredata.info/docs/developer/FrontPage" name="FrontPage">FrontPage</a>
<ul class="outline expandable">
<li><h1 style="display:inline;"><a href="https://puredata.info/docs/developer/PdFileFormat/backlinks" name="PdFileFormat" title="which pages link to this one ?">PdFileFormat</a></h1></li>
</ul>
</li>
</ul>
</td>
<!-- search form & page info -->
<td align="right" class="searchbox" width="20%">
<span class="lasteditor">last edited <a href="https://puredata.info/docs/developer/PdFileFormat/diff" title="show last edit ()">12 years</a> ago by <b>pduboue</b></span>
<div class="documentActions">
<h5 class="hiddenStructure">Document Actions</h5>
<ul>
<li>
<a href="https://puredata.info/docs/developer/PdFileFormat/sendto_form">
<img alt="Send this page to somebody" id="icon-sendto" src="./PdFileFormat — Pd Community Site_files/mail_icon.gif" title="Send this page to somebody"/>
</a>
</li>
<li>
<a href="javascript:this.print();">
<img alt="Print this page" id="icon-print" src="./PdFileFormat — Pd Community Site_files/print_icon.gif" title="Print this page"/>
</a>
</li>
</ul>
</div>
</td>
</tr>
</tbody></table>
</form>
</div>
<div align="right">
<!-- page rating form -->
<div>
<a name="ratingform"></a>
<style type="text/css">
input.rating {border:none;}
</style>
<form action="https://puredata.info/docs/developer/PdFileFormat/vote" id="ratingform" method="POST">
<input alt="0" class="rating" height="13" name="vote0" src="./PdFileFormat — Pd Community Site_files/sp" style="" title="click to vote 0 (poor) for this page (1 votes)" type="image" value="0" width="14"/><input alt="1" class="rating" name="vote1" src="./PdFileFormat — Pd Community Site_files/star_icon" style="" title="click to vote 1 (average) for this page (1 votes)" type="image" value="1"/><input alt="2" class="rating" name="vote2" src="./PdFileFormat — Pd Community Site_files/star_icon" style="" title="click to vote 2 (above average) for this page (1 votes)" type="image" value="2"/><input alt="3" class="rating" name="vote3" src="./PdFileFormat — Pd Community Site_files/star_icon" style="" title="click to vote 3 (good) for this page (1 votes)" type="image" value="3"/><input alt="4" class="rating" name="vote4" src="./PdFileFormat — Pd Community Site_files/star_icon" style="" title="click to vote 4 (great) for this page (1 votes)" type="image" value="4"/><input alt="5" class="rating" name="vote5" src="./PdFileFormat — Pd Community Site_files/star_icon" style="" title="click to vote 5 (superb) for this page (1 votes)" type="image" value="5"/>
</form>
</div>
</div>
<br/>
<div class="content">
<!-- page content (main text, subtopics links, comments) -->
<!--
<div metal:use-macro="here/macros/maintext" />
<div metal:use-macro="here/macros/subtopics" />
<div metal:use-macro="here/macros/comments" />
-->
<p></p><div align="center"> <p align="center"><span class="Title"><a name="0"></a>Unofficial PD v0.37 fileformat specification</span><br/> <span class="subTitle">by <span class="link-mailto"><a href="mailto:simon3@student-kmt.hku.nl">Simon Asselbergs</a></span> and <span class="link-mailto"><a href="mailto:tjeerd@student-kmt.hku.nl">Tjeerd Sietsma</a></span><br/> Hogeschool voor de Kunsten Utrecht<br/> Faculty of Art Media and Technology <br/> October 23rd 2004<br/><br/>
Copyright (c) 2005 Free Software Foundation.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is online at
<span class="link-external"><a href="http://www.gnu.org/licenses/fdl.html">http://www.gnu.org/licenses/fdl.html</a></span>.
Initial authors: Simon Asselbergs and Tjeerd Sietsma.
</span></p></div><hr noshade="" size="2" width="100%"/><div align="center"><a href="https://puredata.info/docs/developer/PdFileFormat#1">introduction</a> | <a href="https://puredata.info/docs/developer/PdFileFormat#2">records</a> | <a href="https://puredata.info/docs/developer/PdFileFormat#3">wiring</a> | <a href="https://puredata.info/docs/developer/PdFileFormat#4">elements and objects</a> | <a href="https://puredata.info/docs/developer/PdFileFormat#5">common parameters</a> | <strong><a href="https://puredata.info/docs/developer/PdFileFormat#6">reference</a></strong> | <a href="https://puredata.info/docs/developer/pd_fileformat.ebnf">EBNF version</a></div><hr noshade="" size="2" width="100%"/><p class="Head"><a name="1"></a>Introduction</p><blockquote> <p>This file describes the fileformat of patchfiles (*.pd) of Miller Puckette's PureData.</p> <p> It is released because:</p></blockquote><ul> <li>PureData's patchfile format is officially undocumented.</li> <li>It may serve as a partial tutorial to help readers understand PureData better.</li></ul><blockquote> <p>This documents is currently unofficial, beware that there is no warranty whatsoever.<br/> If you find this document incorrect or incomplete please send us an e-mail using the links at the top of this document.<br/> There are a few things still unknown, we don't exclude the possibility those things are used for compatibility with Max.</p> <p><a href="https://puredata.info/docs/developer/PdFileFormat#0">back to top</a> </p></blockquote><p class="Head"><br/> <a name="2"></a>Records</p><blockquote> <p>The PD fileformat is a genuine custom textfile format, not to be confused with XML.<br/> It consists of one ore more records.<br/> Each record may cover multiply lines but they all have thesame syntax:</p> <p> <span class="code"><strong>#</strong>[data]<strong>;</strong>\r\n</span></p> <p>where[data] holds the record data, \r represents an ASCII code 13 carriage return character, and \n represents an ASCII code 10 line-feed character.<br/> Let us take a closer look on the records contents.</p> <p>Each record consists of a chunk type, element type and optional parameters like this:</p> <p class="code"><strong>#</strong>[chunk_type] [element_type] [p1] [p2] [p3] [...]<strong>;\r\n</strong></p> <p>[chunk_type] is a sinlge character with only three possible values: "X" for an object, "N" for a new window, and finally "A" for array data.</p> <p>[element_type] is a predefined PD element. This declaration is also used for wires. <em>Object </em>elements are numbered in order of appearance in the file, all other elements are excluded from numbering. These numbers are pure virtual and can not be seen directly in the file.</p> <p>[p1] [p2] [p3] [...] are the required parameters for each element, this differences per element.</p> <p><a href="https://puredata.info/docs/developer/PdFileFormat#0">back to top</a> </p></blockquote><p class="style13"><br/> <span class="Head"><a name="3"></a>Wiring</span></p><blockquote> <p>Almost all objects can be interconnected with wires in PureData. Each wire is stored in the file using the following syntax: </p> <p class="code"><strong>#X connect</strong> [source] [outlet_number] [sink] [inlet_number]<strong>;\r\n</strong></p> <p>[source] Is the number of the object the data is coming from. [outlet-number] Represents the number of the outlet of the source object where the wire starts. Sequentially, [sink] is the number of the target object, and finally [inlet_number] specifies inlet of the target object to which the wired is connected.<br/> Logically, the objects (again, <strong>connect</strong>s excluded) are numbered from 0 to the total number of objects in the file using the integer format. The inlets and outlets are numbered likewise.<br/> Please keep this in mind, to prevent making often made off-by-one errors.</p> <p><a href="https://puredata.info/docs/developer/PdFileFormat#0">back to top</a> </p></blockquote><p class="style13"><br/> <span class="Head"><a name="4"></a>Elements and objects </span></p><blockquote> <p>There's a difference between elements and objects. Elements are the parts that together make up the entire layout of a patch, including windowsizes and position. Objects are the building blocks of PureData that contain functionality, gui-related or not. </p> <p>All other <strong>elements</strong> are used to build actual PureData objects:</p></blockquote><ul> <li>array - visual two dimensional array</li> <li>canvas - specifications for the windowsizes and position </li> <li>coords - used for graphs </li> <li>floatatom - number</li> <li>msg - message</li> <li>obj - object, empty, subpatch or gui: <ul> <li>bang</li> <li>toggle</li> <li>nbx</li> <li>vslider</li> <li>hslider</li> <li>vu</li> <li>canvas - gui element</li> <li>pd [name]</li> <li>[name]</li> </ul> </li> <li>restore - for exiting subwindows and graphs </li> <li>symbolatom - symbol</li> <li>text - comment</li></ul><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#0">back to top</a></p></blockquote><p><br/> <span class="Head"><a name="5"></a>Common parameters</span></p><ul> <li><em>Positions and size</em>: As PureData uses a graphical interface every gui-related element (object, message, number, symbol, comment, bang, toggle, number2, vslider, hslider, vradio, hradio, vu, canvas, graph, array) have a horizontal and vertical position in the window that holds the (sub)patch.<br/> Records of gui elements that have adjustable sizes also contain the horizontal and/or vertical size.<br/> Positions and sizes are stored in pixels.<br/> Note that in graphs (element: coords) the pixel sizes of its canvas are relative of the coordinates of the graph, when the option "graph on parent" is selected.</li> <li><em>Color</em>: Some graphical elements have color attributes. Per color only one signed integer value is stored that contains the three 8-bit color components (RGB).<br/> Formula to calculate color attribute values:<br/> <br/> <strong>color = ( </strong>[red]<strong> * -65536) + ( </strong>[green]<strong> * -256) + ( </strong>[blue]<strong> * -1)<br/> <br/> </strong>Where [red], [green], [blue] obviously represent the three color components, their values range from 0 to 255.<br/> They apply to the attributes [background color], [front color], [label color] of various elements.</li> <li><em>Fonts</em>: elements that have a unsigned integer [font] attribute (e.g. the element <strong>text</strong>) have a choice out of three different fonts:<br/> 0 = Courier, 1 = Helvetica, 2 = Times. Courier is the only available fixed width font.<br/> The [fontsize] attribute contains the font size in pixels.</li> <li><em>Labels</em>: the many GUI-elements that have a [label] attribute can be named. In its label string no spaces ASCII code 32 is allowed. It will generally be recognized as a seperator character for the next parameter/attribute.</li> <li><em>Other parameters</em>: Because of the difference between element parameters there is no default syntax for all elements. They may or may not look much like other elements, depending on their visual and functional similarities.</li></ul><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#0">back to top</a></p> </blockquote><br/><hr noshade="" size="2" width="100%"/><p> <span class="Head"><a name="6"></a>Reference</span></p><ul> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r1">A</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r2">N</a><ul> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r21">canvas</a></li> </ul> </li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r3">X</a><ul> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r31">array</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r32">connect</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r33">coords</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r34">floatatom</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r35">msg</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r36">obj</a> <ul> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r361">bng</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r362">tgl</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r363">nbx</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r364">vsl</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r365">hsl</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r366">vradio</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r367">hradio</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r368">vu</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r369">cnv</a></li> </ul> </li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r37">[name]</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r38">pd [name]</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r39">restore</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r3A">symbolatom</a></li> <li><a href="https://puredata.info/docs/developer/PdFileFormat#r3B">text</a></li> </ul> </li></ul><blockquote><p><a href="https://puredata.info/docs/developer/PdFileFormat#0">back to top</a></p></blockquote><br/><hr noshade="" size="2" width="100%"/><br/><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r1"></a>A</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Announces array data </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td><span class="code"><strong>#A </strong>[p1] [p2] [p3] [...]<strong>;\r\n</strong></span></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[p1] [p2] [p3] [...] floating point variables representing array elements</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td>See Array</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td>Used only in combination of an array definition </td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r2"></a>N</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Announces a frameset</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td><span class="code"><strong>#N </strong>[new_frame]<strong>;\r\n</strong></span></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[new_frame] new frameset, currently only a new patchwindow can be defined</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td>see canvas</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td>Currently used only for new canvas definitions</td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a id="r21" name="r21"></a>canvas</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines window properties</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td><span class="code"><strong>#N canvas </strong>[x_pos] [y_pos] [x_size] [y_size] [name] [open_on_load]<strong>;\r\n</strong></span></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position offset of frameset (window)<br/> [y_pos] - vertical position offset of frameset (window)<br/> [x_size] - horizontal size of frameset (window)<br/> [y_size] - vertical size of frameset (window)<br/> [name] - name / handle of frameset <br/> [open_on_load] - when flag is set the canvas is opened when the patch is loaded</td> </tr> <tr> <td valign="top"><div align="right">Example:</div></td> <td class="code">#N canvas 0 0 452 302 12;</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code"> #N canvas 0 0 452 302 thiscanvas 0;<br/> #X restore 41 136 pd thiscanvas;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td>In this example patch there are two canvas definitions.<br/> The first example has a special syntax, the attributes [name] and [open_on_load] have been replaced by a [font_size] attribute. This is only the case when the canvas definition is the first record in the patchfile, to define the position and size of the main patcher window, and set the default font size. When a first canvas definition is absent the default values of PureData are used. Note that in this case you can alter the default font size with a command line parameter.<br/> The second example shows a regular internal subpatch definition. Normally a canvas defintion is always postceeded with a restore element to define the position within the canvas, and the name of the subpatch.<br/> Presumably, the canvas name in the canvas defintion and restore definition should be thesame.</td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r3"></a>X</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Announces regular elements </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X </strong>[element]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[element] - element definition</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 50 36;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td>Used with <em>every</em> element definition except canvas definitions</td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r31"></a>array</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Array</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X array </strong>[array_name] [array_size] <strong>float </strong>[save_flag]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[array_name] - name / handle of the array <br/> [array_size] - total number of elements of an array<br/> [save_flag] - with this flag set the array data is stored in the patch</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#N canvas 0 0 450 300 graph4 0;<br/> #X array array3 10 float 1;<br/> #A 0 0 0 0 0 0 0 0 0 0;<br/> #X coords 0 1 99 -1 200 140 1;<br/> #X restore 270 193 graph;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td>An array is a gui-form of a table, always visualised using a graph. Optionally the array data can be saved in the patch - which can be <strong>very</strong> space-consuming and CPU intensive when you want to store a large number of floating point values typed out in a textfile.</td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r32"></a>connect</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Wires GUI-elements</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X connect </strong> [source] [outlet] [target] [inlet]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[source]<br/> [outlet]<br/> [target]<br/> [inlet]</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 30 27 midiin;<br/> #X obj 26 59 midiout;<br/> #X connect 0 0 1 0;<br/> #X connect 0 1 1 1;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p><strong>Obj</strong>ects are virtually numbered in order of appearance in the file, starting from zero. Inlets and outlets of the objects are numbered likewise. <strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r33"></a>coords</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Visual ranges of a frameset (window) </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X coords</strong> [x_from] [y_to] [x_to] [y_from] [width] [heigth] [graph_on_parent]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_from] - first index to display <br/> [y_to] - dynamic range of graph upper border<br/> [x_to] - last index to display<br/> [y_from] - dynamic range of graph lower border <br/> [width] - relative horizontal size of graph <br/> [heigth] - relative vertical size of graph <br/> [graph_on_parent] - when set displayes child path, when unset graph is displayed like an object</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#N canvas 0 0 452 302 graph1 0;<br/> #X coords 0 1 100 -1 200 140 1;<br/> #X restore 58 26 graph;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>A coords statement must always be preceded with a canvas statement which also holds the graph name. <br/> A coords statement must always be terminated with a restore statement that has the reserved handle <strong>graph<br/> </strong>Off limit values will be displayed outside the graph in the PureData GUI.<strong><br/> </strong></p> </td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r34"></a>floatatom</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a number box </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X floatatom </strong> [x_pos] [y_pos] [width] [lower_limit] [upper_limit] [label_pos] [label] [receive] [send]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within window <br/> [y_pos] - vertical position within window<br/> [width] - number of digits <br/> [lower_limit] - minimal value<br/> [upper_limit] - maximum value <br/> [label_pos] - label position relative to floatatom position. 0 = left, 1 = right, 2 = top, 3 = bottom <br/> [label] - floatatom label/name<br/> [receive] - receive symbol name <br/> [send] - send symbol name</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X floatatom 32 26 5 0 0 0 - - -;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>When the value of [upper_limit] minus the value of [lower_limit] is less than one, or the [width] attribute is set to one, PureData resets these values both to zero.<br/> Floatatom and symbolatom are the only elements that uses "-" characters to indicate that no value has been assigned to its attributes [label], [receive] and [send].<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r35"></a>msg</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a message </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X msg </strong> [x_pos] [y_pos] [p1] [p2] [p3] [...]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window <br/> [y_pos] - vertical position within the window<br/> [p1] [p2] [p3] [...] the content of the message</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X msg 61 48 read audio.wav;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>-<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r36"></a>obj</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines an object </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] [object_name] [p1] [p2] [p3] [...]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window <br/> [y_pos] - vertical position within the window<br/> [object_name] - name of the object (optional) <br/> [p1] [p2] [p3] [...] the parameters of the object (optional)</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 55 50;<br/> #X obj 132 72 trigger bang float;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>The first line is an example of an empty object. The second line describes a trigger object with its parameters<strong>.<br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r361"></a>bng</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a bang </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>bng</strong> [size] [hold] [interrupt] [init] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] <strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [size] - square size of the gui element<br/> [hold] - hold time in milliseconds, ranges from 50 to 1000000000<br/> [interrupt] - interrupt time in milliseconds, ranges from 10 to 250<br/> [init] - bang on load <br/> [send] - send symbol name <br/> [receive] - receive symbol name <br/> [label] - label<br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object <br/> [y_off] - vertical position of the label text relative to the upperleft corner of the object <br/> [font] - font type <br/> [fontsize] - font size<br/> [bg_color] - background color <br/> [fg_color] - foreground color <br/> [label_color] - label color</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 27 32 bng 15 10000 100 1 empty empty empty 0 -6 0 8 -262144 -1 -1;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>Hold time is for how long you see a flash when you click on the bang, interrupt time is for how long you don't see it flash when you click on this object while it's flashing.<strong><br/> </strong>[send], [receive] and [label] cannot be named "empty", this is a reserved name for when no value is assigned. <strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r362"></a>tgl</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a toggle </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>tgl</strong> [size] [init] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] [init_value] [default_value] <strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [size] - square size of the gui element<br/> [init] - set on load <br/> [send] - send symbol name <br/> [receive] - receive symbol name <br/> [label] - label<br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object <br/> [y_off] - vertical position of the label text relative to the upperleft corner of the object <br/> [font] - font type <br/> [fontsize] - font size<br/> [bg_color] - background color <br/> [fg_color] - foreground color <br/> [label_color] - label color<br/> [init_value] - value sent when the [init] attribute is set<br/> [default_value] - default value when the [init] attribute is not set</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 29 44 tgl 15 1 empty empty empty 0 -6 192 8 -262144 -1 -1 234 234;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>[send], [receive] and [label] cannot be named "empty", this is a reserved name for when no value is assigned.<br/> The [default_value] attribute can be changed in a patch and saved, this is why there are different values for [init_value] and [default_value]<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r363"></a>nbx</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a Number2 number box </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>nbx</strong> [size] [height] [min] [max] [log] [init] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] [log_height]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [size] - number of digits the element displays <br/> [height] - vertical size of element in pixels<br/> [min] - minimum value, typically -1e+037<br/> [max] - maximum value, typically 1e+037<br/> [log] - linear when unset, logarithmic when set<br/> [init] - when set outputs <br/> [send] - send symbol name <br/> [receive] - receive symbol name<br/> [label] - label <br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/> [y_off] - vertical position of the label text relative to the upperleft corner of the object<br/> [font] - font type <br/> [fontsize] - font size in pixels<br/> [bg_color] - background color<br/> [fg_color] - foreground color<br/> [label_color] - label color <br/> [log_height] - logarithmic steps, accepts values from 10 to 2000, default is 256</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 39 48 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>This element resembles the floatatom element, but is extended with gui and logarithmic parameters and (probably) more accurate.<br/> The attributes [font], [font_size] and [fg_color] also apply to the digits.<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r364"></a>vsl</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a vertical slider </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>vsl</strong> [width] [height] [bottom] [top] [log] [init] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] [default_value] [steady_on_click]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [width] - horizontal size of gui element <br/> [height] - vertical size of gui element <br/> [bottom] - minimum value <br/> [top] - maximum value<br/> [log] - when set the slider range is outputted logarithmically, otherwise it's output is linair<br/> [init] - sends default value on patch load <br/> [send] - send symbol name <br/> [receive] - receive symbol name <br/> [label] - label <br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/>[y_off] - vertical position of the label text relative to the upperleft corner of the object<br/> [font] - font type <br/> [fontsize] - font size <br/> [bg_color] - background color <br/> [fg_color] - foreground color<br/> [label_color] - label color <br/> [default_value] - default value times hundred<br/> [steady_on_click] - when set, fader is steady on click, otherwise it jumps on click</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 50 38 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144 -1 -1 0 1;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>The vertical slider object and the horizontal slider are the only objects which have a default value multiplied by hundred. This purpose is unknown.<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r365"></a>hsl</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a horizontal slider </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>hsl</strong> [width] [height] [bottom] [top] [log] [init] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] [default_value] [steady_on_click]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [width] - horizontal size of gui element <br/> [height] - vertical size of gui element <br/> [bottom] - minimum value <br/> [top] - maximum value<br/> [log] - when set the slider range is outputted logarithmically, otherwise it's output is linair<br/> [init] - sends default value on patch load <br/> [send] - send symbol name <br/> [receive] - receive symbol name <br/> [label] - label <br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/> [y_off] - vertical position of the label text relative to the upperleft corner of the object<br/> [font] - font type <br/> [fontsize] - font size <br/> [bg_color] - background color <br/> [fg_color] - foreground color<br/> [label_color] - label color <br/> [default_value] - default value times hundred<br/> [steady_on_click] - when set, fader is steady on click, otherwise it jumps on click</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 53 44 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 0 1;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>The horizontal slider object and the vertical slider are the only objects which have a default value multiplied by hundred. This purpose is unknown.<br/> </p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r366"></a>vradio</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a vertical radio button selector</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>vradio</strong> [size] [new_old] [init] [number] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] [default_value]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [size] - horizontal size and vertical size, depending on the number of radio buttons <br/> [new_old] - send new and old value, or only the new value<br/> [init] - send default value on init <br/> [number] - amount of radio buttons <br/> [send] - send symbol name <br/> [receive] - receive symbol name <br/> [label] - label <br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/>[y_off] - vertical position of the label text relative to the upperleft corner of the object<br/>[font] - font type <br/>[fontsize] - font size <br/>[bg_color] - background color <br/>[fg_color] - foreground color<br/>[label_color] - label color<br/> [default_value] - default value to be sent on patch load when the [init] attribute has been set.</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 48 42 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 -1 0;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>The purpose of the [new_old] switch is unknown.<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r367"></a>hradio</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a horizontal radio button selector</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>hradio</strong> [size] [new_old] [init] [number] [send] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [fg_color] [label_color] [default_value]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [size] - vertical size and horizontal size, depending on the number of radio buttons <br/> [new_old] - send new and old value, or only the new value<br/> [init] - send default value on init <br/> [number] - amount of radio buttons <br/> [send] - send symbol name <br/> [receive] - receive symbol name <br/> [label] - label <br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/> [y_off] - vertical position of the label text relative to the upperleft corner of the object<br/> [font] - font type <br/> [fontsize] - font size <br/> [bg_color] - background color <br/> [fg_color] - foreground color<br/> [label_color] - label color<br/> [default_value] - default value to be sent on patch load when the [init] attribute has been set.</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj -50 54 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 -1 0;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>The purpose of the [new_old] switch is unknown.<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r368"></a>vu</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a VU-meter </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>vu</strong> [width] [height] [receive] [label] [x_off] [y_off] [font] [fontsize] [bg_color] [label_color] [scale] [?]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window <br/> [width] - horizontal size of element <br/> [height] - vertical size of element <br/> [receive] - receive symbol name <br/> [label] - label<br/> [x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/>[y_off] - vertical position of the label text relative to the upperleft corner of the object<br/>[font] - font type <br/>[fontsize] - font size <br/>[bg_color] - background color <br/> [label_color] - label color <br/> [scale] - when set the logarithmic scale is displayed <br/> [?] - unknown value, default is zero</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td>#X obj 40 44 vu 15 120 empty empty -1 -8 0 8 -66577 -1 1 0;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>We looked inside the source code but still couldn't see the purpose of the final value.<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r369"></a>cnv</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a canvas, a gui component </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] <strong>cnv</strong> [size] [width] [height] [send] [receive] [label] [x_off] [y_off] [font] [font_size] [bg_color] [label_color] [?]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/>[y_pos] - vertical position within the window<br/> [size] - size of selectable square<br/>[width] - horizontal size of the GUI-element<br/>[height] - vertical size of the GUI-element<br/>[send] - send symbol name <br/>[receive] - receive symbol name <br/>[label] - label <br/>[x_off] - horizontal position of the label text relative to the upperleft corner of the object<br/>[y_off] - vertical position of the label text relative to the upperleft corner of the object<br/>[font] - font type <br/>[fontsize] - font size <br/>[bg_color] - background color<br/>[label_color] - foreground color <br/>[?] - unknown value, default is zero</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 27 40 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577 0;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>We couldn't find the purpose of the final value.<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r37"></a>[name]</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines an external subpatch or library patch </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X obj </strong> [x_pos] [y_pos] [name] [p1] [p2] [p3] [...] <strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/>[y_pos] - vertical position within the window<br/> [name] - name of the subpatch / library patch<br/> [p1] [p2] [p3] [...] - optional parameters</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#X obj 121 102 subpatch; </td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>If the external object isn't in the loaded libraries PureData searches in the folder of the main frame (window) to locate the object. <strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r38"></a>pd</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines an internal subpatch </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X restore </strong> [x_pos] [y_pos] <strong>pd</strong> [name]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/>[y_pos] - vertical position within the window<br/> [size] - size of selectable square<br/> [width] - horizontal size of the GUI-element<br/> [name] - name of the subpatch</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#N canvas 0 0 454 304 inc 0;<br/> #X obj 34 40 inlet;<br/> #X obj 34 95 outlet;<br/> #X obj 34 67 + 1;<br/> #X connect 0 0 2 0;<br/> #X connect 2 0 1 0;<br/> #X restore 90 124 pd inc;<br/> #X floatatom 90 99 5 0 0 0 - - -;<br/> #X floatatom 90 151 5 0 0 0 - - -;<br/> #X connect 0 0 2 0;<br/> #X connect 1 0 0 0;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>Naturally the restore element which invokes a subpatch is preceded with a canvas element and the subpatch elements. <br/> Objects within a subpatch are counted seperately from a parent frame (window).<strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r39"></a>restore</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Ends a canvas definition</td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X restore </strong> [x_pos] [y_pos] [type] [name]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window<br/> [type] - type of canvas, values are either "graph" or "pd"<br/> [name] - name of the subpatch, only used when the [type] attribute is set to "pd"</td> </tr> <tr> <td valign="top"><div align="right">Example:</div></td> <td class="code">#N canvas 0 0 450 300 graph2 0;<br/> #X coords 0 1 100 -1 200 140 1;<br/> #X restore 27 30 graph;</td> </tr> <tr> <td valign="top" width="85"><div align="right">Example:</div></td> <td class="code">#N canvas 0 0 452 302 subpatch 0;<br/> #X restore 64 69 pd subpatch;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>The restore element is used only in combination with canvas elements. There are two uses:<br/> In the first example it defines a graph, in this case a coords element is required.<br/> In the second example it defines a subpatch. In this case only the canvas attribute [name] and the restore attribute [name] should correlate.<strong><br/> </strong></p> </td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r3A"></a>symbolatom</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines an symbol box </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X symbolatom </strong> [x_pos] [y_pos] [width] [lower_limit] [upper_limit] [label_pos] [label] [receive] [send]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td><p>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window<br/> [width] - amount of digits/characters<br/>[lower_limit] - minimum value <br/> [upper_limit] - maximum value <br/> [label_pos] - label position relative to floatatom position. 0 = left, 1 = right, 2 = top, 3 = bottom <br/> [label] - label <br/> [receive] - receive symbol value <br/> [send] - send symbol value</p> </td> </tr> <tr> <td valign="top"><div align="right">Example:</div></td> <td class="code">#X symbolatom 36 37 10 0 0 0 - - -;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>When the value of [upper_limit] minus the value of [lower_limit] is less than one, PureData resets these values both to zero.<br/> Symbolatom and floatatom are the only elements that uses "-" characters to indicate that no value has been assigned to its attributes [label], [receive] and [send].<strong></strong><strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p> <p> </p></blockquote><table border="0" width="100%"> <tbody><tr bgcolor="#CCCCCC"> <td colspan="2"><a name="r3B"></a>text</td> </tr> <tr> <td valign="top"><div align="right">Description:</div></td> <td>Defines a comment </td> </tr> <tr> <td valign="top" width="85"><div align="right">Syntax:</div></td> <td class="code"><strong>#X text </strong> [x_pos] [y_pos] [comment]<strong>;\r\n</strong></td> </tr> <tr> <td valign="top" width="85"><div align="right">Parameters:</div></td> <td><p>[x_pos] - horizontal position within the window<br/> [y_pos] - vertical position within the window<br/> [comment] - custom string, spaces allowed<br/> </p></td> </tr> <tr> <td valign="top"><div align="right">Example:</div></td> <td class="code">#X text 28 25 comment;</td> </tr> <tr> <td valign="top"><div align="right">Remarks:</div></td> <td><p>ASCII return codes 13 and 10 are not stored, a semicolon character is preceded with the escape character backslash. <strong><br/> </strong></p></td> </tr></tbody></table><blockquote> <p><a href="https://puredata.info/docs/developer/PdFileFormat#6">back to reference index</a></p></blockquote><p> <br/> </p><hr noshade="" size="2" width="100%"/> <p>
<a href="http://validator.w3.org/check?uri=referer"><img alt="Valid HTML 4.01!" border="0" height="31" src="./PdFileFormat — Pd Community Site_files/valid-html401" width="88"/></a>
</p><p></p>
<p>
</p>
<p><a name="comments"><br/><b><span class="commentsheader">comments:</span></b></a></p>
<p><a class="visualNoPrint" name="msg20111008131358+0200@puredata.info"></a>
<img src="./PdFileFormat — Pd Community Site_files/discussionitem_icon.gif" style="border:none; margin:0"/><b>Editing?</b> --pduboue, <span class="link-external"><a href="http://puredata.info/docs/developer/PdFileFormat#msg20111008131358+0200@puredata.info">Sat, 08 Oct 2011 13:13:58 +0200</a></span> <span class="link-external"><a class="visualNoPrint" href="http://puredata.info/docs/developer/PdFileFormat?subject=Editing%3F&amp;in_reply_to=%3C20111008131358%2B0200%40puredata.info%3E#bottom">reply</a></span><br/>
I tried to fix some typos but the editor identified the markup as MoinMoin (but the source was pure HTML) so the preview looked horrible and gave up. If anybody knows whether that's OK or how to fix it, let me know.</p>
<a name="bottom"></a>
<br/>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<div class="visualClear"><!-- --></div>
<hr class="netscape4"/>
<div id="portal-footer">
<p>
<a href="http://puredata.info/">puredata.info</a> is hosted and serviced by <a href="http://iem.at/">IEM</a> as a contribution to the Pd-community using
<span>
<a href="http://plone.org/">Plone</a>
</span>, see <a href="https://puredata.info/docs/developer/docs/sitedocs/impressum">Impressum</a>.
</p>
</div>
<div id="portal-colophon">
<a href="http://iem.at/">
<img alt="Powered by IEM" height="15" src="./PdFileFormat — Pd Community Site_files/iem_powered.gif" title="This site is hosted by the Institute of Electronic Music and Acoustics (IEM). Click for more information" width="80"/>
</a>
<a href="http://plone.org/">
<img alt="Powered by Plone" height="15" src="./PdFileFormat — Pd Community Site_files/plone_powered.gif" title="This Plone site was built using the Plone Content Management System. Click for more information." width="80"/>
</a>
<a href="http://www.section508.gov/">
<img alt="Section 508" height="15" src="./PdFileFormat — Pd Community Site_files/colophon_sec508.gif" title="This Plone site conforms to the US Government Section 508 Accessibility Guidelines." width="80"/>
</a>
<a href="http://www.w3.org/WAI/WCAG1AA-Conformance" title="Explanation of WCAG Conformance">
<img alt="WCAG" height="15" src="./PdFileFormat — Pd Community Site_files/colophon_wai-aa.gif" title="This Plone site conforms to the W3C-WAI Web Content Accessibility Guidelines." width="80"/>
</a>
<a href="http://validator.w3.org/check/referer">
<img alt="Valid XHTML" height="15" src="./PdFileFormat — Pd Community Site_files/colophon_xhtml.png" title="This Plone site is valid XHTML." width="80"/>
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img alt="Valid CSS" height="15" src="./PdFileFormat — Pd Community Site_files/colophon_css.png" title="This Plone site was built with valid CSS." width="80"/>
</a>
<a href="http://plone.org/browsersupport">
<img alt="Usable in any browser" height="15" src="./PdFileFormat — Pd Community Site_files/colophon_anybrowser.png" title="This Plone site is usable in any web browser." width="80"/>
</a>
</div>
</div>
</body></html>