Your First Patch
This tutorial will guide you through creating your first working patch in plugdata. You’ll build a simple sine wave oscillator with volume control, introducing core concepts of visual patching along the way.This guide assumes you have plugdata installed. If not, start with the Installation Guide.
Launching plugdata
Open plugdata
Standalone mode:
- Launch plugdata from your Applications folder, Start Menu, or desktop shortcut
- You’ll see the main interface with a blank canvas and sidebar
- Open your DAW
- Create a new instrument or audio track
- Load “plugdata” (instrument) or “plugdata-fx” (effect) from your plugin list
- The plugdata editor window will open
Understanding the interface
The plugdata interface consists of several key areas:Main Canvas (center): Where you create your patch by placing and connecting objectsSidebar (left or right): Contains panels for:
- Object browser/palette
- Inspector (object properties)
- Console (messages and errors)
- Documentation browser
- Search panel
Creating Objects
Enter Edit Mode
Before you can create objects, ensure you’re in Edit Mode:
- Look for the Lock/Edit toggle in the toolbar (padlock icon)
- Click it so the padlock is unlocked (Edit Mode)
- The canvas background may change slightly to indicate edit mode
Edit Mode: Create, delete, and move objects and connections
Run Mode (locked): Interact with GUI objects like sliders and buttons
Run Mode (locked): Interact with GUI objects like sliders and buttons
Create an oscillator object
In Pure Data and plugdata, objects are created by typing their names:
- Double-click on the blank canvas, or press
Nkey - A text entry box appears
- Type:
osc~ 440 - Press Enter or click outside the box
osc~: Object name (the~indicates it processes audio signals)440: Creation argument (the frequency in Hz)
Create the audio output
Now create the object that sends audio to your speakers/headphones:
- Double-click below the
osc~object - Type:
dac~ - Press Enter
dac~ object is the “Digital to Analog Converter” - it outputs audio to your audio interface.Connect the objects
Now connect the oscillator to the output:
- Hover over the small rectangle at the bottom of the
osc~object (the outlet) - Click and drag to the rectangle at the top of the
dac~object (the inlet) - Release to create a connection (patch cord)
- Outlets (bottom of objects) send data
- Inlets (top of objects) receive data
- Connections flow downward from outlet to inlet
- Thick connections carry audio signals (ending in
~) - Thin connections carry control messages (numbers, symbols, etc.)
Starting Audio
Turn on DSP
DSP (Digital Signal Processing) must be enabled to hear audio:
- Find the DSP toggle in the toolbar (speaker icon or “DSP” button)
- Click it to turn On (the button should be highlighted)
- Alternatively, use the keyboard shortcut (typically
Cmd/Ctrl + .)
Hear your first sound
With DSP enabled, you should now hear a continuous 440 Hz sine wave tone!If you don’t hear anything:
- Check your system audio output is not muted
- Verify DSP is enabled (button highlighted in toolbar)
- Ensure connections are correct (thick line from
osc~todac~) - In standalone mode, check Audio Settings (menu bar) to verify correct output device
Adding Volume Control
A continuous loud tone isn’t very useful. Let’s add volume control:Create a multiplier
Insert a volume control between the oscillator and output:
- Create a new object between
osc~anddac~ - Type:
*~ 0.5 - Press Enter
*~ object multiplies the audio signal. The argument 0.5 reduces the volume to 50%.Reconnect the patch
Update your connections:
- Delete the direct connection from
osc~todac~(click it and press Delete) - Connect
osc~outlet →*~inlet - Connect
*~outlet →dac~inlet
osc~ → *~ → dac~Add a slider for interactive control
Let’s add a GUI slider to control volume in real-time:
- Create a new object above the
*~object - Type:
hsl(horizontal slider) - Press Enter
Configure the slider range
The slider needs to output values between 0.0 (silent) and 1.0 (full volume):
- Right-click the slider
- Select Properties from the menu
- Set the following values:
- Minimum: 0
- Maximum: 1
- Width: 128 (or your preference)
- Height: 15 (or your preference)
- Click OK or close the properties panel
Connect the slider
Connect the slider to control the multiplier:
- Connect the slider’s outlet to the right inlet of
*~
*~ controls the multiplication factor (volume).Test the volume control
- Switch to Run Mode (click the padlock to lock it)
- Turn on DSP
- Move the slider left and right
- In Run Mode (locked), GUI objects are interactive
- In Edit Mode (unlocked), you can move and edit objects
- Toggle between them frequently as you build and test patches
Adding a Frequency Control
Let’s add another slider to change the pitch:Create a frequency slider
- Create another horizontal slider above the
osc~object - Right-click it and open Properties
- Configure:
- Minimum: 100 (Hz)
- Maximum: 1000 (Hz)
- Initial value: 440
- Click OK
Connect frequency control
Connect the frequency slider’s outlet to the left inlet of the
osc~ object.The left inlet of osc~ controls the frequency.Adding Labels and Comments
Add text labels
Make your patch more readable with comments:
- Switch to Edit Mode
- Create a new object
- Type:
comment Frequency Control - Press Enter
Saving Your Patch
Save the patch file
- Go to File → Save (or
Cmd/Ctrl + S) - Choose a location and filename (e.g., “my-first-synth.pd”)
- Click Save
.pd files (Pure Data patch format).Understanding Message Flow
Here’s what happens when you move a slider:- Hot inlets (leftmost): Trigger computation and output
- Cold inlets (others): Store values but don’t trigger output
- Audio signals (
~objects): Process at audio rate (e.g., 44,100 samples/second) - Control messages: Process on-demand when triggered
Expanding Your Patch
Try these enhancements to learn more:Add a different waveform
Add a different waveform
Replace
osc~ with:phasor~- sawtooth wave (brighter sound)square~- square wave (hollow sound)noise~- white noise
Make it stereo
Make it stereo
Connect your audio to both channels of
dac~:- Connect your signal to both the left and right inlets of
dac~ - Or use
dac~ 1 2and connect to separate inlets
Add a number box for precise control
Add a number box for precise control
- Create object:
numberorfloatatom - Connect it parallel to a slider
- It displays the exact value and allows precise typing
Add an envelope (fade in/out)
Add an envelope (fade in/out)
- Create:
vsl(vertical slider) for envelope - Create:
line~to smooth value changes - Connect: vsl → line~ → right inlet of another
*~ - This creates smooth fades instead of sudden volume changes
Exploring Objects
Open the object browser
Discover more objects using the built-in browser:
- Open the sidebar (if hidden)
- Click the Palette or Browser tab
- Browse categories:
- Audio (oscillators, filters, effects)
- Control (math, logic, sequencing)
- GUI (sliders, buttons, toggles)
- ELSE (extensive collection from the ELSE library)
- Cyclone (Max/MSP compatible objects)
View object documentation
To learn what any object does:
- Right-click an object
- Select Help from the menu
- A help patch opens showing:
- What the object does
- Inlet/outlet descriptions
- Usage examples
- Related objects
Essential Objects to Learn
Here are fundamental objects to explore next:Oscillators and Generators
osc~- sine wave oscillatorphasor~- sawtooth/ramp oscillatornoise~- white noise generatorsaw~- sawtooth oscillator (ELSE)square~- square wave oscillator (ELSE)
Math and Control
+,-,*,/- basic math operations+~,-~,*~,/~- audio-rate mathrandom- random integer generatormetro- metronome (triggers at regular intervals)line~- smooth value changes
Filters and Effects
lop~- lowpass filterhip~- highpass filtervcf~- voltage-controlled filterdelwrite~/delread~- delay effectsrev~- reverb (ELSE)
GUI Objects
hsl/vsl- horizontal/vertical slidertgl- toggle buttonbng- bang button (triggers)number- number boxvradio/hradio- radio buttons
Audio I/O
dac~- audio outputadc~- audio inputsoundfiler- load/save audio filesreadsf~- play audio files
Next Steps
Now that you’ve created your first patch, continue learning:- Explore example patches: Look for example patches in plugdata’s installation folder or community resources
- Read the object reference: Browse the documentation browser to learn new objects
- Watch tutorials: The plugdata Discord has shared patches and tutorials
- Build something: Try creating:
- A simple drum machine using
metroandbng - A low-frequency oscillator (LFO) to modulate pitch or volume
- A filter sweep using
vcf~and a slider - A delay effect with feedback
- A simple drum machine using
Common Shortcuts
Speed up your workflow with these keyboard shortcuts:| Shortcut | Action |
|---|---|
N or 1 | Create new object |
Cmd/Ctrl + E | Toggle Edit/Run mode |
Cmd/Ctrl + . | Toggle DSP on/off |
Cmd/Ctrl + D | Duplicate selection |
Cmd/Ctrl + A | Select all |
Delete / Backspace | Delete selection |
Cmd/Ctrl + Z | Undo |
Cmd/Ctrl + Shift + Z | Redo |
Cmd/Ctrl + +/- | Zoom in/out |
Right-click | Object menu (properties, help, etc.) |
Getting Help
If you get stuck:- Discord: Join the plugdata community at https://discord.gg/eT2RxdF9Nq
- Help patches: Right-click any object → Help
- Pure Data documentation: Much Pure Data documentation applies to plugdata
- GitHub Issues: Report bugs or request features
