Creating Patches
This guide covers the complete workflow for creating patches in plugdata, from placing your first object to building complex abstractions.Creating Your First Patch
Create a New Patch
Enter Edit Mode
Add Your First Object
osc~ 440 object.Add Audio Output
dac~ object to send audio to your output. Type Cmd/Ctrl+1 and enter dac~.Make a Connection
osc~ object to the inlet (top) of the dac~ object to create a connection.Enable Audio
Test Your Patch
Creating Objects
Object Types
Plugdata supports several types of objects:- Objects
- Messages
- Number Boxes
- GUI Objects
- Atoms
- Comments
osc~ 440- Oscillator at 440Hz+- Additionmetro 500- Metronome at 500msprint- Print to console
Creating Objects with Arguments
Many objects accept creation arguments that configure their behavior:"hello world"Object Editing
To edit an object’s text:- Double-click the object in edit mode
- Modify the text
- Press Enter to confirm or Escape to cancel
- Hold Shift+Enter to add line breaks in messages and comments
Making Connections
Connection Basics
Connections carry data between objects:Identify Inlets and Outlets
- Inlets appear at the top of objects (receive data)
- Outlets appear at the bottom of objects (send data)
- Hover over iolets to see their index and type
Create a Connection
Multiple Connections
Delete Connections
- Click a connection to select it (it turns orange)
- Press Delete or Backspace
- Or select an object and press Cmd/Ctrl+Shift+K to remove all its connections
Smart Connection Features
Auto-connect: When enabled in settings, new objects automatically connect to selected objects. Quick Connect: Select two or more objects and press Cmd/Ctrl+K to automatically create connections. Connection Styling: Select a connection and press Cmd/Ctrl+L to cycle through:- Straight connections
- Curved connections
- Segmented connections (with pathfinding)
Signal vs Message Connections
Plugdata uses different visual styles for different data types:- Thin lines - Control messages (numbers, symbols, lists)
- Thick lines - Audio signals (denoted by ~ in object names)
Organizing Your Patch
Layout Best Practices
Signal Flow
Signal Flow
- Input objects at the top
- Processing in the middle
- Output objects at the bottom
Alignment and Spacing
Alignment and Spacing
- Enable with Cmd/Ctrl+G
- Configure grid size in statusbar settings
- Select objects and use Cmd/Ctrl+Shift+R to tidy automatically
Grouping and Comments
Grouping and Comments
- Use comments (Cmd/Ctrl+5) to label sections
- Group related objects close together
- Leave space between functional groups
- Add visual separators with long comment boxes
Color Coding
Color Coding
- Select objects
- Open Inspector panel
- Set background and outline colors
- Use consistent color schemes across patches
Selection and Arrangement
Selecting Multiple Objects:- Click and drag to create a selection box
- Cmd/Ctrl+Click to add/remove from selection
- Cmd/Ctrl+A to select all
- Drag selected objects
- Use arrow keys for 1-pixel nudges
- Hold Shift while using arrow keys for larger steps
- Tidy (Cmd/Ctrl+Shift+R) - Auto-arrange selection
- Grid snapping for manual alignment
- Selection handles for precise positioning
Working with Subpatches
Creating Subpatches
Subpatches help organize complex patches into modular components:Create a Subpatch Object
pd mysubpatchOpen the Subpatch
Add Inlets and Outlets
- Create
inletobjects for inputs - Create
outletobjects for outputs - For audio: use
inlet~andoutlet~ - Number corresponds to the order on the parent object
Return to Parent
Subpatch Example
Parent patch:pd synth_voice:
Creating Abstractions
Abstractions are reusable patches saved as separate files:Create a New Patch
Add Inlets and Outlets
inlet, outlet, inlet~, outlet~ objects to define the interfaceSave with Descriptive Name
reverb-unit.pd or envelope-gen.pdUse in Other Patches
reverb-unitAbstraction Arguments
Abstractions can receive creation arguments:$1,$2,$3, etc. - Numbered creation arguments$0- Unique ID for each instance (useful for local send/receive)
Using Send and Receive
Wireless Connections
Send and receive objects create “wireless” connections, reducing visual clutter:Local Send/Receive
Use$0 for instance-specific sends in abstractions:
Working with Arrays and Tables
Creating Arrays
Arrays store data like waveforms, samples, or control envelopes:Create Array
array define myarrayConfigure Size
array define myarray 1024Visualize Data
Access Data
tabread myarray, tabwrite myarray, soundfiler to read/writeArray Operations
Graph-on-Parent
Graph-on-Parent (GOP) creates custom GUI interfaces:Create Subpatch
Enable Graph-on-Parent
Set GOP Area
Add GUI Objects
Patch Organization Strategies
Modular Design
- Break down complex patches into logical subpatches
- Create reusable abstractions for common tasks
- Use send/receive for global routing
- Document with comments throughout
File Organization
Version Control
- Save incremental versions during development
- Use descriptive filenames:
synth-v1.pd,synth-v2.pd - Export final versions to clean folders
- Document changes in comments or separate text files
Next Steps
Now that you understand patch creation:- Using Objects - Learn about specific object types and techniques
- Automation Parameters - Set up DAW automation
- Audio Routing - Master audio I/O and multichannel routing
