[ Advert ]

> Home







> Issue 12







Tip of the day




Up for it?


Ludwig: Bones for an Obscure Dog


Spot the hard drive competition


The Notator SL user-group


Black Box


Atari games on the move







Mirage A/D convertor cartridge





Uncle Tim's MIDI monthly

Ludwig: Bones for an Obscure Dog

This month Tim Conrardy looks at an obscure algorithmic program from Hybrid Arts


Screen shot of Ludwig

What is Ludwig?
Obscure fact: Ludwig gets its name not from the famous composer we all know and love, but the Hybrid Arts R&D director's dog! Arf!

Ludwig is an algorithmic application created by Tom Bajoras, formerly of Hybrid Arts. It was produced in the late 1980s at the time "M", Tunesmith, Music Mouse and many other algorithmic programs were the big thing of the day. It is different to those applications in that you have to choose "operations" (the actual algorithm) that will happen within a "cell" (a block of time) and what pattern (scale, melody) it will be applied to. You have different operations that apply to pitch, rhythm and velocity. Pitch operations would include, for example:

  • Reverse
  • Warp harmony
  • Diatonic up
  • Force diatonic
  • Invert chords
  • Play highest/lowest
  • Randomize
  • Play odd/even
  • Chromatic up
  • Reflect
  • Echo
  • Substitute rest
  • Drop a chord

All of the above can be applied to a pattern that you create, of which you can have 96 in memory at a time. You can also have preset rhythms that you can create and modify with similar transformations. Fascinating results can be obtained. The only condition however, is to build up a library of patterns and rhythms to work with initially so you have starting points, or "bones" as Ludwig calls it. You build a composition by inserting "instruction" or "operations" within cells. You can have a total of 1,024 cells, which gives a tremendous amount of room to string your patterns and permutations of the patterns together.

Screen shot of Ludwig

You can also imagine it as an 8-track analog style sequencer. Each track can be assigned a MIDI channel as well as patch changes. It can also be muted even while it is playing. You can assign whatever patterns you have created and then permutate those patterns with the algorithms. You can do this for pitch, velocity and rhythm. What a system!

Ludwig is now freeware thanks to Tom Bajoras giving permission for its release as well as his other former Hybrid Arts programs. See the Hybrid Arts page at TAMW (in the links section here).

Within the ZIP are a few libraries or "bones" to make use of the program right away.

Ludwig Tutorial
By Tim Conrardy
For this tutorial , you will need LIB1.LWG (supplied in the ZIP)


  1. Double-click on LUDWIG.PRG. The program loads.
  2. Go to FILE on the menu and select LOAD LUDWIG FILE. Find the LIB1.LWG file and select it.
  3. A dialog appears: LOAD LUDWIG PARAMETERS FROM LIB1.LWG. You have a choice to select which pitch and rhythm patterns you want to use. For our tutorial, select OK. This will select all of them. The file loads into Ludwig's memory.
  4. To get some initial output from Ludwig, hit the spacebar to play what is currently loaded.
  5. You will see the screen divided up into four sections. Tracks 1 through 4 are shown. Track 1 is the only one "playing". This is indicated by the two arrows you see alternating between two "cells" as they are called in Ludwig.
  6. In the far upper right corner of the screen you will see eight arrows in a row. One arrow is in an "upward" position. The others are down. These are muting and unmuting switches for each of the eight tracks in Ludwig. Select the second arrow. The arrow goes up, unmuting track 2. You will hear a flurry of notes playing at the same time as track 1. Select the second arrow again, and the track is muted, returning us to the original pattern on track 1. At this point, hit [Return] and Ludwig stops.

The editors and recording a pattern

  1. Let's take a look at what makes Ludwig tick, that is, by viewing the patterns in the library we just loaded. Go to the menu and select PATTERN, then PITCH. You are taken to a dialog which lists all the patterns in memory. They are numbered starting at 00 and go to 29. By clicking into the arrows at the bottom of the screen, you can scroll to the next screen of patterns. Clicking into one of the names, you can edit the name if so desired. However, for our purposes, CONTROL-CLICK into a pattern name. This will bring up the pattern creation screen. You will see the notes used in the pattern highlighted in the first row. Selecting PLAY will play the notes.
  2. To record a new pattern, select RECORD and play your MIDI keyboard slowly so Ludwig can "hear" the notes you are entering. Remember you are only recording the notes, not the rhythm. Rhythm is dealt separately in Ludwig, so is velocity. When you are done, hit the space bar. You will see the notes you played in the highlighted area. Select PLAY to hear them back (You can also select notes with the mouse instead of using a MIDI keyboard). Now you can select OK to keep the new pattern or CANCEL to go back to the original pattern. You are brought back to the Pitch Pattern screen. Now select EXIT.

    Note: If you want to ADD to the library, go to the next screen as described above and CONTROL-CLICK into an empty pattern field and create a new pattern as above. Give it a new name as well. Remember to save the file when you have completed your session under FILE/SAVE LUDWIG FILE.
  3. You are now back at Ludwig's main screen. Go to PATTERNS again on the menu and select RHYTHM. The list of rhythms are presented. CONTROL-CLICKING into a pattern field will bring up the rhythm editor where you can create your own rhythms. For now, select CANCEL and you are brought back to the main Ludwig screen.

Creating variations

  1. Looking at track 1, you will see in the first cell a <U> with a <00> below it. <U> stands for USER PATTERN while <00> stands for pattern number 00 in the pitch pattern list we just viewed. Click into the U/00 cell so it is highlighed. Right-Click on <00> and the number increases. Left-clicking will decrease it. Change it to <01>. This means we have changed our user pattern to number 01 in the pitch patterns list. Get it? Now click anywhere outside the field in the screen and it becomes de-selected.
  2. Press the space bar. You will hear a different pattern playing than when we first started. Now the fun begins! Click into the second cell on the letters EC. A dialog appears at the bottom of the screen for PITCH SERIES OPERATIONS. These are the actual algorithms you can use to create variations to the initial seed pattern. For our purposes, click into RF (Reflect) RF goes into the cell, but it is still highlighted. You can now put in a value for how much reflection you want by right-clicking into the number cell under RF. Change it to <05>. Now click outside the field to enter the parameter, and the cell is de-selected. You will now hear a change in the pattern as the algorithm RF permutates it. Now you can start having more fun as you click into the next adjoining cells, select different pitch series operations and values and hearing what it does to the initial "bone". Fascinating variations can be created from one initial seed pattern or bone.
  3. Now click into the P (for Pitch) on the TRK 1 field. It changes to a V and the VELOCITY dialog appears for track 1. Try selecting different velocities and changing the different values to see what it does to the music. Remember the music is still playing as we do this!
  4. Click into the V, it changes to R for RHYTHM. Clicking into the second empty cell will bring up the RHYTHM SERIES OPERATION dialog. Here, as in the pitch series, you can select the different algorithms and values to change and alter the RHYTHMS of the initial seed pattern or bone. Experiment! Clicking into R again and you are brought back to the P(itch) screen for track 1.

Random variations

  1. Now for something completely different. On the right side of the track dialog is a section that says MIX WITH <00>. Right-Clicking into <00> will allow you to enter a value. Change it to <05>. This means pattern 01 (the initial seed pattern) will be mixed with pattern 05. Below this is a dialog for +/- <00>. Clicking into this will allow you to put in a percentage of how much pattern 05 will be mixed with pattern 01. For our purposes, change it to +/- <30>.
  2. Now left-click into an empty slot below the percentage dialog and another impressive dialog presents itself: the PITCH RANDOMIZER FUNCTIONS. There are many options for random permutation. For our purposes, select R :<select notes randomly>. The R goes into the slot. You can select more slots to put in more random functions. However, we don't hear the permutations yet. Remember, the music is still playing! How come? We have to tell Ludwig where we want the random permutations. We do this by selecting another empty cell in track 1 and selecting <?> RANDOMIZED. Now the features we just programmed will take place when Ludwig arrows to the <?> cell.

More functions

  1. Now you can try unmuting some tracks with the top arrow keys, selecting different patterns, pitch and rhythm series operations in the same way we did for track 1. Try to pick patterns and operations that go well together. Some nice polyrhythmic variations can be created.
  2. 17. Press [Return] to stop Ludwig. Click into TRACKS on the menu and select SUMMARY. A dialog appears where you can assign track names, MIDI channel, legato percentage, patch number and Pitch/Rhythm Mesh (Yes or No). Experiment with these settings to see what sounds best. Exit when completed.

Recording a Ludwig song

  1. To do a recording in Ludwig, set up your patterns and algorithms. Then press the space bar to start Ludwig. Then Mute, unmute tracks, and let Ludwig play through the permutations. When completed, press [Return]. Ludwig stops. Now go to FILE on the menu and select SAVE SONG. The file selector appears, give your song a file name and hit OK, and it is saved. The song is actually saved in Hybrid Arts Edit-Track SNG format. To create a MIDI file, you need to download Edit Track (which is freeware now) and load the .SNG in and convert it to a standard MIDI file. From there you can export it to your favorite sequencer, that is unless Edit Track is your favorite sequencer! Another method is to record Ludwig's output directly into another external sequencer either from another computer or hardware sequencer, synth workstation.

Bones for a dog

There is obviously more to this software than meets the dog, er... bone! Experimentation is the key to this program. I have found that Ludwig's output is not static, but keeps changing providing you input many variations, but even then surprises me as I am rediscovering this software.



    The actual program by Tom Bajoras. Contains Bones (libraries). Now freeware.
  • PARTICLE.MID (Tim Conrardy)
    Ludwig is used for the background texture with other instruments added by hand. Arranged in Cubase. GM-compatable.
  • ROUND.MID (Tim Conrardy)
    An example of raw output from Ludwig. Tweaked live in Ludwig. GM.
  • MILKYWAY.MID (Tim Conrardy)
    An example of output from Ludwig that is arranged in Cubase. No instruments added by hand. It is all Ludwig-generated. GM.
    A collection of small MIDI files that can be used with any sequencer to be able to use Ludwig-generated material.


Useful links

MyAtari magazine - Feature #5, October 2001

 [ Top of page ]



Copyright 2001 MyAtari magazine