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 8, so the system requirements are the same as those for Max 8.


Please note that Nodewebba is 'beta' software. It does not offer the refined user interface that we expect from professional software, and the design is limited by the particular constraints of Max. It also does not come with much user documentation besides the videos below and the 'hot tips' help that appears if you point at user interface objects. It also, no doubt, has bugs.

Current version = v0.101 (Sep 16, 2020)
Note v.0.1 was a MAJOR change that will break presets from older versions.
v.0.101 adds automatic generation of backup files when saving presets.

New features and fixes are summarised here.

  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.

Crucial note for Macintosh users: Since this app is not registered as being from an official Apple developer, Mac OS will not allow you to open it directly. See this Apple Techote on how to succesfully open an app from an unidentified developer. In short, right-click on the application and choose open. In the dialog box that appears, authorize running the application. On subsequent uses you should be able to open it normally. If you have an Mac OS version earlier than Sierra, see here for an easier way to configure your preferences.

Older versions of Nodewebba are available here.

Support/Discussion List

Your bug reports and thoughts are welcome.

Let me know what you create with Nodewebba!

Nodewebba has a Google-groups discussion list. Please feel free to join and post questions, ideas, bug reports, and links to interesting things made with Nodewebba. Subscribe by going to the Nodewebba-Discuss page and following the instructions there.


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.



Works Made with the Help of Nodewebba

Linda Walsh, Tidal Flow

Bret Battey

(email me to add your work here)


When I try to start the application on my Macintosh, it tells me the application is corrupted and should be trashed.

To keep users extra safe, by default Mac OS only allows particular applications to launch. It appears that Max-built applications do not yet have the ability to be 'signed' properly so Mac OS will trust them. So your System Preferences must be set to allow downloaded applications to run. See the note above under Installation.

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.