Tao Particles, Lambdakismós

PartIScore.jpg

 
Tao Particles (there are none) is written in three parts for MIDI Piano and took seven months to compose. At first everything was going fabulous. My theories set in a perfect harmonic gesture. Then early one morning while rescuing a mud sparrow that had flown headfirst at my window, it all became perfectly clear. Life is meaningless without purpose. We live not long enough to make a humanistic change necessary for world peace; there are no Tao particles! We are burning embers in a cosmic explosion. A literal flame resides in our hearts and it is best described by Decartes in his Discourse On the Method of Rightly Conducting the Reason and Seeking for the Truth in the Sciences, Part V. Really, an actual flame within the heart!

Recall the story of the great orator Demosthenes standing firm at the Adriatic Sea, his mouth stuffed with sea gems, trying to out-shout the crashing surf. This sure solved Demosthenes' stutter. On an 8X8 Lambdoma matrix there are 43 unique particles out of 64. I arranged the 43 particles in ascending order and applied a tempo/duration for each according to their ratios from the Lambdoma mixture of overtone and undertone partial series ratios. Once these pebbles were placed in my harmonic sorting algorithm they began to stutter. The sound they produce is Lambdakismos Part I, Tao Particles.

 

Part1Lambdoma.jpg
 
Lambdaksimos, Part I Tao Particles (there are none)

REM Lambdoma 8X8 12/8/04 Drew Lesso

REM Harmonic Tempi and Pitch Regressions
REM This program contains multiple data for separate runs
REM Check for changes in rem statements
REM Lambdoma original parts for 2x2 (3) 3x3 (7) 4x4 (11) 5x5 (19) 6x6 (23)
REM 7x7 (35) 8x8 (43) 9x9 (55) 10x10 (63) 11x11 (83) 12x12 (91)
REM 13x13 (115) 14x14 (127) 15x15 (143) 16x16 (159)
REM Only use parts up to an including 8X8

CLEAR, 200000&
midiopen 10000,2048

DIM midibyte%(6000), data1%(6000), data2%(6000)
DIM timestamp&(6000)
DIM tempi&(43): REM variable change per tr in DP (43,35,23,19,11,7,3)
DIM tone%(43): REM change(43,35,23,19,11,7,3)

REM MidiBasic Variables
midibyte%=1: timestamp&=1: count%=0: ticklength%=678: time&=0

REM Load MM tempi array expressed in milliseconds.
FOR x = 1 TO 43: REM change per run time to (43,35,23,19,11,7,3)
READ tempi&(x)
NEXT x
REM this is 23's DATA 6000,5000,4000,3000,2500,2000,1667,1500,1333,1250,1200,1000
REM this is 23's DATA 833,800,750,667,600,500,400,333,250,200,167
REM this is 19's DATA 5000,4000,3000,2500,2000,1667,1500,1333,1250,1000,800,750,667,600,500,400,333,250,200
REM this is 11's DATA 4000,3000,2000,1500,1333,1000,750,667,500,333,250
REM this is 7's DATA 3000,2000,1500,1000,667,500,333
REM this is 3's DATA 2000,1000,500
REM this is 35's DATA 7000,6000,5000,4000,3500,3000,2500,2333,2000,1750,1667,1500,1400,1333,1250,1200,1167,1000
REM this is 35's DATA 857,833,800,750,714,667,600,571,500,429,400,333,286,250,200,143,167
DATA 8000,7000,6000,5000,4000,3500,3000,2667,2500,2333,2000,1750,1667,1600,1500,1400,1333,1250,1200,1167,1143,1000
REM this is 43's DATA 875,857,833,800,750,714,667,625,600,571,500,429,400,375,333,286,250,200,143,167,125

REM Load tonal array corresponding to tempi.
FOR x = 1 TO 43: REM change(43,35,23,19,11,7,3)
READ tone%(x)
NEXT x
REM this is 23's DATA 26,29,33,38,41,45,48,50,52,53,54,57,60,61,62,64,66,69,73,76,81,85,88
REM this is 19's DATA 29,33,38,41,45,48,50,52,53,57,61,62,64,66,69,73,76,81,85
REM this is 11's DATA 33,38,45,50,52,57,62,64,69,76,81
REM this is 7's DATA 38,45,50,57,64,69,76
REM this is 3's DATA 45,57,69
REM this is 35's DATA 23,26,29,33,35,38,41,42,45,47,48,50,51,52,53,54,54,57,60,60
REM this is 35's DATA 61,62,63,64,66,67,69,72,73,76,79,81,85,88,91
REM this is 43's DATA 21,23,26,29,33,35,38,40,41,42,45,47,48,49,50,51,52,53,54,54,55,57,59,60,60
DATA 61,61,62,63,64,64,66,67,69,69,72,73,76,79,81,85,88,91

REM Harmonic Lunch
DEFINT number:number=1
DEFINT increment:increment=1
DEFINT location:location=0
DEFINT advance:advance=1
DEFLNG btime:btime=100

FOR x = 1 TO 41: REM change x=1 to (41,33,21,17,9,5,1)
REM happyincrements creates the stacking of time/tonal material.
GOSUB happyincrements
FOR y = 1 TO 43: REM change (43,35,23,19,11,7,3)
location=number+increment
IF location>43 THEN LET location=location-43: REM change(43,35,23,19,11,7,3)
number=location
REM Location Location Location

REM toggleon
midibyte%(advance)=144:timestamp&(advance)=btime
btime=timestamp&(advance)
REM compseq
data1%(advance)=tone%(location)
data2%(advance)=67
advance=advance+1
REM toggleoff
midibyte%(advance)=128:timestamp&(advance)=tempi&(location)+btime
btime=timestamp&(advance)+100: REM distance between attacks,see next line
REM DPlamdasenarius 250 tr 1, 100 tr 2
REM Velocity off
data1%(advance)=tone%(location)
data2%(advance)=0
advance=advance+1

NEXT y

NEXT x

tracktop%=advance
GOSUB play
libterm
BEEP
END

happyincrements:
increment=increment+1
location=0
number=1
RETURN

play:
midiport 1: midiport 3
trackindex%=1
upperlimit%=tracktop%
midi 0: miditime 0: miditime ticklength%: settime 100: count% = 0
syncstate%=0:tickfactor%=1
midifilter 1,254,254,0
midisync syncstate%,tickfactor%
WHILE (trackindex% < upperlimit%)
outcount count%
WHILE count% > 0: outcount count%: WEND
midiout midibyte%(trackindex%), timestamp&(trackindex%)
midiout data1%(trackindex%), timestamp&(trackindex%)
PRINT data1%(trackindex%), timestamp&(trackindex%)
midiout data2%(trackindex%), timestamp&(trackindex%)
trackindex%=trackindex% +1
WEND
REM Reset outside seq clock
syncstate%=0
midisync syncstate%,tickfactor%
RETURN