# Computing ‘ideas’

A com­po­si­tion in Carnatic musi­cal style by Srikumar K. Subramanian, June 1995. Name: "-gr.trial.mohanam".

This is a non-stop impro­vi­sa­tion of vari­a­tions in a style sim­i­lar to Carnatic music. The com­po­si­tion­al approach here is to decide that each vari­a­tion should con­tain 32 notes and can use up to 20 "ideas". To do this, a flag called Ideas is set to 20 at the begin­ning, and it is decreased by 1 unit in cer­tain rules (such as GRAM#2[2]) or 2 units in oth­ers (such as GRAM#2[3]). See the Flags in gram­mars for more details.

Rules in sub­gram­mar #3 can only be can­di­dates if there are few ideas left, but they do not reduce ideas.

Rules in sub­gram­mar #6 use wild­cards to cre­ate patterns.

Rules in sub­gram­mar #9 cre­ate "effects" by chang­ing velocities.

ORD
GRAM#1[1] S --> _transpose(-5) I /Ideas=20/ /Notes=32/ /NumR=1/

RND
GRAM#2[1] <0> I --> I /NumR+1/ [This rule is only fired on a _goto()]
GRAM#2[2] <20> /Ideas-1/ I --> R1 A R2
GRAM#2[3] <50> /Ideas-2/ I --> A B
GRAM#2[4] <20> /Ideas-1/ I --> R1 B R2
GRAM#2[5] <50> /Ideas-2/ I --> B A

RND
GRAM#3[1] <100> /Ideas/ /NumR-1/ A --> I
GRAM#3[2] <100> /Ideas/ /NumR-1/ B --> I
GRAM#3[3] <1> /Ideas/ I --> I _goto(2,1)

SUB1
GRAM#4[1] I --> lamb­da

RND
GRAM#5[1] <50-12> /Notes-4/ A --> P4
GRAM#5[2] <50-9> /Notes-3/ A --> P3
GRAM#5[3] <50-10> /Notes-2/ A --> P2
GRAM#5[4] <50-12> /Notes-4/ B --> Q4
GRAM#5[5] <50-9> /Notes-3/ B --> Q3
GRAM#5[6] <50-10> /Notes-2/ B --> Q2

RND
GRAM#6[1] R1 ?1 R2 --> ?1 ?1
GRAM#6[2] R1 ?1 ?2 R2 --> ?1 ?2 ?1 ?2
GRAM#6[3] R1 ?1 ?2 ?3 R2 --> ?1 ?2 ?3 ?1 ?2 ?3
GRAM#6[4] R1 ?1 ?2 ?3 ?4 R2 --> ?1 ?2 ?3 ?4 ?1 ?2 ?3 ?4
GRAM#6[5] R1 ?1 ?2 ?3 ?4 ?5 R2 --> ?1 ?2 ?3 ?4 ?5 ?1 ?2 ?3 ?4 ?5

RND
GRAM#7[1] P4 --> P41
GRAM#7[2] P4 --> P42
GRAM#7[3] P4 --> P43
GRAM#7[4] P4 --> P44
GRAM#7[5] P3 --> P31
GRAM#7[6] P3 --> P32
GRAM#7[7] P2 --> P21
GRAM#7[8] P2 --> P22
GRAM#7[9] Q4 --> Q41
GRAM#7[10] Q4 --> Q42
GRAM#7[11] Q4 --> Q43
GRAM#7[12] Q4 --> Q44
GRAM#7[13] Q3 --> Q31
GRAM#7[14] Q3 --> Q32
GRAM#7[15] Q3 --> Q33
GRAM#7[16] Q3 --> Q34
GRAM#7[17] Q2 --> Q21
GRAM#7[18] Q2 --> Q22
GRAM#7[19] Q2 --> Q23

RND
GRAM#8[1] R1 --> lamb­da
GRAM#8[2] R2 --> lamb­da

RND [Effects]
GRAM#9[1] Str ?1 --> _vel(110) ?1 _vel(64)
GRAM#9[2] Step3Up ?1 ?2 ?3 --> _vel(80) ?1 _vel(95) ?2 _vel(110) ?3 _vel(64)
GRAM#9[3] Step3Dn ?1 ?2 ?3 --> _vel(110) ?1 _vel(95) ?2 _vel(80) ?3 _vel(64)
GRAM#9[4] P41 --> sa6 re6 ga6 pa6
GRAM#9[5] P42 --> re6 ga6 pa6 ga6
GRAM#9[7] P43 --> dha6 pa6 ga6 pa6
GRAM#9[9] P44 --> ga6 Str dha6 pa6 Str dha6
GRAM#9[11] P31 --> ga6 pa6 dha6
GRAM#9[13] P32 --> sa6 ga6 re6
GRAM#9[14] P33 --> Str ga6 re6 sa6
GRAM#9[15] P34 --> Str sa7 dha6 pa6
GRAM#9[17] P21 --> ga6 pa6
GRAM#9[19] P22 --> sa6 Str ga6
GRAM#9[20] Q41 --> Str ga6 _ re6 sa6
GRAM#9[22] Q42 --> Str re6 ga6 _ re6
GRAM#9[24] Q43 --> ga6 _ pa6 Str dha6
GRAM#9[26] Q44 --> Str sa6 re6 _ ga6
GRAM#9[28] Q31 --> sa6 _ re6
GRAM#9[29] Q32 --> sa6 _ ga6
GRAM#9[30] Q33 --> Str sa7 dha6
GRAM#9[32] Q34 --> ga6 _ _
GRAM#9[34] Q21 --> ga6 ga6
GRAM#9[36] Q22 --> pa6 pa6
GRAM#9[38] Q23 --> Str dha6 Str dha6

In the ‘Improvize’ mode, the val­ues of flags and rule weights can be car­ried over from one vari­a­tion to the next. This allows them to be used to trigger/inhibit events at any dis­tance from those that created/modified them.

The fol­low­ing out­put was record­ed on a Roland D-50 synthesiser.