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
Enter Edit Mode
Ensure you’re in edit mode (unlocked). The Edit button in the toolbar should be highlighted. Press Cmd/Ctrl+E to toggle between edit and run mode.
Add Your First Object
Press Cmd/Ctrl+1 or click on the canvas and type to create an object. Try creating an
osc~ 440 object.Make a Connection
Click and drag from the outlet (bottom) of the
osc~ object to the inlet (top) of the dac~ object to create a connection.Enable Audio
Press Cmd/Ctrl+. or click the power button in the statusbar to enable DSP (Digital Signal Processing).
Creating Objects
Object Types
Plugdata supports several types of objects:- Objects
- Messages
- Number Boxes
- GUI Objects
- Atoms
- Comments
Standard Pure Data objects that process messages and signals.Create: Cmd/Ctrl+1 or right-click > ObjectExamples:
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:Arguments are space-separated. Use quotes for symbols containing spaces:
"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
Click and drag from an outlet to an inlet. The connection will highlight as you drag.
Multiple Connections
One outlet can connect to multiple inlets. Data is sent to all connected inlets.
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
Organize patches with signal flow from top to bottom or left to right:
- Input objects at the top
- Processing in the middle
- Output objects at the bottom
Alignment and Spacing
Alignment and Spacing
Use grid snapping for consistent alignment:
- 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
Customize object colors for organization:
- 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: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
Subpatch Example
Parent patch:pd synth_voice:
Creating Abstractions
Abstractions are reusable patches saved as separate files:Save with Descriptive Name
Save the file with a meaningful name like
reverb-unit.pd or envelope-gen.pdAbstraction Arguments
Abstractions can receive creation arguments:$1,$2,$3, etc. - Numbered creation arguments$0- Unique ID for each instance (useful for local send/receive)
Store abstractions in your search path or the same folder as your main patch to ensure plugdata can find them.
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:Array Operations
Graph-on-Parent
Graph-on-Parent (GOP) creates custom GUI interfaces:Enable Graph-on-Parent
Right-click the canvas inside the subpatch > Properties > Check “Graph on Parent”
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
