interprets Lindenmayer L-systems as MIDI files, or MIDI
generated sound. L-systems
recursively rewrite a string of symbols according to a set of transformation
rules. The resulting symbol string is then interpreted as a sequence of commands to a 'turtle' (a
la LOGO) which draws (or writes music) as it moves. Originally designed by Aristid Lindenmayer
and others to model the development of living organisms, they are a fascinating tool
for generating fractal forms.
In order to interpret the L-system as music, LMUSe maps the turtle's 3-d
movement, orientation directions (forward, up, and left), its drawing
line length, and thickness into musical pitches, note durations, and volume. Color becomes intrument/timbre.
Parallel/polyphonic lines are built using the turtle's push and pop commands.
The transformation rules can be stochastic as well as context-sensitive. LMUSe
can also mutate the transformation rules so that generating variations
is easy.
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). I highly 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. (Production rules from other L-system programs usually
require some modifications for them to be parsed correctly by LMUSe).
Equipment required:
386/486/Pentium, MS-DOS, 640x480 256 color graphics, mouse, midi capable
sound card or midi interface, speakers (or headphones).
License and Distribution:
LMUSE is a free program without any guarantees. To redistribute
with modifications to the program or attendant files, please notify me
at dsharp@interport.net, and
promise that your redistribution is only for the purpose of glorifying
the galactic industrial strutgear.
Download LMUSe v0.7b, 12/24/98 (approximately 650 kbytes). Latest changes
Here is a purely DOS command line version of LMUSe
(12/03/98, 80k). It takes the name of an L-system file and,
optionally, a map file name as command line
parameters and dumps a midi file at the end. (No graphics or sound output).
If you are interested in modifying, extending, or porting LMUSe, you should probably start
with this.
If you get the command line version, I recommend you to also download the 'regular' version above, because the command line package
doesn't contain any examples and the documentation is less complete.
Note: Because of an error on my part, from around 11/22/98 until 12/03/98,
the "command line version" available here was non-functional.
Some Examples:
All 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). The links to
'.LS', '.LM', and '.L' files show what transformation rules were used. The pictures
are examples of LMUSe's rather sad drawing abilities.
L.mid L2.mid L5.mid ![]() L.l (adapted from CJ van der Mark) |
Alfonsec.mid![]() alfonsec.l |
BoP08a.mid BoP08a2.mid BoP08a3.mid ![]() bop08a.ls (adapted from bop08.ls, LJ Lapre) |
Bush.mid ![]() bush.l (adapted from bush.l, Adrian Mariano) |
Circular.mid
Circula2.mid
Circula3.mid
![]() circular.l |
||||
Passie.mid![]() Passie.ls (adapted from C.J.van der Mark) |
Ex1.mid Ex1b.mid ![]() ex1b.lm |
Lsys01.mid ![]() lsys01.ls (LJ Lapre) |
Lsys04a.mid ![]() lsys04a.ls (adapted from lsys04.ls by LJ Lapre) |
Lsys08.mid![]() lsys08.ls (adapted from LJ Lapre) |
||||
Cantor dust ![]() cantor.l |
|
Improvising on C J van der Mark's "Airhorse" :
"An oboe lost in the fractals" by David W SolomonsLj Lapre's "Spider" rules were used to make:
"Spinnenmusik" by David W Solomons
A couple of amazing (and long!) pieces by Viejo Vilva are here
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), and other relevant information, or just a URL to link to.
The LMUSe Readme file
The LMUSe Documentation
(The Readme, Documentation, and this page are included in the LMUSe
package).
Download LMUSe v0.7b (approximately 650 kbytes) Latest changes
Download DOS command line version.
Feedback
comments, questions, suggestions, etc, whatever: dsharp@interport.net
Some related links:
C van der Mark's excellent tutorial
for LParser.
Fractal Music
Software
CALResCo: The Complexity & Artificial Life Research Concept for Self-Organizing Systems has an astounding collection of complexity, artificial life, and fractal type resources.
A list of L-systems
software for various OS's (this link often doesn't work)
The Spanky Fractal Database has
loads of fractal related materials, including many 2-d L-system
rules for Fractint
Guenter Nagler's MIDI utilities.
Special thanks to:
D J Delorie et al for DJGPP v2
DJGPP web site
Shawn Hargreaves for Allegro v3.0
The 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/
Tim Thompson and Michael Czeiszperger for the midi file in/out routines in midifile.c
Tim Thompson page