bret battey • bat hat media



Generative music with networked iterative maps — made easy

Nodewebba brings some distinctly wild and crazy music algorithms out of the research lab and into the home and professional studio. The result is a generative music tool that can, without programming, produce surprisingly fresh and dynamic melodic and rhythmic patterns for use realtime performance or for studio-based productions.

An "iterative map" is basically a kind of mathematical feedback, where the output of a formula is fed back into its input. Nodewebba uses an iterative map originally designed as a random number generator —and mutates it into a bizarre music-pattern sequencer. It provides six of these pattern generators, or "nodes", and allows them to be mapped to MIDI outputs. There's a lot of creative fun to be had right there.

But the real magic of Nodewebba lies in arranging the nodes in networks, or 'webs', where the output of one node effects the settings of other nodes. Now we not only have multiple musical patterns running together, but they are also changing each other's behavior. A change in one part causes a change in another part. Kind of like… music. Plus we can have feedback within feedback, giving rise to delightfully unexpected outputs.

Ultimately, one doesn't control Nodewebba as much as to explore it to see what kinds of behaviors emerge. When magic arises, capture it as a preset. Or simply pipe the output to a sequencer and select from the best of your adventures.

Nodewebba can be controlled through its own interface. It also supports external MIDI control of its parameters from performance interfaces and sequencers. Plus, coders familiar with Max/MSP can address the variables inside Nodewebba to extend and alter its behaviors. It already includes some examples of such code 'intercessions' in the form of humanizing functions for velocity and rhythm.

The foundations of Nodewebba — the concept of Variable-Coupled Map Networks (VCMN) — can be found in my Organised Sound article "Musical Pattern Generation with Variable-Coupled Iterated Map Networks". The first piece in which I used these approaches wholesale in a composition was Clonal Colonies. The insights gained through the creation of that piece led to the conception of Nodewebba — a tool that provides the power of VCMN without programming.

System Requirements

Nodewebba was created using Max 7, so the system requirements are the same as those for Max 7.


Current version = 0.02 (May 18, 2014)

  • bug fix: tempo no longer reverts to 120 bpm when play is enabled; added user-control of humanisation functions; main play button now triggers reseed for nodes; minor GUI adjustments
  • as of March 25, 2015, the Mac build is in Max7 to fix non-appearance of UI in newer Mac OS versions
  1. Click on the appropriate button above to download the file
  2. Unzip the file, if necessary. (Usually just a matter of double-clicking the file.)
  3. Move the Nodewebba app (or whole folder, in the case of Windows) to your favored location.
  4. Double-click the Nodewebba application to run.

Older versions are available here.


Nodewebbas is Open Source. The full Max/MSP source is available at GitHub.


Max/MSP programmers can access the inputs and outputs of the main functions of Nodewebba through send/receive ports, including all of the parameters of nodes. Thus direct connection with patch cords is not necessary. Documentation of these variables can be found in the Coder's Reference — available in the Github source, in the Docs folder.





Where is the documentation?

Sorry. I'm sure that in some alternative universe parallel to this one, a different me is able to prioritise time towards writing documentation. But we are in this universe, so for now, documentation is provided only via the above tutorial videos. Plus you can hover your mouse over most of the interface objects to get popup hints.

How do I store presets?

Shift-click on a button in the preset object to store a preset. (The full preset instructions can be found by hovering your mouse over the preset object.)

How do I select/change sounds?

The three menus in the lower-right corner of each node box determines the MIDI output. The upper menu chooses the MIDI device. The lower left menu chooses the MIDI channel. The right menu sends a MIDI patch change command to the given device and channel. What sound a particular MIDI patch will actually be depends on the setup of the MIDI device you are sending the patch-change command to. Hence only patch numbers, not actual patch names, are listed on this menu.

How do I send the MIDI data to another program like a sequencer?

On Macintosh: Look in the MIDI device menu for a given node. If the program you want to send data to is there, select it. Otherwise, choose either "from Max 1" or "from Max 2". (Max is the name of the tool that Nodewebba was built with, and Max provides these two devices as a way to route MIDI information to and from Max.) In your target program, for the target track/instrument set it to receive MIDI data from "from Max 1" or "from Max 2", as appropriate.

On Windows: Windows doesn't provide inter-application MIDI communication out of the box, so you have to install a program that will provide it. I've succesfully used Tobias Erichsen's LoopMIDI. If you follow its instructions to set up a virtual MIDI port, then you should be able to choose that port as an output device in Nodewebba and as a MIDI source in your target sequencer.