LMUSe [beckera.gif]

LMUSe interprets Lindenmayer "L"-systems as MIDI files, or MIDI generated sound. L-systems are a concise way to describe recursive procedures, originally designed by Aristid Lindenmayer to model organism development, and they are a fascinating tool for generating fractal forms. [connection dialog screen shot]

LMUSe lets you map a "turtle"'s 3-d movement, orientation directions(forward, up, and left), its drawing line length, and thickness into musical pitches, note durations, and volume. You can build parallel/polyphonic lines using the turtle's state stack. Transformation rules can be stochastic as well as context-sensitive. LMUSe will also mutate the transformation rules so that generating lots of variations is easy.

[play screen shot]

LMUSe is designed to run the "LS" files that Laurens Lapre's LParser program uses, and virtually the same symbol alphabet is used (though LMUSe's interpretation is musical rather than graphical). Many other L-system programs' files can be used as well, though usually they require some modifications. I recommend anyone with an interest in L-systems to download a copy of Lparser from Laurens Lapre's web page , which also contains many examples and links to valuable L-system tutorials.

Equipment required:
386/486/Pentium, MS-DOS or Windows, 640x480 256 color graphics, mouse, midi capable sound card or midi interface, speakers (or headphones).

License and Distribution:
LMUSE is a free program. . There are no restrictions on its free re-distribution as long as the program and attendant files are intact without modification. To redistribute with modification, please request permission from me at dsharp@interport.net , or promise that your redistribution is only for the purpose of glorifying the galactic industrial strutgear.

Download LMUSe v0.5c, 3/19/98 (approximately 600 kbytes)

Some Examples:
The MIDI file examples on this page are straight from LMUSe. That is, no editing was done to prettify them or to get them to "make sense".(not necessarily true for outside links or if noted otherwise). The pictures next to the midi file names(also from LMUSe, but shrunken) are just intended to give you an idea of how LMUSe's musical output relates to the "traditional" L-system graphic.

l.mid
variation: l2.mid
[L graphic]
L.l
(adapted from
CJ van der Mark)
alfonsec.mid
[alfonsec graphic]
alfonsec.l
bop08a.mid
bop08a2.mid
bop08a3.mid
[bop08a.gif]
bop08a.ls
(adapted from bop08.ls,
LJ Lapre)
bush.mid
bush2.mid
[bush.gif]
bush.l
(adapted from bush.l,
Adrian Mariano)
passie.mid [passiem.gif]
Passie.ls
(adapted from
C.J.van der Mark jr.'s passie.ls)
ex1b.mid
[ex1b.gif]
ex1b.lm
lsys01.mid
[lsys01.gif]
lsys01.ls
(LJ Lapre)
lsys04a.mid
[lsys04a.gif]
lsys04a.ls
(adapted from lsys04.ls
by LJ Lapre)

Hear the Cantor dust

dragon.mid generated from dragon.l

2-d dragon curve

[dragon.gif]

twisted dragon curve

[dragon2.gif]


Improvising on C J van der Mark's "Airhorse" :
"An oboe lost in the fractals" by David W Solomons
Lj Lapre's "Spider" rules were used to make:
"Spinnenmusik" by David W Solomons

I would like to show more LMUSe examples. Please send to dsharp@interport.net. If possible, include a MIDI file together with a rules file (.l, .ls, .lm), details (for example, if/what editing was done to the MIDI), or a URL to link to.

[bop.gif]

The LMUSe Readme file

The LMUSe Documentation
(The Readme, Documentation, and this page are included in the LMUSe package),

Download LMUSe v0.5c (approximately 600 kbytes)

Feedback

Latest changes 3/19/98: Various small changes and fixes. (nothing major)
3/12/98: Extended the map `spread' parameters to negative values so that maps can be 'inverted'.
3/11/98: new symbol '*(x)' to write to MIDI channel x. Transpose stack, T(x)...T, bug fix. (wasn't transposing down!)
3/09/98: Added graphical buttons to the user interface. small bug fixes.
3/03/98: Bug fixes and cosmetic changes
3/01/98: New symbols for push ('\') and pop ('/') time without otherwise changing the current state. This makes creation of parallel (in time) musical lines more flexible.
2/28/98: Fixed a major flaw that was not popping the angle from the state stack properly.
2/27/98 Fixed a bug that was crashing on underflow of LMUSe's state stack.
2/26/98 Added three independent stacks. Pitch transpostion stack, velocity multiplier and duration multiplier stacks. (option to enable/disable)
2/24/98: Added a "v(x)" symbol to the alphabet which multiplies note velocities.
2/23/98: Changes to mutation routines. More small cosmetic changes.
2/21/98: Added: DOS shell command. Option to load new file when returning from 'Edit'. Save rule file command.
2/19/98:Two-sided context-sensitivity and a stochastic condition now work in a single rule (though I haven't quite figured out any practical purpose).
2/17/98: Added "spread" parameters to the interpret map to amplify/damp the effect state changes have on the pitches, durations, and volumes. Made one binary data file (help.dat) to replace the various *.hlp files. Some cosmetic changes

comments, suggestions, etc: dsharp@interport.net



Other Fractal Music Software
A list of other L-systems software
The Spanky Fractal Database


Credits

Special thanks to:

D J Delorie for DJGPP v2, compiler
DJGPP web site

Shawn Hargreaves for Allegro v3.0
Game programming library
shawn@talula.demon.co.uk
http://www.talula.demon.co.uk/

Laurens Lapre for LParser.
ljlapre@xs4all.nl
http://www.xs4all.nl/~ljlapre/