Skip to content
This repository has been archived by the owner on Nov 18, 2023. It is now read-only.


Folders and files

Last commit message
Last commit date

Latest commit


Repository files navigation

Due to Github's determination to be the "world’s leading AI-powered developer platform" I will move my projects to Codeberg

Abstractions for Puredata

This is a collection of abstractions that I have made for Puredata. I use the Pd convention for adding a trailing tilde (~) to all objects, that output or process audio. A lot of objects have accompaning help patches.

For all abstractions to load without any error you need the following libraries, available via deken:

  • iemguts
  • cyclone
  • zexy

Effects and Mixing (fx)

[bitcrusher~]: simple bitcrusher effect.

[distortion~]: simple distortion effect.

[normalize~]: normalizes the sound and removes offset.

[pan~]: equal volume pan for mono.

[pitchshift~], [pitchshift2~]: simple pitchshifter, each with its own residual effects.

[vol-env~]: 16 step volume envelope with bypass.

[waveshaper~]: render incoming sound to base sounds.

Glue objects (glue)

[bangonce]: outputs only one bang, if the inlet receives a series of 1s. Useful for filtering MIDI data or data coming a comport object like an arduino.

[between]: outputs a random float between two pre-defined values

[bpmtoms]: converts beats per minute to milliseconds for each beat, inverse of [mstobpm].

[integral]: integrates float values.

[mstobpm]: converts milliseconds for a beat to beats per minute, inverse of [bpmtoms].

[mstofreq]: converts milliseconds to a frequency.

[note-vel-filter]: filters a stream of MIDI data to only capture MIDI on, off and velocity.

[rec_play_switch]: two switches for starting recording and playing loops for [note-vel-looper] and [sample-looper~].

[s2f]: converts symbol atoms to float atoms.

[shift-router]: routes input to one of six outlets with another input for switching the outlets, useful for usage with push-buttons on an arduino etc.

[switch-bang]: outputs bang alternatively on two outlets when receiving a bang.

[switch-matrix]: routes inlets to outlets. Rows correspond to outlets, columns to inlets, so the toggle in row 1 column 2 routes the input from inlet 2 to outlet 1, e.g. useful for toggling synchronization of [sample-looper~] instances. Can be initialized with the number of inlets and outlets with up to 15, defaults to 4.

[switch-spigot]: outputs 1 and 0 alternatively on the two outlets, useful for switching two spigot objects.

[symbollen]: gets the length of a symbol atom.

[timer-to-freq]: measures the time between a bang on the left side and the right side and converts the timespan to frequency.

[trigger-filter]: filters a stream of 0s and 1s and only outputs a value when a change is occuring.

[unwrap]: wraps around values at specified lower and upper bound, e.g. useful for rotation data.

Looper objects (loopers)

[breakbeat~]: loads a stereo sample of 8 beats length, slices it and plays it back as a breakbeat with adjustable playback speed and pitch.

[live-sampler~]: records a sample and play it back as loops with MIDI notes. Pitch of recorded loop is set to note 60, contains ADSR envelope, modulation of playback pitch.

[live-sampler-box~]: a combination of [live-sampler~] and [sample-looper-box]

[note-vel-looper], [note-vel-looper-box]: records and plays back MIDI loops with adjustable start and stop, can be synchronized with other instances of itself and [sample-looper~] instances.

[sample-looper~], [sample-looper-box~]: records and plays back audio loops with adjustable start, stop, playback speed and pitch, can be synchronized with other instances of itself and [note-vel-looper] instances.

Sound synthesis (synth)

[pulsewidth~]: rectangle oscillator with pulsewidth modulation.

[triangle~]: Triangle wave oscillator.


Some abstractions for Puredata: Simple loopers, effects and helpers.








No releases published


No packages published