The Modular Sequencer – A Pure Data Abstraction

First love is not forgotten. Pure Data was my first love in the programming world. Although several years have passed and I have been able to diversify my repertoire as a “coder” I am still looking for opportunities to use this incredible platform, sometimes for didactic purposes but also to develop tools and make music.

In my view, Pd seems ideal for creating small but reusable projects with a high degree of speed in terms of their iterations. Large projects that require maintenance and tend to reach users as a finished package are more feasible on other platforms, again in my personal way of thinking, the perfect counterexample may be Automatonism. Hence the idea of ​​creating an abstraction that can exist in different contexts.


A small musical sequencer had been in my abstractions folder for a long time, it even got tested in some concerts, but I felt the need to bring it to a point where other folks could use a stable, well-organized version with sufficient documentation. Then “The Modular Sequencer” was born.

This sequencer, on one hand, allows you to create rhythmic patterns easily, on the other it has the versatility to achieve complex rhythmic systems that lead to unexpected results. It’s essentially an 8-step drum machine, so what’s so modular about it?

The modularity resides in that, in addition to sending MIDI messages, we have different outlets to send bangs with individual steps of the sequencer or each time the sequence passes through an active step. This dynamics allows you to use these bangs to control other modular sequencers (or other objects within the patch), thus creating modular control networks.

Start or stop the sequencer, create a new pattern at random, send a message to change the tempo or number of steps, change the MIDI channel, all this is possible with its inlets. The communication between the sequencers within the Pd patch results in generative sequences, polytempic ensembles, melodic counterpoints or dense rhythmic textures.

An interesting use case for this abstraction within the clone object. We use clone when we design a polyphonic synthesizer or a granular instrument, since it allows us to generate an arbitrary number of instances of a subpatch and thus scale its functionality. If we use our abstraction within the clone object we could generate as many rhythmic sequences as we wish. There are advanced options for this object but even simple send and receive achieve interesting results.

Check out the Github repo for future updates or get involved and improve this humble project:

Leave a Comment

Your email address will not be published. Required fields are marked *