Algorithmic Arts' ArtWonk is an algorithmic-composition program featuring real-time MIDI playback with animated graphics. The program provides a clear,

Algorithmic Arts' ArtWonk is an algorithmic-composition program featuring real-time MIDI playback with animated graphics. The program provides a clear, logical work environment for arranging its vast collection of Modules, which can be connected and controlled in numerous ways. ArtWonk is a powerful, flexible, and easy-to-use program for creatively exploring the fertile relationships between music, visual art, mathematics, and nature.

Algorithmic music (the creation of music using mathematical formulas) is of interest in its own right, but you don't have to be an algorithmic purist to use and enjoy ArtWonk. For example, you might use ArtWonk to create a slowly evolving sound bed for use as a sonic background in one of your compositions. Or you might create a jagged bass line as a starting point for improvisation. Beyond that, the program is just plain fun to play with, a kind of musical Spirograph that's full of surprises.

ArtWonk represents an evolutionary step beyond Algorithmic Arts' other step-sequencing program, SoftStep. Among numerous enhancements and improvements are a more powerful and elegant organization of Modules, easier access to help, and a more flexible user interface. Function Modules are much easier to work with, and the introduction of Macros allows encapsulation and portability of substructures. ArtWonk's timing mechanism is more elaborate; the work area is easier to navigate; group edit, move, and copy functions offer more control over the arrangement of Modules; and separate Panel, Workspace, and Module Tree areas provide a more logical program structure. The one SoftStep feature missing in ArtWonk is support for fractals. According to ArtWonk's author, John Dunn, a powerful library of fractal functions is in the works.


ArtWonk's main window is divided into three work areas (see Fig. 1). The light-blue Workspace in the lower two-thirds of the window is where you can arrange and connect Modules to create an ArtWonk patch. The Module Tree to the left of the Workspace provides an overview of all the Modules in the patch. The dark-blue user-interface Panel in the upper part of the window is for controls (knobs, sliders, buttons, and an x-y mouse pad) and displays (meters, LEDs, and labels) to control the patch in real time. The three main work areas are separated by moveable partitions, allowing you to change their sizes to suit your needs.

The ArtWonk user interface also includes a floating graphics window called the Frame. The Frame (the small black square located in the upper-right corner of Fig. 1) is used to display animated graphics, which you generate with ArtWonk Modules just as you generate MIDI data (see Fig. 2). The Frame can be resized or hidden, and it can be placed anywhere on your screen (including outside of the main ArtWonk window). The Frame size can be changed manually or under software control.

ArtWonk's menu bar contains File, Options, and Help menus. Toolbars with transport controls, controls for recording patches to MIDI, and controls for storing and recalling presets are also provided. Presets can be selected manually or recalled automatically during playback. Buttons for creating and managing Bookmarks allow you to quickly navigate to remote areas of the Workspace and Panel. Along the bottom of the window are (from left to right) a small red LED-style error indicator, an area for displaying error messages, a Module Count indicator, a Main Loop Timer Overrun indicator, and a MIDI Activity indicator.


For a good idea of how ArtWonk works take a closer look at Fig. 1. The displayed patch plays notes chosen at random from a musical scale. You can hear the results in Web Clip 1.

You create modules by right-clicking on the screen and selecting the desired Module from a categorized drop-down list. Each of the Modules in a patch is designated by a letter and name. The letters, which correspond to the Module positions in the Module Tree, indicate the order in which the Modules are calculated. You can swap the position of two Modules in the tree by right clicking on either and selecting the letter of the other, which means you have complete control over the calculation order. Below each Module's title you'll find at least one output field (outputs are shaded in light blue) and one or more input fields. An input can be either a constant value, which you type in, or the output of another Module.

Unlike many programs of this type, there are no visible patch chords connecting the Modules. You create a connection between Modules by dragging an output of one Module (the cursor turns into a small hand whenever the mouse is positioned over an output) to the input of another. A short text label then indicates the source of data for that input. Clicking on the output of any Module will highlight all of the inputs to which it is connected. In Fig. 1 the Clock Module's Out field (highlighted in turquoise) is selected, and the RandInt Module's Strb input and the NoteOut Module's Clock input are highlighted in yellow, indicating that they are connected to the Clock's Out value. Similarly, when you click an input field, any output connected to it will be highlighted.

The example in Fig. 1 contains five Modules: the System Module (always present to provide access to basic system features), a Clock Module to provide timing, a RandInt Module to generate random integers, a PitchMap Module to map the random numbers to notes in a musical scale, and a NoteOut Module to send the resulting notes to a MIDI instrument. You can trace the circuit by following the input and output connections as just described. Here the RandInt Module is triggered at its Strb (strobe) input by the Clock output, the PitchMap Module gets its input from the RandInt Module, and the NoteOut Module gets its Note from the output of the PitchMap Module.

The user-interface Panel in Fig. 1 contains three knobs: Tempo, Transpose, and Duration. (Knob Modules are displayed as Modules in the Workspace and graphically as knobs in the Panel). Knobs can be customized, giving you complete control over their numerical range, color, size, and so on. It's also easy to convert units if need be. For example, a Tempo2Ms Module translates tempo values (in beats per minute) to millisecond values, which is what the Clock Modules expect at their inputs. Respectively, the Label, Frame, and Readout Modules create the labels, the boxed frames around the knobs, and the MIDI note number display on the Panel.

Some ArtWonk Modules are very simple — the Add Module, for example, just adds two numbers together. Others are quite complex and offer a great deal of depth and control. Modules such as PitchMap, for example, can be used to take algorithmic music beyond the realm of the abstract and atonal by restricting notes to pitch classes of your choosing. Fig. 3 shows the pitch-mapping screen associated with the PitchMap Module. That is where you create a pitch map for the notes that you want to include in the scale. The scale in Fig. 3 combines the harmonic series for C with the Mixolydian and Lydian modes. Pressing the Fill button at the bottom of the screen takes you to another editing screen, which provides additional ways to modify the scale map. Scales can be saved and recalled for later use.


With 201 Modules to choose from, you will almost always find one that fits your needs. If not, a combination of Modules will usually do the trick. Modules are organized by type. Types include timing, processing, pattern creation, MIDI input and output, math and logic, text and graphics, sequencing, and display and control. There are also Macros and Functions, which extend the basic Module concept.

A Macro is a container for any combination of Modules. Once created, a Macro functions as a single, custom Module. The easiest way to create a Macro is to build a patch in the Workspace, then push the Macroize button on the toolbar. Macros can be embedded within one another, and you can use the Module Tree to keep track of these nested structures no matter how complex they become. Variable Modules create global variables, which allow you to communicate with Macros no matter how deeply nested. You can copy Macros within a patch and save them for use in other patches. ArtWonk comes with a library of handy Macros, which greatly facilitates custom-patch creation.

Function Modules are, in effect, small computer programs that you write yourself using a calculator scripting language. Prototypes of all the available scripting language functions are available in a drop-down menu, which you can use to paste functions directly into your script. Normally Function Modules are set to run all the time. A handy alternative is the ability to set them to make calculations only on a strobe to input 1, or only on a change in the value at input 1. Those options allow you to significantly reduce the amount of calculation time a Function Module requires.

With all the Modules, Macros, and Functions available in ArtWonk, you can do practically anything you can dream up involving MIDI and a drawing surface. For example, you can create music that responds to genetic information or weather data. You can generate a harmonic accompaniment that responds to an improvised input. You can build a color organ that reacts to your music with changing shapes and colors. You can create an ear-training program that automatically gets more difficult as you get better, and you can make an automated music machine that invents constantly changing background music.

ArtWonk's documentation is contained in its online help system, which is clear and well organized. There is pop-up help for screen objects, Modules, and all Module inputs and outputs. You can also right-click on a Module to bring up a help screen describing its use. You can find information about Modules either by category or alphabetically in the online help. Finally, Algorithmic Arts' technical support is excellent.

ArtWonk's main limitation is that it does not operate in the audio domain. Although some potential users may miss support for audio, one of ArtWonk's strengths is that it stays totally within the numerical world of MIDI. Furthermore, ArtWonk interfaces smoothly and easily with software and hardware synthesizers and controllers, making it easy to turn your algorithms into music.

Whether you're interested in the most abstract forms of algorithmic composition or just want some new ideas for your more conventional pieces, you will find ArtWonk a powerful, easy to use, and enjoyable tool for expanding your musical and visual horizons.

ComposerPeter Hamlinteaches at St. Olaf College. He is also a member of the live electronic music improvisational band Data Stream.

Minimum System Requirements

ArtWonk 1.2

Pentium III/350 MHz; 64 MB RAM;
Windows 95 or later


Algorithmic Arts

ArtWonk 1.2 (Win)
algorithmic-composition software



PROS: Powerful and flexible. Logically organized. Good documentation and support. Macro and Function features add great depth. Very stable.

CONS: The program is MIDI only and does not support audio.


Algorithmic Arts