Algorithmic Arts

MusicWonk Manual
by John Dunn


Program Overview

MusicWonk is a program that produces MIDI music based on algorithmic processes in real time. You compose by connecting "modules" - graphical objects that represent functions and processes - in real time, adjusting the parameters as you go.

MusicWonk will drive MIDI synthesizers, soft synths and sound cards directly, effectively "playing" them in real time or optionally responding to user or environmental parameters; it will also record directly to a standard MIDI file.

Getting started

To get started with MusicWonk, read this overview page, the Modules page, and the Screen Areas page. It may be helpful to run some or all of the Starting Tutorial. Other overview pages that may prove useful are Toolbars, Main Menu, System Module, and Run Loop.

Screen layout

MusicWonk consists of the blue user interface panel (called the Panel); the light blue module Workspace just below (the Workspace); and the white tree view of all existing modules to the left (the Module Tree). The partitions between the three main screen areas may be resized by click and drag on the partition borders.

Tool Tips

MusicWonk makes extensive use of tool tips. To find out what something does, just hold the mouse pointer over it for a few seconds and a tool tip message will appear describing the item. Probably the best way to explore MusicWonk, once you know the basics, is to just noodle around with the mouse, reading the tool tips that pop up.

Creating modules

To create a module, right click on the module Workspace (the light blue colored area). A popup menu will appear. Select a module from the menu and it will be created at the point of the mouse click. Click on the module and drag it to move it.

Connecting modules

Modules have outputs at the top, colored light blue, and inputs at the bottom, colored white if not connected to another module and light yellow if they are. You can enter values directly into the inputs by typing in them. Connect outputs to inputs by drag and drop of the output to the input: click on the output you want to connect, drag it over to the input you want to connect to (you will see a drag icon while doing this), and release the mouse button when the pointer is over the target input. The input will turn light yellow and it will label itself to indicate the output it is connected to.

At any time you can click on an input or output label to see at a glance the connections. If you click on an output label, the label highlights cyan and all inputs connected show a yellow highlighted input label; if you click on an input label, the label of the output that feeds it will highlight cyan, and only the input label you clicked on will highlight orange.

You can also double click on an input to get a pop up of constant values. These values are in a standard text file (use Notepad to edit it, not Word) in the MusicWonk directory, named "Constants.txt," and consist of some descriptive text followed by an equal sign ("=") followed by a value. You are free to add to this file as you like. The function that inserts the value only cares about finding an "=" character somewhere on a line, followed by any value. It ignores everything up to and including the "=", and inserts only the value.

Cut, Copy, Delete, Move

You can Cut, Copy, Delete, or Move groups of modules as well as individual modules.

For individual modules, to Cut, Copy, or Delete, right click on the module to get a pop up menu for the action desired for that module. To move a module, simply click on the top part of the module (or shift-click on the module body, where the input/output labels are), and drag the module to its new location.

Selecting groups of modules

To operate on groups of modules, click and drag on the Workspace (not the module), and enclose the modules you want to target with the rubber band box that appears when you click & drag on the Workspace. Modules that are enclosed in the box become "selected" and their labels will turn red. When you release the mouse button the box will disappear but the selected modules will be indicated by the now red labels. Right click on any of the selected modules to get a popup menu for the selected group.

To move the selected modules as a group, click and drag on the top of any of the selected modules (or shift-click on the module body, where the input/output labels are) and all selected modules will follow the drag. To unselect, click anywhere on the Workspace background.

Deleting modules

Right click on the module and select "Delete" from the popup menu. Deleted modules can be recovered by right clicking on the Workspace background and selecting "Undo Delete" from the popup menu. To undo a delete, click on the Workspace background and select "Undo Delete" from the pop up menu.

Pasting Modules

After a single module or a group of modules has been Cut or Copied, right click on the Workspace background. The module creation popup menu will show a "Paste" command near the top of the popup menu. Selecting Paste will paste the previously copied or cut modules. The modules will appear in exactly the same place in the Workspace as the original modules, so if you did not move the original modules previous to a Paste, they will be covered by the newly pasted modules. However after a Paste operation all modules that were created by the paste will be selected, so you can drag the new modules as a group to whatever location you prefer.

Fetching modules

You can move a module or a group of modules beyond the currently visible Workspace by selecting the modules you want to move, then scrolling to the area you want to move them to, and selecting Fetch from menu that pops up when you click on the Workspace background. All the selected modules will be teleported to the current location.

MusicWonk values

MusicWonk outputs produce numbers and/or text, depending on the module. Inputs accept both text and numbers, as appropriate to the module. If the input is non numeric it is considered text. Numbers are double precision floating point, and are automatically converted to other data types such as integers or bytes as needed. You can also enter hexadecimal values by preceding the number with "&H" as &H7F for decimal 127.

Module value readout

You may notice that fast changing values in modules, such as the Main and Clock readouts in the System module, do not, by default, update every time the value changes. Rather, the module readouts update 5 times a second, which is about as fast as you can make sense of them, and has minimal impact on CPU usage. You can change this in the Main menu Global Options. This does not affect readouts in the Panel.


Although a MIDI file can be played like a sound file, for example by double clicking on the file name, MIDI is not sound, it is a stream of control messages that instructs sound producing software and hardware to produce music.

Most soft synths and samplers, while designed to produce sound, need to be controlled by something else, a keyboard or a MIDI file for example. MusicWonk provides that MIDI control. MusicWonk is not the orchestra, it is the score and the conductor.

Modern music production software often provides built in soft synths in addition to MIDI recording and editing. While this is convenient, it is also limiting. With MusicWonk, you are not stuck with one particular sound set, you have the entire world of MIDI synths and samplers at your command.

Connecting to MIDI

To connect a MIDI synth, soft synth, or sound card, first make sure you have a working MIDI driver installed on your computer. The simplest way to do this is to find a .mid file and double click on it. If the Media Player or whatever you use for MIDI sound pops up and starts playing the file, you are in business. If not, you need to figure out how to configure your computer to play MIDI before proceeding.

Once you know you have MIDI, load MusicWonk and select Options/MIDI from the main menu. This will pop up a MIDI configuration dialog. Select your MIDI output driver from the list. You can select up to 4 MIDI output drivers and 4 MIDI input drivers, but initially you should just select one Output driver from the Port 0 tab.

If you are using a Sound Blaster type sound card, make sure "SB Banks" is checked (this is the default), if you are using any other card or synth, uncheck it. This option determines how bank changes are made. If you later find Bank change does not work, try the reverse setting.

Tiny tutorial to get first sound

  1. After you have set the MIDI Output driver (you don't need an Input driver yet), right click on the Workspace background to get the module menu. Select Clock from the Clock sub menu. Pop up the module menu again and select Rand Int (not Random) from the Pattern menu.
  2. Click and drag the Strb output of the Clock to the Strb input of the Rand Int module. You should see the output of the Rand Int changing, showing values from 0 to 24, the default setting.
  3. Pop up the module menu, and select MIDI Voice from the MIDI Out menu. Drag the Clock Strb output to the MIDI Voice Clock input. Drag the Rand Int output to the MIDI Voice Note input. Finally, type 1 in the MIDI Note Play input, replacing the 0. At this point you should hear random notes. It ain't much but it's a start!

Computer System Requirements

MusicWonk runs on all Windows operating systems from Windows XP on, including XT 64, Vista 32, Vista 64, and Windows-7 32 and Windows-7 64. Some have reported that it works with Windows 98, Windows 2000, and with Windows emulators on the Macintosh, although we are unable to provide support these platforms.

You also need a sound card or MIDI interface. Most sound chips built into PCs and laptops will work fine. SoundBlaster and similar cards, as well as Emu and other pro and semi pro sound cards work well also.

Synthesizer Compatibility

MusicWonk provides an extensive and highly flexible MIDI implementation. This makes it ideal for controlling all kinds of synthesizers, keyboards, and workstations, as well as modular synths and high end professional sound processors such as Sonic Core Scope and Symbolic Sound Kyma; and in fact MusicWonk has been designed from the ground up for high compatibility and nuanced control of the Kyma and Scope synths we've used in our own studio for over 10 years.

Software Synthesizer and Sampler Compatibility

MusicWonk is compatible with all known software synthesizers and samplers. Many soft synths do not have their own MIDI drivers, and therefore require a program called a MIDI Loop Back in order to run them with MusicWonk or any other MIDI control software. A MIDI Loop Back provides connections to send the output of MusicWonk to a Loop Back input, then connect your soft synth to the same Loop Back output. These programs are available as free downloads, they are easy to install, and once installed they are trouble free. MusicWonk works very well with any of these free MIDI Loop Back drivers. If you don't know which to use, we recommend MidiYoke.

MidiYoke (Win98/2K/XP/Vista) LoopBe1 (Win2K/XP/Vista 32/64bit)
Sonic Foundry's Virtual Midi Router (Win98/2K/XP)


MusicWonk works very well with popular VST host software such as REAPER, Cubase, Ableton Live, Sonar and FL Studio/Fruity Loops , or the free Wavosaur. Since the output of MusicWonk is a live MIDI stream, essentially an algorithmic keyboard player, it is not a VST application itself. But the VST host programs have MIDI inputs and outputs that can easily be set up to distribute the MusicWonk MIDI stream to the hosted VST and VSTi modules.

MusicWonk is Copyright © 2003-2010 by John Dunn and Algorithmic Arts. All Rights Reserved.