Pure Data

This is a collection of Pure Data patches listed by topic. (Copyrights and references are included.)

Installation

The whole Pure Data Tutorial can be downloaded as an archive. After unpacking it, simply start the document index.htm in your browser. (To print this document click here.)
NOTE: After installing Pure Data right-click the app to view the contents using "Show Package Contents". Navigate to the "Resources" folder and delete the folder "po". This makes the application using English as the default language independently on you system language.
Download a patch before open it in Pure Data. If you are working locally you can configure your browser (Preferences -> Data Types) to open patches automatically in Pure Data by clicking them. Alternatively (Mac OS) you can drag any link to a Pure Data file (.pd) directly on the program icon in your Dock.

Basics

edit_mode.pd
connections.pd
hello_world.pd
getting_help.pd
bang_means_Do_it.pd
event_driven_processing.pd
turning_on_and_off.pd
right_to_left_order.pd
hot_and_cold_inlets.pd
calculation_order.pd
trigger_conversion.pd
depth_first.pd
typing_conventions.pd
state_saving.pd
pddplink-object.pd (PD Extended)
comment-object.pd (PD Extended)

Exercise

Elements

basic_elements.pd
atoms.pd

Objects

objects.pd (list-of-objects.txt / pdobjects.pdf)
storage_objects.pd
creation_arguments.pd
init_to_0.pd

Messages

messages.pd
building_messages.pd
multiple_messages.pd
ordering_messages.pd
atomic_messages.pd

Numbers

numbers.pd
floats_and_ints.pd
number_limitations.pd
storing_a_number_globally.pd

Symbols

symbols.pd
symbol_construction.pd
symbol_conversion.pd

Graphical Objects

builtin_gui_objects.pd
properties.pd
sliders.pd
extended_gui_objects.pd (PD Extended)

Midi

Before working with MIDI Pure Data has to be set up for it:

MIDI is a protocol of control data that can communicate (play) with keyboard based synthesizers. The object [makenote] creates midi notes, velocities and durations to output via [noteout]:
midi_notes.pd
Several other Parameters of Midi Instruments can be controlled by midi controllers. This controllers are accessed with the objects [ctlin] and [ctlout]:
midi_ctl.pd
Program changes (sound the notes are played with) are controlled with the obejcts [pgmin] and [pgmout]:
midi-pgm.pd

Exercise

Timing

using_metro.pd
delay_bang.pd
metronome.pd
measure_time.pd
delay_number_streams.pd

Counting

counting.pd
counting_updown.pd
accumulation.pd
metro_looping.pd
loop_until.pd
ramping_up_and_down.pd

Exercise

Mathematics

arithmetic_objects.pd
comparing_numbers.pd
min_and_max.pd
mod_and_div.pd
math_expr.pd
clip_numbers.pd
random_numbers.pd

Conditionals

selecting_events.pd
part_number_streams.pd
routing_messages.pd
doors.pd

Exercise

Lists

Lists can be build in different ways:
building_lists.pd
unpack_lists.pd
The [list append] (short [list]) object ist used to build and concatenate lists:
append_lists.pd
list_length.pd
[list split] splits a list in two:
splitting_lists.pd
[list-len] is an abstraction to get the list length (number of elements in a list):
list_conversion.pd

Cordless Connections

chordless_value_setting.pd
send_and_receive.pd
GUI_send_and_receive.pd

Exercise

Subpatches

subpatches.pd
outlet_order.pd

Abstractions

abstr_sub.pd, (add.pd)
abstractions.pd, (sec2sr.pd)
abstractions_with_arguments.pd, (dollarsign.pd), (scaler.pd)
local_sends_and_receive.pd, (local_send.pd)
dollarnull_variable.pd, (dollarnull.pd)

Exercise

GUI

GOP_abstraction.pd, (chn.pd)
labeling.pd

Exercise

Audio

digital_audio.pd
dsp_processing.pd
in-output.pd
cords.pd
audio_math.pd
control_audio_conversion.pd
acoustic_conversions.pd
receive_multiple_sends.pd
microphone_input.pd (PD Extended)

Generators

waveforms.pd
triangle.pd
noises.pd (PD Extended)

Envelopes

ramping_up_and_down.pd
envelope_with_line.pd
control_line_envelopes.pd
curved_ramps.pd
env_types.pd (env_formulas.pd)
phasor2env.pd

Exercise

Arrays & Tables

arrays-graphs-tables.pd
working_with_arrays.pd
read_write_array.pd
draw_sound.pd

Exercise

Modulation Synthesis

Amplitude Modulation

classical_am_modulation.pd
ring_modulation.pd
complex_serial_am_synthesis.pd
ring_modulated_voice.pd

Exercise

Frequency Modulation

frequency_modulation.pd
complex-fm.pd
fm-2carriers.pd

Exercise

Subtractive Synthesis

filters.pd
highpass_filter.pd 4pol_hip.pd
lowpass_filter.pd 4pol_lop.pd
bandpass_filter.pd 4pol_bp.pd
bandpass-construction.pd
voltage_controlled_filter.pd
noise-synthesis.pd
formant_synthesis.pd (PD Extended)

Exercise

Additive Synthesis

overtones_harmonics.pd
sinesum.pd
building_waveforms_with_sines.pd
random-timbre.pd
risset_bell.pd (PD Extended)

Exercise

Waveshaping

waveshaping.pd (waveshaper~.pd)

Sequencing

Sequencing messages from a text file with the [qlist] object either manually or automatically (time tagged in msecs): qlist_sequencing.pd, (step.txt)

envelope_qlist.pd, (werte.txt)

Control different instances of abstractions with a [qlist] by naming the [receive] objects with variables:
qlist_abstractions.pd, (qlist2.txt)

Recording and playing sequences with [textfile]:
textfile_sequencing.pd, (lists.txt)

Exercise

Stochastic

Pathnames

making-filenames.pd list-folder.pd (PD Extended)

Recording

recording.pd
timed_recording.pd
read_soundfile_from_hd.pd

Exercise

Sampling

playing_samples_1.pd
playing_samples_2.pd

Exercise

timed-buffer-rec.pd
playing_samples_3.pd

Exercise

Granular Synthesis

envelope.pd
vline_sampleplay.pd
single-grain-stream1.pd (grain-stream1.pd)
single-grain-stream2.pd (grain-stream2.pd)
3grainstreams.pd (grain-stream.pd)

Exercise

Delays

delay_with_feedback.pd
roomecho.pd
interpolating_delay.pd
control-blocksize.pd (pulse-train)

Exercise

Spatialisation

panning.pd
equal_power_pan.pd
basic_reverb.pd
freeverb~-help.pd (PD Extended)
graphics-quad.pd (PD Extended)
4ch-qlist-grid.pd (PD Extended)

Exercise

Amplitude Detection

attack_detection.pd
toggle_with_bonk.pd
envelope_follower.pd

Exercise

Pitchtracking

pitch_tracking.pd
voice_am.pd
voice_fm.pd
sigmund2additive.pd
sigmund2subtractive.pd

Exercise

Pitch Shifting

An explanation is found here: http://www.katjaas.nl/pitchshift/pitchshift.html
The Springer Tempophon (png)
tempophon.pd
rotating_tape_heads.pd
ssb_modulation.pd

Exercise 1

Exercise 2

Fourier Analysis and Transformation

FFT & PD by Marius Schebella

This next patches are taken from: http://www.pd-tutorial.com/english/ch03s08.html
filterbank_analysis.pd
fft_principles.pd
fft_windowed.pd
fft_subpatch.pd
fft_filter.pd

Interface Devices

System

random_play_folder.pd (PD Extended)
shell_interaction.pd (PD Extended)

Network

network_ports.pd
tcp_and_udp.pd
netsend_netreceive.pd
identification_sender.pd and identification_receiver.pd
(To easy check your ip address use a program like BwanaDik.)
chat-client.pd
chat-server.pd
netserver_and_netclient.pd (PD Extended)

Patch Design

Patch_Design.txt
cpu-optimisation.txt

main.pd with:

To save a patch as an application open the mainpatch in PD-Extended and select "File -> Make app from folder ...". Choose a name and save it. (This may take some time.)