fungal music - jacques & fran soddell
MUSIC OF THE MYCELIUM OF MUCOR
music generated by L-system models based on measurement of experimental data of the growth of strain M41 of the filamentous fungus Mucor
Collecting experimental data
The fungus Mucor M41 was grown on plates of malt extract agar and its growth was photographed when viewed under a microscope every 15 minutes. The growing filaments were then measured (lengths and branching angles) at each time interval using an image analysis system.
Creating MIDI files
Fran wrote a parametric L-system to represent this growth (below). A MIDI file was then produced from this. The piece Mucorales uses this Mucor MIDI sequence. Since this parametric L-system is also stochastic, each run can produce a different image and MIDI file (illustrated below).
Mucor sounds
A number of files are presented, a MIDI file using general MIDI harp as the default), and a recording of XG harp, as well as 3 recordings using different cs1x performances - producing quite different sounds from the same MIDI file.
M41 harp MIDI
M41 harp mp3
M41 lazy mp3
M41 slo mp3
M41 ra15 mp3 (used in Mucorales)
Two runs of the L-system produced different MIDI files because the L-system was stochastic. In this example we present two runs played simultaneously to show the difference.
M41both MIDI
Mucor images
run 1 generation 100
run 2 generation 100
run 2 generation 250
L-system for Mucor M41
/* L system set up to enter observed data of Mucor M41. Adapted for both lsys and Lsys2midi Fran Soddell 03/02/00 */
#define maxgen 200
#define step 0.5
#define maxLength 4
START : H(1,1,1,0)
p1:A(x,b,c,y)
->F(step*x) BC H(1,1,1,0)
p2:B(x,b,c,y)
->F(step*x) B H(1,1,1,0)
p3:C(x,b,c,y)
->F(step*x) C H(1,1,1,0)
p4:D(x,b,c,y):x=maxLength
->F(step*x) H(1,b+1,c+1,0)
p5:D(x,b,c,y)
->H(x+1,b+1,c+1,0)
p6:H(x,b,c,y):c=1
->(0.33) Y(x,b,c,1)
->(0.67) Y(x,b,c,0)
p7:H(x,b,c,y):c=2
->(0.52239) Y(x,b,c,1)
->(0.47761) Y(x,b,c,0)
p8:H(x,b,c,y):c=3
->(0.40625) Y(x,b,c,1)
->(0.59375) Y(x,b,c,0)
p9:H(x,b,c,y):c=4
->(0.68421) Y(x,b,c,1)
->(0.31579) Y(x,b,c,0)
p10:H(x,b,c,y):c=5
->(0.5) Y(x,b,c,1)
->(0.5) Y(x,b,c,0)
p11:H(x,b,c,y):c=6
->(0.66667) Y(x,b,c,1)
->(0.33333) Y(x,b,c,0)
p12:H(x,b,c,y):c=7
->Y(x,b,c,1)
p13:Y(x,b,c,y):b=1&y=1
->(0.07407) A(x,b,c,y)
->(0.92593) C(x,b,c,y)
p14:Y(x,b,c,y):b=1
->(0.07407) B(x,b,c,y)
->(0.92593) D(x,b,c,y)
p14:Y(x,b,c,y):b=2&y=1
->(0.04) A(x,b,c,y)
->(0.96) C(x,b,c,y)
p15:Y(x,b,c,y):b=2
->(0.04) B(x,b,c,y)
->(0.96) D(x,b,c,y)
p16:Y(x,b,c,y):b=3&y=1
->(0.16667) A(x,b,c,y)
->(0.83333) C(x,b,c,y)
p17:Y(x,b,c,y):b=3
->(0.16667) B(x,b,c,y)
->(0.83333) D(x,b,c,y)
p18:Y(x,b,c,y):b=4&y=1
->(0.15) A(x,b,c,y)
->(0.85) C(x,b,c,y)
p19:Y(x,b,c,y):b=4
->(0.15) B(x,b,c,y)
->(0.85) D(x,b,c,y)
p20:Y(x,b,c,y):b=5&y=1
->(0.35) A(x,b,c,y)
->(0.65) C(x,b,c,y)
p21:Y(x,b,c,y):b=5
->(0.35) B(x,b,c,y)
->(0.65) D(x,b,c,y)
p22:Y(x,b,c,y):b=9&y=1
->(0.09091) A(x,b,c,y)
->(0.90909) C(x,b,c,y)
p23:Y(x,b,c,y):b=9
->(0.09091) B(x,b,c,y)
->(0.90909) D(x,b,c,y)
p24:Y(x,b,c,y):b=16&y=1
->(0.1) A(x,b,c,y)
->(0.9) C(x,b,c,y)
p25:Y(x,b,c,y):b=16
->(0.01) B(x,b,c,y)
->(0.9) D(x,b,c,y)
p26:Y(x,b,c,y):b=17&y=1
->(0.22222) A(x,b,c,y)
->(0.77778) C(x,b,c,y)
p27:Y(x,b,c,y):b=17
->(0.22222) B(x,b,c,y)
->(0.77778) D(x,b,c,y)
p28:Y(x,b,c,y):b=20&y=1
->(0.14286) A(x,b,c,y)
->(0.85714) C(x,b,c,y)
p29:Y(x,b,c,y):b=20
->(0.14286) B(x,b,c,y)
->(0.85714) D(x,b,c,y)
p30:Y(x,b,c,y):b=22&y=1
->(0.16667) A(x,b,c,y)
->(0.83333) C(x,b,c,y)
p31:Y(x,b,c,y):b=22
->(0.16667) B(x,b,c,y)
->(0.83333) D(x,b,c,y)
p32:Y(x,b,c,y):b=23&y=1
->(0.2) A(x,b,c,y)
->(0.8) C(x,b,c,y)
p33:Y(x,b,c,y):b=23
->(0.2) B(x,b,c,y)
->(0.8) D(x,b,c,y)
p34:Y(x,b,c,y):b=24&y=1
->(0.25) A(x,b,c,y)
->(0.75) C(x,b,c,y)
p35:Y(x,b,c,y):b=24
->(0.25) B(x,b,c,y)
->(0.75) D(x,b,c,y)
p36:Y(x,b,c,y):b=28&y=1
->(0.25) A(x,b,c,y)
->(0.75) C(x,b,c,y)
p37:Y(x,b,c,y):b=28
->(0.33333) B(x,b,c,y)
->(0.66667) D(x,b,c,y)
p38:Y(x,b,c,y):b=60&y=1
->A(x,b,c,y)
p39:Y(x,b,c,y):b=60
->B(x,b,c,y) p40:Y(x,b,c,y):y=1
->C(x,b,c,y)
p41:Y(x,b,c,y)
->D(x,b,c,y)
/* observed branching angles and frequencies */
p24:B
->(0.01851)[+(70)H(1,1,1,0)]
->(0.01851)[-(70)H(1,1,1,0)]
->(0.05556)[+(85)H(1,1,1,0)]
->(0.05556)[-(85)H(1,1,1,0)]
->(0.14815)[+(90)H(1,1,1,0)]
->(0.14815)[-(90)H(1,1,1,0)]
->(0.07408)[+(95)H(1,1,1,0)]
->(0.07408)[-(95)H(1,1,1,0)]
->(0.11111)[+(100)H(1,1,1,0)]
->(0.11111)[-(100)H(1,1,1,0)]
->(0.03704)[+(110)H(1,1,1,0)]
->(0.03704)[-(110)H(1,1,1,0)]
->(0.01851)[+(115)H(1,1,1,0)]
->(0.01851)[-(115)H(1,1,1,0)]
->(0.03704)[+(120)H(1,1,1,0)]
->(0.03704)[-(120)H(1,1,1,0)]
/* observed angles of changes of direction and frequencies */
p25:C ->(0.015)+(5)
->(0.015)-(5)
->(0.08)+(10)
->(0.08)-(10)
->(0.04)+(15)
->(0.04)-(15)
->(0.095)+(20)
->(0.095)-(20)
->(0.065)+(25)
->(0.065)-(25)
->(0.055)+(30)
->(0.055)-(30)
->(0.075)+(35)
->(0.075)-(35)
->(0.015)+(40)
->(0.015)-(40)
->(0.015)+(45)
->(0.015)-(45)
->(0.04)+(50)
->(0.04)-(50)
->(0.005)+(60)
->(0.005)-(60)