bpm 80
meter 4
unit 1/4
key c4 maj
mode diatonic
Subject ::= 1 2 3 4 2 3 1 5 _2
Subject
Neighbor ::= '1 _2 7 _2 '1 _2
Answer ::= '2 Subject@~4 Neighbor@~4
Open ::= {- Subject Neighbor Answer,
- _9 Subject@-12 ..5 _2 - _5 Subject[0:7]@~-3}
Open
assert Answer == '2 5 6 7 '1 6 7 5 '2 _2 '5 _2 '4 _2 '5 _2
Mirror ::= Subject[0:7]^@~4
Subject Mirror
assert Mirror == 5 4 3 2 4 3 5
Spin ::= '3 Mirror@~8 '5 Mirror@~6 '3 Mirror@~4
Fall ::= '1 7 6 5 4# 6 5 7
Episode ::= {Spin Fall,
1 _2 .7 _2 1 _2 2 _2 3 _2 .5 _2 .6 _2 .7 _2 1 _2 .3 _2 .4# _2 .5 _2 .6 _2 .7 _2 1 _4}
Episode
assert Mirror@~4 == '2 '1 7 6 '1 7 '2
Bend ::= Mirror@~5 \5 {'1#}
Minor ::= {7 _2 - _7 Mirror@~4 '1 _2 - _7 Bend,
.5 Mirror 4 _2 3 _2 4 _2 2 _2 3 Mirror@~1 5 _2 4 _2 5 _2 3 _2}
Minor
assert Bend == '3 '2 '1 7 '2 '1# '3
Rise ::= Subject[0:7]@~7 '2 Subject[0:7]@~9 '4 Subject[0:7]@~11
Arp ::= ''1 _2 '5 _2 '3 _2
Return ::= {- Rise Arp '2 '1,
.6 _2 .7b _2 .6 _2 .5 _2 .4 _2 2 _2 1 _2 .7b _2 .6 _2 4 _2 3 _2 2 _2 3 Subject[0:7]@~-6}
Close ::= {'1 _16, 5 _16, 3 _16, .1 _16, ..1 _16}
Return Close
assert Rise[:3] == Subject[0:7]@~7 '2 Subject[0:7]@~9
- Subject Neighbor Answer
Spin Fall
6 _2 2 _2 '1 _3 '2 7 6 5 4# 3 5 4# 6
5 7 6 '1 7 '2 '1 '3 '2 7/2 '1/2 '2 '5 7 _2 6 5
5 _2 - _7 Subject[0:7]@~4
4# _2 - _7 Subject[0:7]@~5
7 _2 - _7 Mirror@~4
'1 _2 - _7 Bend
'2 _2 '1# _2 '2 _2 '3 _2 '4 _2 6 _2 7 _2 '1# _2
'2 _2 4# _2 5# _2 6 _2 7 _2 '1 _2 '2 _5
Subject[0:7]@4 '3 '2 '1 '3 '2 '1 7 '2
'1 '6 '5# '7 '6 '3 '4 '2 5# '4 '3 '2 '1 _2 7 6
6 Mirror@~8 '5 _9 Subject[0:7]@~9 '4 _9
Mirror@~7 '4 _9 Subject[0:7]@~8 '3 _9 Rise[:3]
assert Subject[0:7]@4 == 3 4# 5# 6 4# 5# 3
Rise[3:] Arp '2 '1
'1 7b 6 5 4 6 5 7b 6 7 '1 3 2 '1 4 7
{3 _16, 5 _16, '1 _16}