-
Notifications
You must be signed in to change notification settings - Fork 2
/
-gr.Nadaka
executable file
·100 lines (84 loc) · 4.2 KB
/
-gr.Nadaka
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Bol Processor BP3 compatible with version BP2.9.8
// Grammar file saved as "-gr.Nadaka". Date: 2022-02-18 16:45:05
// This grammar was composed by Nadaka ([email protected]) in July 1997.
// This was a first attempt and there are musical mistakes. It is meant to give an
// idea of improvisation in a ‘modern’ Carnatic style.
// When Nadaka started designing the grammar he typed notes in abbreviated Indian
// notation: S, R, G, M... However, there were no octave numbers. So I wrote
// rules deciding on octaves, using Oc1, Oc2... as variables marking octave
// changes. This method is obsolete now that octave numbers are handled.
// It is recommended to enter notes from a MIDI keyboard and get them typed
// automatically by BP2, using standard names in the chosen convention.
// (Bernard)
-se.hamsad
-cs.Nadaka
ORD
// Structure
// It is clever to append a number to each variable name indicating the duration
// of the musical fragment it represents. BP2, of course, ignores these numbers.
gram#1[1] <1> S --> _scale(just intonation,0) _ins(1) Theme32 Theme32 Bridge32 Theme32 B32 Theme32 V16 V16 V16 V16 Theme32 V16 V16 V16 V16 Theme32 V16 V16 V16 V16 Theme32 V16 V16 V16 V16 Theme16 V16 Theme16 V16 Theme16 V16 Theme16 V16 Theme8 V8 Theme8 V8 Theme8 V8 Theme8 V8 Finale
gram#1[2] Finale --> Theme30 NiSaNiA95 NiSaNiB24 NiSaNiB24 NiSaNiC34 Morai49 Theme32 G _______
--------------------
RND
// Variations
gram#2[1] V16 --> Oc4 G _ G G _ G R R G _ G G _ P G R
gram#2[2] V16 --> Oc4 G R S Oc3 N P N Oc4 S R G P G R S Oc3 N Oc4 S R
gram#2[3] V16 --> Oc4 G __ R S Oc3 N Oc4 S R G __ R S Oc3 N Oc4 S R
gram#2[4] V16 --> Oc4 G _ _ P G R S R G _ _ P G R S R
gram#2[5] V16 --> Oc4 G P N Oc5 S R G P G R S Oc4 N P G R S R
gram#2[6] V8 --> Oc4 G _ G G _ P G R
gram#2[7] V8 --> Oc4 G P G R S Oc3 N Oc4 S R
gram#2[8] V8 --> Oc4 G __ R S Oc3 N Oc4 S R
gram#2[9] V8 --> Oc4 G _ _ P G R S R
gram#2[10] V8 --> Oc4 R S Oc4 N P G R S R
-------------------
ORD
// Fixed patterns
gram#3[1] NiSaNiA95 --> NiSaNiA18 P _____________ NiSaNiA18 G _____________ NiSaNiA18 R ____________
gram#3[2] Morai49 --> Oc4 P Oc5 S S S Oc4 P G R S Oc3 N Oc4 S R S Oc3 N P G R S S S S R G P Oc4 S S S R G P N P S N _ P G R N P _ G R S P G _ R S R
gram#3[3] NiSaNiA18 --> Oc4 N Oc5 S Oc4 N _ N N _ N N N N _ N N _ N N Oc5 S Oc4
gram#3[4] NiSaNiB24 --> Oc4 P N Oc5 S Oc4 P ____ P N Oc5 S Oc4 G ____ P N Oc5 S Oc4 R ____
gram#3[5] NiSaNiC34 --> Oc4 P N Oc5 S Oc4 P P N Oc5 S Oc4 G P N Oc5 S Oc4 R Oc4 P N Oc5 S Oc4 P P N Oc5 S Oc4 G P N Oc5 S Oc4 R P N Oc5 S Oc4 P N Oc5 S Oc4 G N Oc5 S Oc4 R
gram#3[6] Motto16 --> Oc4 G __ P N Oc5 S Oc4 N P N G _ P G R S Oc3 N
gram#3[7] Theme32 --> Oc4 G __ P N Oc5 S Oc4 N P N G _ P G R S Oc3 N P N __ Oc4 R __ G ____ 4
gram#3[8] Theme30 --> Oc4 G __ P N Oc5 S Oc4 N P N G _ P G R S Oc3 N P N __ Oc4 R __ G ____ 2
gram#3[9] Theme16 --> Oc4 G __ P N Oc5 S Oc4 N P N G _ P G R S Oc3 N
gram#3[10] Theme14 --> Oc4 G __ P N Oc5 S Oc4 N P N G _ P G R
gram#3[11] Theme8 --> Oc4 N G _ P G R S Oc3 N
gram#3[12] Bridge32 --> (=Bridge6)(:Bridge6)
gram#3[13] Bridge6 --> Oc4 G __ P __ N __ Oc5 R __ G _ S _
gram#3[14] B32 --> Oc4 G _ P _ N _ Oc5 R _ G _ Oc4 G P N Oc5 R G S Oc4 G P N Oc5 R G S Oc4 G P N Oc5 R G S R G S R
--------------------
ORD
gram#4[1] Oc3 S --> sa3 Oc3
gram#4[2] Oc3 R --> re3 Oc3
gram#4[3] Oc3 N --> ni3 Oc3
gram#4[4] Oc3 P --> pa3 Oc3
gram#4[5] Oc3 G --> ga3 Oc3
gram#4[6] Oc3 _ --> _ Oc3
gram#4[7] Oc4 S --> sa4 Oc4
gram#4[8] Oc4 R --> re4 Oc4
gram#4[9] Oc4 N --> ni4 Oc4
gram#4[10] Oc4 P --> pa4 Oc4
gram#4[11] Oc4 G --> ga4 Oc4
gram#4[12] Oc4 _ --> _ Oc4
gram#4[13] Oc5 S --> sa5 Oc5
gram#4[14] Oc5 R --> re5 Oc5
gram#4[15] Oc5 N --> ni5 Oc5
gram#4[16] Oc5 P --> pa5 Oc5
gram#4[17] Oc5 G --> ga5 Oc5
gram#4[18] Oc5 _ --> _ Oc5
gram#4[19] Oc3 Oc4 --> Oc4
gram#4[20] Oc4 Oc5 --> Oc5
gram#4[21] Oc3 Oc5 --> Oc5
gram#4[22] Oc5 Oc4 --> Oc4
gram#4[23] Oc4 Oc3 --> Oc3
gram#4[24] Oc5 Oc3 --> Oc3
--------------------
ORD
// Here we erase the unused variable to get a clean output. BP2 would otherwise
// ignore a left-over variable except if it finds a glosssary rule that rewrites
// it.
gram#5[1] Oc3 --> lambda
gram#5[2] Oc4 --> lambda
gram#5[3] Oc5 --> lambda