Tao Particles, Unified Non-Tonics

NonTonics_origin.jpg

 

 

 

Unified Non-Tonics Part II, Tao Particles is interesting on two fronts. First, the tonal materials are those tones out of 12 not included in a diatonic scale, as shown above. So they are pentatonic. Using these 5 outside tones, I composed a series with 16 events for each of the 12 keys with a total of 160 actual events. Second, the rhythmic structure is a harmonic lattice based upon Planck's constant. Transposed up 27 octaves and scaled harmonically, it supplies the gas to unify the non-tonics in time as shown below in the sequencer screenshot. I need to go shopping for purple satin sheets.
NonTonics_screen.jpg
NonTonics_score.jpg
NonTonics_score2.jpg
 
Unified Non-Tonics, Part II Tao Particles (there are none)

REM Unified Non-Tonics Drew Lesso March 2005

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
REM Opening Monologue - Arrays

CLEAR, 200000&
midiopen 10000, 2048
REM Memory Stuff

DIM midibyte%(10000), timestamp&(10000)
REM sequencer storage

REM dimension arrays here
REM Arrays Storage
REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
REM ciround%() points to group%()
REM and hence the composition of 61 parts

DIM ciround%(61,2)

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
REM 46 groups in 158 parts; the second dimension indicates
REM how many notes per part: group%() points to pitch%()

DIM group%(158,2)

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
REM Durations for the 192 events contained in the 61 parts.

DIM tempi&(193)

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
REM 24 Non-Tonic Pitch Material MIDI note values

DIM pitch%(24,3)

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
midibyte%=0:timestamp&=0:ticks%=782:time&=0:count%=0
REM midibasic variables * * * * * * * * * * * * * * * * * * * * *

handler:
TEXTFONT 4
MENU 1,0,1, "Menu"
MENU 1,1,1, "Harmoniclunch"
MENU 1,2,1, "Play"
MENU 1,3,1, "Quit"
MENU 1,4,1, "Load Arrays"
WHILE 1
CLS :PRINT "Ready for Menu Selection"
WHILE MENU (0) <> 1: WEND
CLS
SELECT CASE MENU (1)
CASE 1 :GOSUB harmoniclunch
CASE 2 :GOSUB play
CASE 3:GOSUB quit
CASE 4:GOSUB loadarrays
END SELECT
MENU
WEND
quit:
libterm
END

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

loadarrays:

REM ciround array
FOR x = 1 TO 61
FOR y = 1 TO 2
READ ciround%(x,y)
NEXT y
NEXT x

DATA 96,97,94,91,78,80,88,88,89,89,95,95,100,98,90,90,1,16,59,56
DATA 52,55,44,43,51,47,60,60,111,108,123,128,122,121,82,81,129,130
DATA 83,83,76,76,88,88,87,84,77,77,80,78,82,81,62,64,135,134,158,157
DATA 156,145,28,29,46,45,33,36,43,44,37,42,112,117,111,108,120,118
DATA 75,73,76,76,61,61,64,62,67,65,68,72,73,75,134,135,131,133,82,81
DATA 142,144,141,136,29,28,17,27,32,30,98,100,107,104,90,90,101,101
DATA 102,102,43,44,103,103,30,32

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

REM group array
FOR x = 1 TO 158
FOR y = 1 TO 2
READ group%(x,y)
NEXT y
NEXT x

DATA 1,2,2,3,3,2,4,3,5,3,6,2,7,3,8,3,9,2,10,3,11,2,12,3,13,3,14,2,15,3,16,2
DATA 9,2,8,3,10,3,11,2,12,3,15,3,16,2,2,3,1,2,3,2,4,3,17,2,18,3,5,3,6,2,7,3
DATA 3,2,1,2,2,3,4,3,7,3,10,3,8,3,9,2,11,2,12,3,19,2,20,3,15,3,16,2,11,2,8,3
DATA 9,2,10,3,12,3,4,3,1,2,2,3,3,2,17,2,18,3,21,2,22,3,7,3,17,2,2,3,3,2,4,3
DATA 18,3,21,2,22,3,12,3,8,3,9,2,10,3,11,2,19,2,20,3,23,2,13,3,19,2,10,3
DATA 11,2,12,3,20,3,23,2,18,3,17,2,23,2,22,3,24,2,5,3,21,2,4,3,17,2,18,3
DATA 22,3,24,2,20,3,19,2,23,2,13,3,14,2,15,3,23,2,12,3,22,3,17,2,18,3,21,2
DATA 24,2,24,2,18,3,21,2,22,3,5,3,6,2,7,3,13,3,8,3,12,3,14,2,15,3,16,2,14,2
DATA 23,2,13,3,15,3,16,2,5,3,1,2,2,3,6,2,7,3,6,2,1,2,2,3,22,3,24,2,5,3,7,3
DATA 15,3,8,3,9,2,10,3,13,3,14,2,16,2,16,2,8,3,9,2,10,3,13,3,14,2,15,3,7,3
DATA 1,2,2,3,3,2,4,3,5,3,6,2

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
REM Duration Tempi Array
FOR x = 1 TO 193
READ tempi&(x)
NEXT x

DATA 0,2116,2381,907,529,1852,529,794,1191,1587,4761,3174,1587,794
DATA 1191,1587,2381,529,288,364,198,397,264,298,198,318,244,258,198
DATA 265,227,232,198,529,907,1852,3174,1587,1058,1191,794,1984,3174
DATA 1587,635,992,397,794,2381,3174,2381,2116,1587,530,953,318,556
DATA 454,794,1058,1191,1984,1270,1191,1058,2381,3174,3571,3174,1984
DATA 1270,794,3174,794,662,529,1852,907,318,454,794,1270,1984,992
DATA 635,397,907,353,511,318,378,289,312,265,273,245,246,265,489,530
DATA 318,397,424,529,318,578,1746,530,953,318,556,454,794,529,397
DATA 424,318,358,397,706,1786,3174,1746,529,596,794,1270,1984,3174
DATA 2381,2116,1058,1191,794,1270,1984,3174,1587,635,992,397,794
DATA 907,1852,3174,1984,1270,662,639,529,907,1852,794,596,529,397
DATA 463,454,529,596,397,706,1786,397,318,331,265,292,289,318,265,246
DATA 245,227,353,511,794,662,635,529,907,1852,3174,1587,2381,2116
DATA 4761,2116,2381,1587,1058,1191,794

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

REM pitch array
FOR x = 1 TO 24
FOR y = 1 TO 3
READ pitch%(x,y)
NEXT y
NEXT x

DATA 61,63,0,61,63,65,63,65,0,63,65,67,69,71,73,71,73,0
DATA 71,73,75,66,68,70,68,70,0,68,70,72,70,72,0,70,72,74
DATA 62,64,66,64,66,0,64,66,69,66,69,0,65,67,0,65,67,69
DATA 60,62,0,60,62,64,67,69,0,67,69,71,62,64,0,69,71,0

RETURN

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

harmoniclunch:

REM *** MAIN PROGRAM ***

10 tcount = 1:REM tempicount
20 tmconst& = 0
30 counter = 1
40 FOR x = 1 TO 61
80 FOR y = ciround%(x,1) TO ciround%(x,2) STEP -1
90 FOR z = 1 TO group%(y,2)
100 REM toggleon
110 LET midibyte%(counter) = 144
120 LET timestamp&(counter) = tempi&(tcount) + tmconst&
130 counter = counter +1
140 LET midibyte%(counter) = pitch%(group%(y,1),z)
150 LET timestamp&(counter) = tempi&(tcount) + tmconst&
160 counter = counter + 1
170 LET midibyte%(counter) = 67
180 LET timestamp&(counter) = tempi&(tcount) + tmconst&
190 LET tmconst& = timestamp&(counter)
200 IF z = group%(y,2) THEN LET timestamp&(counter)=timestamp&(counter)+tempi&(tcount+1)
210 counter = counter +1
220 NEXT z
230 LET tcount = tcount + 1
240 FOR z = 1 TO group%(y,2): REM toggle off
250 LET midibyte%(counter) = 144
260 LET timestamp&(counter) = tmconst& + tempi&(tcount)
270 counter = counter + 1
280 LET midibyte%(counter) = pitch%(group%(y,1),z)
290 LET timestamp&(counter) = tmconst& + tempi&(tcount)
300 counter = counter + 1
310 LET midibyte%(counter) = 0
320 LET timestamp&(counter) = tmconst& + tempi&(tcount)
330 IF z = group%(y,2) THEN LET timestamp&(counter)=timestamp&(counter)+1
340 IF z = group%(y,2) THEN LET tmconst& = timestamp&(counter)
350 counter = counter + 1
360 NEXT z
370 NEXT y
380 NEXT x
390 tracktop% = counter
400 RETURN

REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

REM Sequencer

play:
midiport 1: midiport 3
trackindex%=0
upperlimit%=tracktop%
midi 0: miditime 0: miditime ticks%: settime 0
syncstate%=2:tickfactor%=1
midifilter 1,254,254,0
midisync syncstate%,tickfactor%
WHILE trackindex% < upperlimit%
outcount count%
WHILE count% > 2040: outcount count%: WEND
midiout midibyte%(trackindex%),timestamp&(trackindex%)
trackindex% = trackindex% + 1
WEND
syncstate%=0
midisync syncstate%,tickfactor%
RETURN
nonT_relativesLNG.jpg
nonT_relFull.jpg
nonT_relMAG.jpg
nonT_ciround.jpg
nonT_harmPlank.jpg
nonT_ciroundOrd.jpg
nonT_plankTEST1.jpg
nonT_plankTEST.jpg
nonT_tempi.jpg