Overview
The ELSE library provides a modern, well-documented alternative to many vanilla and Cyclone objects, with enhanced functionality and consistent design philosophy.Key Features
- 570+ objects covering synthesis, audio processing, control, and utilities
- Bandlimited oscillators for alias-free audio generation
- Advanced filters including SVF, parametric EQ, and modeled filters
- Rich modulation with LFOs, envelopes, and sequencers
- MIDI utilities for note processing and generation
- Live coding tools for algorithmic composition
- Comprehensive help patches for every object
When both ELSE and Cyclone provide the same object name, ELSE is generally preferred for its richer features and better documentation.
Object Categories
ELSE objects are organized into functional categories:Signal Generators
Oscillators, noise generators, and signal sources
Filters & EQ
Lowpass, highpass, bandpass, shelving, and parametric filters
Effects
Reverb, delay, distortion, chorus, flangers, and modulation
Envelopes
ADSR, ASR, function generators, and envelope followers
Sequencers
Step sequencers, pattern generators, and arpeggiators
MIDI
Note processing, MIDI utilities, and controllers
Data & Math
Mathematical operations, logic, and data manipulation
Analysis
FFT, pitch detection, and signal analysis
Essential Objects
Here are the most commonly used ELSE objects by category:Signal Generators
Bandlimited Oscillators
Bandlimited Oscillators
bl.osc~ - Multi-waveform bandlimited oscillator
- Supports saw, square, triangle, impulse waveforms
- Adjustable number of partials
- Hard and soft sync modes
- MIDI frequency input option
Noise Generators
Noise Generators
brown~ - Brownian/brown noisepink~ - Pink noise (1/f spectrum)white~ - White noisegrey~ - Grey noise (psychoacoustically flat)crackle~ - Chaotic noise generatordust~, dust2~ - Random impulse generators
LFOs & Modulation
LFOs & Modulation
lfo - Multi-waveform control-rate LFOramp~ - Audio-rate ramp/envelope generatorimpulse~, impulse2~ - Precise impulse generatorssine~ - High-quality sine wave oscillator
Filters
Lowpass Filters
Lowpass Filters
lowpass~ - Simple lowpass with resonancelop~ - One-pole lowpasslp.filt~ - Multi-mode lowpass filtersvf~ - State variable filter (LP mode)
Highpass Filters
Highpass Filters
highpass~ - Simple highpass with resonancehip~ - One-pole highpasshp.filt~ - Multi-mode highpass filter
Bandpass & Multi-Mode
Bandpass & Multi-Mode
bandpass~ - Bandpass filterbandstop~ - Band-reject/notch filtersvf~ - State variable filter (LP/HP/BP/notch)slew~, slew2~ - Slew rate limiters
EQ & Tone Control
EQ & Tone Control
eq~ - Parametric equalizerhighshelf~, lowshelf~ - Shelving filtersresonbank~, resonbank2~ - Resonant filter banks
Envelopes
Envelope Generators
Envelope Generators
adsr~ - Classic ADSR envelope (audio rate)asr~ - ASR (Attack-Sustain-Release) envelopeenvgen~ - Breakpoint function generatorfunction~ - Multi-segment envelope editor
Envelope Followers
Envelope Followers
envelope~ - Audio envelope followeramp~ - Amplitude follower with smoothingrms~ - RMS level calculatorpeak~ - Peak level detector
Effects
Reverb
Reverb
rev1~, rev2~, rev3~ - Different reverb algorithmsfreerev~ - Freeverb implementationallpass.rev~ - Allpass-based reverb
Delay & Echo
Delay & Echo
del~ - Simple delay linefbdelay~ - Feedback delayping.pong~ - Stereo ping-pong delayshdelay~ - Short delay for effects
Modulation Effects
Modulation Effects
chorus~ - Chorus effectflanger~ - Flanger effectphaser~ - Phaser effectvibrato~ - Vibrato effect
Distortion & Dynamics
Distortion & Dynamics
drive~ - Overdrive/distortioncrush~ - Bit crusherdownsample~ - Sample rate reductioncompress~ - Compressorlimit~ - Limiter
Sequencers & Pattern Generators
Step Sequencers
Step Sequencers
sequencer - Multi-track step sequencersequencer~ - Audio-rate sequencerstepped - Value sequencer with GUI
Pattern Generation
Pattern Generation
euclid - Euclidean rhythm generatorlfnoise - Random stepped valuesrampnoise~ - Interpolated random valuesrandpulse~, randpulse2~ - Random pulse trains
MIDI & Note Processing
Note Utilities
Note Utilities
midi - MIDI note input/outputnoteout - Formatted MIDI note outputnotein - MIDI note inputpgmin, pgmout - Program changectlin, ctlout - Control change
Note Processing
Note Processing
suspedal - Sustain pedal handlervoices - Voice allocation managermono - Note to mono converterretune - MIDI note retuning
Conversion
Conversion
mtof - MIDI to frequencyftom - Frequency to MIDIscale - Scale/map values
Data & Math
Mathematical Operations
Mathematical Operations
add, sub, mul, div - Basic arithmeticadd~, sub~, mul~, div~ - Audio-rate mathceil, floor, round, trunc - Roundingsin, cos, tan - Trigonometrylog, exp, pow - Exponential functions
Logic & Comparison
Logic & Comparison
above, below - Threshold detectionchanged - Detect value changesgate - Route signals based on conditionpick - Select from multiple inputs
Random & Probability
Random & Probability
rand.f, rand.i - Random number generatorsrand.seq - Random sequence without repeatsrandpulse - Random pulse generatorprob - Probability gate
Analysis
Pitch & Frequency
Pitch & Frequency
pitch~ - Pitch detectionpitch.track~ - Pitch trackingzerocross~ - Zero-crossing detector
FFT & Spectral
FFT & Spectral
fft~, ifft~ - Fast Fourier Transformhann~ - Hanning windowbin.shift~ - Spectral bin shifter
Unique Features
Multi-Channel (MC) Support
Many ELSE objects support multi-channel audio with.mc~ versions:
- autofade.mc~ - Multi-channel crossfade
- mix.mc~ - Multi-channel mixer
- merge.mc~, unmerge.mc~ - Channel merging/splitting
GUI Objects
ELSE includes many objects with built-in GUI:- slider2d - 2D XY controller
- pad - Multi-point touch controller
- keyboard - Piano keyboard input
- pic - Image display
- graph - Function/array editor
Live Coding
Objects designed for live coding and algorithmic composition:- hot - Hot inlet (always triggers output)
- args - Access patch arguments
- dollsym - Dollar symbol expansion
- message - Formatted message box
Finding Objects
With 570+ objects, finding the right one is important:By Category in Object Browser
- Open object browser (
Cmd/Ctrl + Shift + N) - Filter by “ELSE” library
- Browse categories: Signal Generators, Filters, etc.
By Naming Convention
- ~ suffix - Signal-rate objects
- No suffix - Control-rate objects
- .mc~ suffix - Multi-channel versions
- bl.* - Bandlimited generators
Search by Function
Common search terms:- “filter” - All filter objects
- “osc” - Oscillators
- “env” - Envelopes
- “random” - Random/stochastic objects
- “midi” - MIDI-related objects
Documentation
Every ELSE object has comprehensive help patches:- Right-click object → “Help”
- Press Cmd/Ctrl + H with object selected
- Help patches include:
- Detailed description
- All inlet/outlet documentation
- Argument explanations
- Practical examples
- Related objects
ELSE vs. Vanilla vs. Cyclone
When to Use ELSE
✅ Choose ELSE when:- You need bandlimited oscillators
- You want built-in GUI controls
- You need advanced filters or effects
- Documentation and examples are important
- Working exclusively in plugdata
When to Use Vanilla
✅ Choose Vanilla when:- Maximum portability across PD distributions
- Minimal external dependencies
- Simple, well-understood behavior
When to Use Cyclone
✅ Choose Cyclone when:- Porting patches from Max/MSP
- Specific Max compatibility needed
- ELSE doesn’t have an equivalent
Performance Considerations
- Bandlimited oscillators (bl.*~) use more CPU than vanilla oscillators
- Complex effects (reverbs, FFT) can be CPU-intensive
- GUI objects consume slightly more resources
- Use block~ to optimize DSP performance
External Resources
- ELSE Repository - github.com/porres/pd-else
- Tutorial Patches - Included in ELSE distribution
- Video Tutorials - Available on Alexandre Torres Porres’ YouTube channel
Related Documentation
- Vanilla Objects - Core Pure Data objects
- Cyclone Library - Max/MSP compatibility
- Objects Overview - All available libraries
