Overview
Cyclone was created to provide Max/MSP compatibility in Pure Data, allowing patches to be ported with minimal changes. While very useful for compatibility, ELSE library objects are generally preferred when not specifically porting from Max.Key Features
- 220+ Max/MSP clones covering most common Max objects
- High compatibility with Max patch behavior
- Familiar names for Max users (gate, counter, cycle~, etc.)
- Well-tested implementations of Max algorithms
When choosing between Cyclone and ELSE versions of the same object, prefer ELSE unless you specifically need Max/MSP compatibility. ELSE objects typically have richer features and better documentation.
Object Categories
Cyclone objects mirror Max/MSP’s organization:Audio Generators
Oscillators, noise, and signal sources
Audio Processing
Filters, effects, and signal manipulation
Control Flow
Logic, routing, and message processing
Data Structures
Collections, tables, and data storage
Math & Logic
Mathematical operations and comparisons
MIDI
MIDI input, output, and processing
Common Objects
Here are frequently-used Cyclone objects organized by function:Audio Generators
Oscillators
Oscillators
cycle~ - Sinusoidal oscillator (Max equivalent of osc~)saw~ - Sawtooth oscillatortri~ - Triangle wave oscillatorrect~ - Rectangular/pulse wave oscillatorphasor~ - Ramp/sawtooth generator
Noise Generators
Noise Generators
rand~ - White noise generatorpink~ - Pink noise (1/f spectrum)
Audio Processing
Filters
Filters
svf~ - State variable filter (LP/HP/BP/BR modes)biquad~ - Biquad filterallpass~ - Allpass filtercomb~ - Comb filterreson~ - Resonant bandpass filter
Effects & Modulation
Effects & Modulation
delay~ - Simple delay linetapout~, tapin~ - Tap delay systemphaseshift~ - Phaser effect
Dynamics
Dynamics
average~ - Running averageslide~ - Exponential smoothersnapshot~ - Sample signal value
Control Flow
Routing & Selection
Routing & Selection
gate - Route messages to selected outletswitch - Route input to selected outletselector - Select from multiple inputssplit - Split numbers by rangeroute - Route messages by selector (enhanced vanilla route)
Logic & Comparison
Logic & Comparison
==, !=, >, <, >=, <= - Comparison operators&&, || - Logical AND/OR! - Logical NOTCounters & Timing
Counters & Timing
counter - Counting object with min/max/wrapmetro - Metronome (alternative to vanilla metro)delay - Delay messages (alternative to vanilla del)clocker - Multi-output metronome
Data Structures
Collections
Collections
coll - Named collection/dictionary storagetable - Data table with indexingbucket - Randomize lists and sequences
Lists & Arrays
Lists & Arrays
zl - List processing (multiple modes)join - Join multiple liststhresh - Threshold/debounce values
Math Operations
Basic Math
Basic Math
accum - Accumulator (add/multiply to value)scale - Scale/map values from one range to anotherclip - Constrain values to rangeabs - Absolute value
Trigonometry
Trigonometry
asin, acos, atan, atan2 - Inverse trig functionssinh, cosh, tanh - Hyperbolic functionsasinh, acosh, atanh - Inverse hyperbolic
Advanced Math
Advanced Math
pow - Exponentiationlog, ln - Logarithmssqrt - Square root
MIDI
MIDI I/O
MIDI I/O
midiparse - Parse MIDI messagesmidiformat - Format MIDI messages
Max/MSP Compatibility
Object Name Mapping
Most Cyclone objects use identical names to their Max counterparts:| Max Object | Cyclone/PD | Notes |
|---|---|---|
| cycle~ | cycle~ | Same name |
| counter | counter | Same name |
| coll | coll | Same name |
| gate | gate | Same name |
| osc~ | osc~ | Use vanilla [osc~] or ELSE [sine~] |
| scale | scale | Same name |
Porting Max Patches
When porting from Max/MSP:- Install Cyclone - Already included in plugdata
- Check object names - Most work identically
- Test behavior - Some edge cases may differ
- Replace incompatible objects - Not all Max objects are cloned
- Consider ELSE alternatives - Often better for new work
Known Differences
While Cyclone aims for high compatibility, some differences exist:- GUI objects - Max’s UI objects are not included
- Gen/Codebox - Not supported (use Heavy or pd-lua instead)
- MSP-specific features - Some Max-only features unavailable
- Timing precision - Minor differences in scheduling
Cyclone vs. ELSE
Many objects exist in both libraries. Here’s when to choose each:Choose Cyclone
✅ Use Cyclone when:- Porting patches from Max/MSP
- Need exact Max behavior compatibility
- Working with Max-specific workflows
- Collaborating with Max users
Choose ELSE
✅ Use ELSE when:- Starting a new patch from scratch
- Need bandlimited oscillators (better sound)
- Want comprehensive documentation
- Need GUI objects
- Working exclusively in plugdata
Example: Oscillators
Cyclone approach (Max compatible):Example: Filtering
Cyclone approach:Performance
- CPU Usage - Generally similar to vanilla/ELSE equivalents
- Memory - Minimal overhead
- Audio Quality - Non-bandlimited oscillators will alias
Documentation
Cyclone objects include help patches:- Right-click object → “Help”
- Press Cmd/Ctrl + H with object selected
- Help patches document:
- Inlets and outlets
- Arguments
- Basic usage examples
Cyclone help patches are often less detailed than ELSE. For comprehensive examples, consult Max/MSP documentation or ELSE alternatives.
Using Cyclone Objects
Explicit Library Prefix
If both ELSE and Cyclone have the same object name, specify which to use:Finding Cyclone Objects
In the object browser:- Open browser (
Cmd/Ctrl + Shift + N) - Filter by “cyclone” library
- Browse categories or search by name
Complete Object List
Cyclone includes 220+ objects. Here’s a sampling by category:Audio Objects (~)
Signal Generators & Processing
Signal Generators & Processing
accum, allpass~, asin~, average~, biquad~, cartopol~, clip~, comb~, cosx~, cycle~, delay~, delta~, deltaclip~, edge~, frameaccum~, framedelta~, index~, kink~, lookup~, minmax~, mstosamps~, onepole~, peek~, phasewrap~, phaseshift~, pink~, play~, poke~, poltocar~, pong~, pow~, rampsmooth~, rand~, record~, reson~, sah~, sampstoms~, saw~, scope~, snapshot~, spike~, svf~, tanh~, train~, trapezoid~, tri~, wave~, zerox~
Control Objects
Data & Logic
Data & Logic
accum, anal, asin, bangbang, bucket, capture, cartopol, clip, coll, counter, cycle, decide, drunk, flush, forward, fromsymbol, funbuff, funnel, gate, grab, histo, iter, match, maximum, mean, minimum, mousefilter, mousestate, next, offer, onebang, past, peak, poltocar, prob, pv, scale, seq, speedlim, spell, split, spray, sprintf, substitute, sustain, switch, table, thresh, timer, tosymbol, trough, universal, unjoin, urn, xbendin, xbendout, xnotein, xnoteout, Clip, Line, Scope, Table, Uzi, bucket, zl
External Resources
- Cyclone Repository - github.com/porres/pd-cyclone
- Max/MSP Documentation - Reference for object behavior
- Porting Guide - Community guides for Max→PD conversion
Related Documentation
- ELSE Library - Preferred alternative to Cyclone
- Vanilla Objects - Core Pure Data objects
- Objects Overview - All available libraries
