gitara 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,8 @@
1
+ 0.4.2 - 2012-03-17
2
+ ------------------
3
+
4
+ * [#18] I should be able to specify if a bar is a partial.
5
+
1
6
  0.4.1 - 2012-03-04
2
7
  ------------------
3
8
 
@@ -52,6 +52,21 @@ Bars are the smallest expressions in Gitara, that is, a gitara file must have at
52
52
 
53
53
  With Gitara, it's easier to write notes using [absolute note names](http://lilypond.org/doc/v2.12/Documentation/user/lilypond/Writing-pitches#Absolute-octave-entry) instead of relative note names. This is because we'll be reusing bars and other Gitara expressions (see Reusing bars below).
54
54
 
55
+ Partial measures
56
+ ----------------
57
+
58
+ To indicate that a bar is a [partial measure](http://lilypond.org/doc/v2.12/Documentation/user/lilypond-learning/Advanced-rhythmic-commands#Partial-measure), call `partial <duration>`:
59
+
60
+ chords :G8, 'r8-"G"'
61
+
62
+ bar do
63
+ partial 8
64
+ notes "<g/3>8"
65
+ notes "r8"
66
+ chords :G8
67
+ end
68
+
69
+ As shown by the example, the durations of the chords and notes within the bar must also have one-eighth durations in order for the tab to render properly.
55
70
 
56
71
  Multiple voices
57
72
  ---------------
@@ -16,6 +16,7 @@
16
16
  % Chord Sets
17
17
 
18
18
  cChordSetG = { r1-"G" }
19
+ cChordSetGEight = { r8-"G" }
19
20
  cChordSetC = { r1-"C" }
20
21
  cChordSetASeven = { r1-"A7" }
21
22
  cChordSetEm = { r1-"Em" }
@@ -24,145 +25,180 @@ cChordSetD = { r1-"D" }
24
25
  %-----------------------------------------------------------------------
25
26
  % Bars
26
27
 
27
- vOneBarVerseLineOneBarOne = { r2. r8 <g\3>8 }
28
- vTwoBarVerseLineOneBarOne = { r1 }
29
- cBarVerseLineOneBarOne = { \cChordSetG }
30
-
31
- vOneBarVerseLineOneBarTwo = { <a\3>16\glissando <b\3>16 <b\3>4 r16 <a\3>16\glissando <b\3>4. <a\3>16( <g\3>16) }
32
- vTwoBarVerseLineOneBarTwo = { r1 }
33
- cBarVerseLineOneBarTwo = { \cChordSetG }
34
-
35
- vOneBarVerseLineOneBarThree = { <a\3>8( <g\3>4) <cs'\2>4 <g\3>4. }
36
- vTwoBarVerseLineOneBarThree = { \skip 8 r8 <e\4>4 <a,\5>4 <e\4>8 <b,\5>8 }
37
- cBarVerseLineOneBarThree = { \cChordSetASeven }
38
-
39
- vOneBarVerseLineOneBarFour = { r4 <g\3>8 <g\3>8 <g\3>8 <a\3>8 <c'\2>8 <b~\2>8 }
40
- vTwoBarVerseLineOneBarFour = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
41
- cBarVerseLineOneBarFour = { \cChordSetC }
42
-
43
- vOneBarVerseLineOneBarFive = { <b\2>8 <g\3>8 <b\2>8 <b\2>16 <g\3>16 \skip 16 <b\2>16 <g\3>16 \skip 16 <b\2>16 <g\3>16 \skip 8 }
44
- vTwoBarVerseLineOneBarFive = { <g,\6>4 <d\4>4 <d\4>16 \skip 16 \skip 16 <d\4>16 \skip 16 \skip 16 <d\4>8 }
45
- cBarVerseLineOneBarFive = { \cChordSetG }
46
-
47
- vOneBarVerseLineTwoBarOne = { r8 <g\3>8 <b\2>8 <b\2>16 <b\2>8 <b\2>16( <d'\2>8) <e'\1>4 }
48
- vTwoBarVerseLineTwoBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
49
- cBarVerseLineTwoBarOne = { \cChordSetG }
50
-
51
- vOneBarVerseLineTwoBarTwo = { <a\3>16( <g\3>16)( <a\3>4) <cs'\2>4 <a\3>4 <b\2>8 }
52
- vTwoBarVerseLineTwoBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
53
- cBarVerseLineTwoBarTwo = { \cChordSetASeven }
54
-
55
- vOneBarVerseLineTwoBarThree = { <c'\2>4. <d'\2>4 <c'\2>4 <b~\2>8 }
56
- vTwoBarVerseLineTwoBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
57
- cBarVerseLineTwoBarThree = { \cChordSetC }
58
-
59
- vOneBarVerseLineTwoBarFour = { <b\2>8 <g\3>4 <g\3>4 <b\2>8 <b\2>8 <c'\2>8 }
60
- vTwoBarVerseLineTwoBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
61
- cBarVerseLineTwoBarFour = { \cChordSetG }
62
-
63
- vOneBarVerseLineThreeBarOne = { <d'\2>4. <d'\2>4 <d'\2>4 <cs'~\2>8 }
64
- vTwoBarVerseLineThreeBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
65
- cBarVerseLineThreeBarOne = { \cChordSetG }
66
-
67
- vOneBarVerseLineThreeBarTwo = { <cs'\2>8 <a\3>4 <a\3>4 <a\3>4 <b\2>8 }
68
- vTwoBarVerseLineThreeBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
69
- cBarVerseLineThreeBarTwo = { \cChordSetASeven }
70
-
71
- vOneBarVerseLineThreeBarThree = { <c'\2>4 <c'\2>8 <d'\2>4 <e'\1>4 <b~\2>8 }
72
- vTwoBarVerseLineThreeBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
73
- cBarVerseLineThreeBarThree = { \cChordSetC }
74
-
75
- vOneBarVerseLineThreeBarFour = { <b\2>8 <d'\2>4 <d'\2>4 <b\2>16 <a\3>8 <g\3>16( <a\3>8) }
76
- vTwoBarVerseLineThreeBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
77
- cBarVerseLineThreeBarFour = { \cChordSetG }
78
-
79
- vOneBarVerseLineFourBarOne = { <b\2>4. <b\2>4 <b\2>16 <b\2>16 r16 <a\3>16 <b\2>8 }
80
- vTwoBarVerseLineFourBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
81
- cBarVerseLineFourBarOne = { \cChordSetG }
82
-
83
- vOneBarVerseLineFourBarTwo = { <a\3>16( <g\3>16) <e\4>4 <cs'\2>4 <g\3>16 <g\3>16 r16 <g\3>16 <g\3>8 }
84
- vTwoBarVerseLineFourBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
85
- cBarVerseLineFourBarTwo = { \cChordSetASeven }
86
-
87
- vOneBarVerseLineFourBarThree = { <g\3>4. <g\3>4 <a\3>8 <c'\2>8 <b~\2>8 }
88
- vTwoBarVerseLineFourBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
89
- cBarVerseLineFourBarThree = { \cChordSetC }
90
-
91
- vOneBarVerseLineFourBarFour = { <b\2>8 <g\3>4 <g\3>4 <g\3>4. }
92
- vTwoBarVerseLineFourBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <g,\6>8 <fs,\6>8 }
93
- cBarVerseLineFourBarFour = { \cChordSetG }
94
-
95
- vOneBarRefrainLineOneBarOne = { r4 <g\3>8 <g\3>8 <g\3>8 <g\3>8 <e'\1>8 <d'~\2>8 }
96
- vTwoBarRefrainLineOneBarOne = { <e,\6>4 <e\4>4 <e,\6>4 <e\4>4 }
97
- cBarRefrainLineOneBarOne = { \cChordSetEm }
98
-
99
- vOneBarRefrainLineOneBarTwo = { <d'\2>8 <b\2>4 <a\3>4 <a\3>4 <b\2>8 }
100
- vTwoBarRefrainLineOneBarTwo = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
101
- cBarRefrainLineOneBarTwo = { \cChordSetG }
102
-
103
- vOneBarRefrainLineOneBarThree = { <c'\2>4 <c'\2>8 <d'\2>4 <g\3>8 <a\3>8 <b~\2>8 }
104
- vTwoBarRefrainLineOneBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
105
- cBarRefrainLineOneBarThree = { \cChordSetC }
106
-
107
- vOneBarRefrainLineOneBarFour = { <b\2>8 <a\3>4 <a\3>4 <a\3>4. }
108
- vTwoBarRefrainLineOneBarFour = { <a,\5>4 <d\4>4 <a,\5>4 <g,\6>8 <fs,\6>8 }
109
- cBarRefrainLineOneBarFour = { \cChordSetD }
110
-
111
- vOneBarRefrainLineTwoBarOne = { r4 <g\3>8 <g\3>8 <g\3>8 <g\3>8 <e'\1>8 <d'~\2>8 }
112
- vTwoBarRefrainLineTwoBarOne = { <e,\6>4 <e\4>4 <e,\6>4 <e\4>4 }
113
- cBarRefrainLineTwoBarOne = { \cChordSetEm }
114
-
115
- vOneBarRefrainLineTwoBarTwo = { <d'\2>8 <b\2>4 <a\3>4 <a\3>4 <b\2>8 }
116
- vTwoBarRefrainLineTwoBarTwo = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
117
- cBarRefrainLineTwoBarTwo = { \cChordSetG }
118
-
119
- vOneBarRefrainLineTwoBarThree = { <c'\2>4 <c'\2>8 <d'\2>4 <e'\1>4 <e'~\1>8 }
120
- vTwoBarRefrainLineTwoBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
121
- cBarRefrainLineTwoBarThree = { \cChordSetC }
122
-
123
- vOneBarRefrainLineTwoBarFour = { <e'\1>8 <d'\2>4 <d'\2>4 <d'\2>4 <d'\2>8 }
124
- vTwoBarRefrainLineTwoBarFour = { <a,\5>4 <d\4>4 <a,\5>4 <d\4>4 }
125
- cBarRefrainLineTwoBarFour = { \cChordSetD }
126
-
127
- vOneBarRefrainLineTwoBarFive = { <a\3 d'\2 >8 <a\3 d'\2 >8 <a\3 d'\2 >8 <a\3 d'\2 >8 <a\3 d'\2 >8 <b\2>8 <b\2>8 <c'\2>8 }
128
- vTwoBarRefrainLineTwoBarFive = { <d\4>8 <d\4>8 <d\4>8 <d\4>8 <d\4>8 \skip 8 \skip 8 \skip 8 }
129
- cBarRefrainLineTwoBarFive = { \cChordSetD }
130
-
131
- vOneBarChorusLineOneBarOne = { <d'\2>4. <g'\1>4 <d'\2>4 <cs'~\2>8 }
132
- vTwoBarChorusLineOneBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
133
- cBarChorusLineOneBarOne = { \cChordSetG }
134
-
135
- vOneBarChorusLineOneBarTwo = { <cs'\2>4 <g'\1>8 <g'\1>4 <cs'\2>4 <c'~\2>8 }
136
- vTwoBarChorusLineOneBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
137
- cBarChorusLineOneBarTwo = { \cChordSetASeven }
138
-
139
- vOneBarChorusLineOneBarThree = { <c'\2>4. <d'\2>4 <e'\1>4 <b~\2>8 }
140
- vTwoBarChorusLineOneBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
141
- cBarChorusLineOneBarThree = { \cChordSetC }
142
-
143
- vOneBarChorusLineOneBarFour = { <b\2>8 <d'\2>4 <d'\2>4 <b\2>8 <b\2>8 <c'\2>8 }
144
- vTwoBarChorusLineOneBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
145
- cBarChorusLineOneBarFour = { \cChordSetG }
146
-
147
- vOneBarChorusLineTwoBarOne = { <d'\2>4. <g'\1>4 <d'\2>4 <cs'~\2>8 }
148
- vTwoBarChorusLineTwoBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
149
- cBarChorusLineTwoBarOne = { \cChordSetG }
150
-
151
- vOneBarChorusLineTwoBarTwo = { <cs'\2>4 <g'\1>8 <g'\1>4 <cs'\2>4 <c'~\2>8 }
152
- vTwoBarChorusLineTwoBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
153
- cBarChorusLineTwoBarTwo = { \cChordSetASeven }
154
-
155
- vOneBarChorusLineTwoBarThree = { <c'\2>4. <d'\2>4 <c'\2>4 <b~\2>8 }
156
- vTwoBarChorusLineTwoBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
157
- cBarChorusLineTwoBarThree = { \cChordSetC }
158
-
159
- vOneBarChorusLineTwoBarFour = { <b\2>8 <g\3>4 <g\3>4 <g\3>4 <g\3>8 }
160
- vTwoBarChorusLineTwoBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
161
- cBarChorusLineTwoBarFour = { \cChordSetG }
162
-
163
- vOneBarChorusLineTwoBarFive = { <g\3 d'\2 g'\1 >1 }
164
- vTwoBarChorusLineTwoBarFive = { <g,\6 b,\5 d\4 >1 }
165
- cBarChorusLineTwoBarFive = { \cChordSetG }
28
+ vOneBarVerseLineOneBarOne = { \partial 8 <g\3>8 }
29
+ vTwoBarVerseLineOneBarOne = { \partial 8 r8 }
30
+ cBarVerseLineOneBarOne = { \partial 8 \cChordSetGEight }
31
+ sBarVerseLineOneBarOne = { \partial 8 r8^"Verse" }
32
+
33
+ vOneBarVerseLineOneBarTwo = { <a\3>16\glissando <b\3>16 <b\3>4 r16 <a\3>16\glissando <b\3>4. <a\3>16( <g\3>16) }
34
+ vTwoBarVerseLineOneBarTwo = { r1 }
35
+ cBarVerseLineOneBarTwo = { \cChordSetG }
36
+ sBarVerseLineOneBarTwo = { r1 }
37
+
38
+ vOneBarVerseLineOneBarThree = { <a\3>8( <g\3>4) <cs'\2>4 <g\3>4. }
39
+ vTwoBarVerseLineOneBarThree = { \skip 8 r8 <e\4>4 <a,\5>4 <e\4>8 <b,\5>8 }
40
+ cBarVerseLineOneBarThree = { \cChordSetASeven }
41
+ sBarVerseLineOneBarThree = { r1 }
42
+
43
+ vOneBarVerseLineOneBarFour = { r4 <g\3>8 <g\3>8 <g\3>8 <a\3>8 <c'\2>8 <b~\2>8 }
44
+ vTwoBarVerseLineOneBarFour = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
45
+ cBarVerseLineOneBarFour = { \cChordSetC }
46
+ sBarVerseLineOneBarFour = { r1 }
47
+
48
+ vOneBarVerseLineOneBarFive = { <b\2>8 <g\3>8 <b\2>8 <b\2>16 <g\3>16 \skip 16 <b\2>16 <g\3>16 \skip 16 <b\2>16 <g\3>16 \skip 8 }
49
+ vTwoBarVerseLineOneBarFive = { <g,\6>4 <d\4>4 <d\4>16 \skip 16 \skip 16 <d\4>16 \skip 16 \skip 16 <d\4>8 }
50
+ cBarVerseLineOneBarFive = { \cChordSetG }
51
+ sBarVerseLineOneBarFive = { r1 }
52
+
53
+ vOneBarVerseLineTwoBarOne = { r8 <g\3>8 <b\2>8 <b\2>16 <b\2>8 <b\2>16( <d'\2>8) <e'\1>4 }
54
+ vTwoBarVerseLineTwoBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
55
+ cBarVerseLineTwoBarOne = { \cChordSetG }
56
+ sBarVerseLineTwoBarOne = { r1 }
57
+
58
+ vOneBarVerseLineTwoBarTwo = { <a\3>16( <g\3>16)( <a\3>4) <cs'\2>4 <a\3>4 <b\2>8 }
59
+ vTwoBarVerseLineTwoBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
60
+ cBarVerseLineTwoBarTwo = { \cChordSetASeven }
61
+ sBarVerseLineTwoBarTwo = { r1 }
62
+
63
+ vOneBarVerseLineTwoBarThree = { <c'\2>4. <d'\2>4 <c'\2>4 <b~\2>8 }
64
+ vTwoBarVerseLineTwoBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
65
+ cBarVerseLineTwoBarThree = { \cChordSetC }
66
+ sBarVerseLineTwoBarThree = { r1 }
67
+
68
+ vOneBarVerseLineTwoBarFour = { <b\2>8 <g\3>4 <g\3>4 <b\2>8 <b\2>8 <c'\2>8 }
69
+ vTwoBarVerseLineTwoBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
70
+ cBarVerseLineTwoBarFour = { \cChordSetG }
71
+ sBarVerseLineTwoBarFour = { r1 }
72
+
73
+ vOneBarVerseLineThreeBarOne = { <d'\2>4. <d'\2>4 <d'\2>4 <cs'~\2>8 }
74
+ vTwoBarVerseLineThreeBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
75
+ cBarVerseLineThreeBarOne = { \cChordSetG }
76
+ sBarVerseLineThreeBarOne = { r1 }
77
+
78
+ vOneBarVerseLineThreeBarTwo = { <cs'\2>8 <a\3>4 <a\3>4 <a\3>4 <b\2>8 }
79
+ vTwoBarVerseLineThreeBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
80
+ cBarVerseLineThreeBarTwo = { \cChordSetASeven }
81
+ sBarVerseLineThreeBarTwo = { r1 }
82
+
83
+ vOneBarVerseLineThreeBarThree = { <c'\2>4 <c'\2>8 <d'\2>4 <e'\1>4 <b~\2>8 }
84
+ vTwoBarVerseLineThreeBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
85
+ cBarVerseLineThreeBarThree = { \cChordSetC }
86
+ sBarVerseLineThreeBarThree = { r1 }
87
+
88
+ vOneBarVerseLineThreeBarFour = { <b\2>8 <d'\2>4 <d'\2>4 <b\2>16 <a\3>8 <g\3>16( <a\3>8) }
89
+ vTwoBarVerseLineThreeBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
90
+ cBarVerseLineThreeBarFour = { \cChordSetG }
91
+ sBarVerseLineThreeBarFour = { r1 }
92
+
93
+ vOneBarVerseLineFourBarOne = { <b\2>4. <b\2>4 <b\2>16 <b\2>16 r16 <a\3>16 <b\2>8 }
94
+ vTwoBarVerseLineFourBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
95
+ cBarVerseLineFourBarOne = { \cChordSetG }
96
+ sBarVerseLineFourBarOne = { r1 }
97
+
98
+ vOneBarVerseLineFourBarTwo = { <a\3>16( <g\3>16) <e\4>4 <cs'\2>4 <g\3>16 <g\3>16 r16 <g\3>16 <g\3>8 }
99
+ vTwoBarVerseLineFourBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
100
+ cBarVerseLineFourBarTwo = { \cChordSetASeven }
101
+ sBarVerseLineFourBarTwo = { r1 }
102
+
103
+ vOneBarVerseLineFourBarThree = { <g\3>4. <g\3>4 <a\3>8 <c'\2>8 <b~\2>8 }
104
+ vTwoBarVerseLineFourBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
105
+ cBarVerseLineFourBarThree = { \cChordSetC }
106
+ sBarVerseLineFourBarThree = { r1 }
107
+
108
+ vOneBarVerseLineFourBarFour = { <b\2>8 <g\3>4 <g\3>4 <g\3>4. }
109
+ vTwoBarVerseLineFourBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <g,\6>8 <fs,\6>8 }
110
+ cBarVerseLineFourBarFour = { \cChordSetG }
111
+ sBarVerseLineFourBarFour = { r1 }
112
+
113
+ vOneBarRefrainLineOneBarOne = { r4 <g\3>8 <g\3>8 <g\3>8 <g\3>8 <e'\1>8 <d'~\2>8 }
114
+ vTwoBarRefrainLineOneBarOne = { <e,\6>4 <e\4>4 <e,\6>4 <e\4>4 }
115
+ cBarRefrainLineOneBarOne = { \cChordSetEm }
116
+ sBarRefrainLineOneBarOne = { r1^"Refrain" }
117
+
118
+ vOneBarRefrainLineOneBarTwo = { <d'\2>8 <b\2>4 <a\3>4 <a\3>4 <b\2>8 }
119
+ vTwoBarRefrainLineOneBarTwo = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
120
+ cBarRefrainLineOneBarTwo = { \cChordSetG }
121
+ sBarRefrainLineOneBarTwo = { r1 }
122
+
123
+ vOneBarRefrainLineOneBarThree = { <c'\2>4 <c'\2>8 <d'\2>4 <g\3>8( <a\3>8) <b~\2>8 }
124
+ vTwoBarRefrainLineOneBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
125
+ cBarRefrainLineOneBarThree = { \cChordSetC }
126
+ sBarRefrainLineOneBarThree = { r1 }
127
+
128
+ vOneBarRefrainLineOneBarFour = { <b\2>8 <a\3>4 <a\3>4 <a\3>4. }
129
+ vTwoBarRefrainLineOneBarFour = { <a,\5>4 <d\4>4 <a,\5>4 <g,\6>8 <fs,\6>8 }
130
+ cBarRefrainLineOneBarFour = { \cChordSetD }
131
+ sBarRefrainLineOneBarFour = { r1 }
132
+
133
+ vOneBarRefrainLineTwoBarOne = { r4 <g\3>8 <g\3>8 <g\3>8 <g\3>8 <e'\1>8 <d'~\2>8 }
134
+ vTwoBarRefrainLineTwoBarOne = { <e,\6>4 <e\4>4 <e,\6>4 <e\4>4 }
135
+ cBarRefrainLineTwoBarOne = { \cChordSetEm }
136
+ sBarRefrainLineTwoBarOne = { r1 }
137
+
138
+ vOneBarRefrainLineTwoBarTwo = { <d'\2>8 <b\2>4 <a\3>4 <a\3>4 <b\2>8 }
139
+ vTwoBarRefrainLineTwoBarTwo = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
140
+ cBarRefrainLineTwoBarTwo = { \cChordSetG }
141
+ sBarRefrainLineTwoBarTwo = { r1 }
142
+
143
+ vOneBarRefrainLineTwoBarThree = { <c'\2>4 <c'\2>8 <d'\2>4 <e'\1>4 <e'~\1>8 }
144
+ vTwoBarRefrainLineTwoBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
145
+ cBarRefrainLineTwoBarThree = { \cChordSetC }
146
+ sBarRefrainLineTwoBarThree = { r1 }
147
+
148
+ vOneBarRefrainLineTwoBarFour = { <e'\1>8 <d'\2>4 <d'\2>4 <d'\2>4 <d'\2>8 }
149
+ vTwoBarRefrainLineTwoBarFour = { <a,\5>4 <d\4>4 <a,\5>4 <d\4>4 }
150
+ cBarRefrainLineTwoBarFour = { \cChordSetD }
151
+ sBarRefrainLineTwoBarFour = { r1 }
152
+
153
+ vOneBarRefrainLineTwoBarFive = { <a\3 d'\2 >8 <a\3 d'\2 >8 <a\3 d'\2 >8 <a\3 d'\2 >8 <a\3 d'\2 >8 <b\2>8 <b\2>8 <c'\2>8 }
154
+ vTwoBarRefrainLineTwoBarFive = { <d\4>8 <d\4>8 <d\4>8 <d\4>8 <d\4>8 \skip 8 \skip 8 \skip 8 }
155
+ cBarRefrainLineTwoBarFive = { \cChordSetD }
156
+ sBarRefrainLineTwoBarFive = { r1 }
157
+
158
+ vOneBarChorusLineOneBarOne = { <d'\2>4. <g'\1>4 <d'\2>4 <cs'~\2>8 }
159
+ vTwoBarChorusLineOneBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
160
+ cBarChorusLineOneBarOne = { \cChordSetG }
161
+ sBarChorusLineOneBarOne = { r1^"Chorus" }
162
+
163
+ vOneBarChorusLineOneBarTwo = { <cs'\2>4 <g'\1>8 <g'\1>4 <cs'\2>4 <c'~\2>8 }
164
+ vTwoBarChorusLineOneBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
165
+ cBarChorusLineOneBarTwo = { \cChordSetASeven }
166
+ sBarChorusLineOneBarTwo = { r1 }
167
+
168
+ vOneBarChorusLineOneBarThree = { <c'\2>4. <d'\2>4 <e'\1>4 <b~\2>8 }
169
+ vTwoBarChorusLineOneBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
170
+ cBarChorusLineOneBarThree = { \cChordSetC }
171
+ sBarChorusLineOneBarThree = { r1 }
172
+
173
+ vOneBarChorusLineOneBarFour = { <b\2>8 <d'\2>4 <d'\2>4 <b\2>8 <b\2>8 <c'\2>8 }
174
+ vTwoBarChorusLineOneBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
175
+ cBarChorusLineOneBarFour = { \cChordSetG }
176
+ sBarChorusLineOneBarFour = { r1 }
177
+
178
+ vOneBarChorusLineTwoBarOne = { <d'\2>4. <g'\1>4 <d'\2>4 <cs'~\2>8 }
179
+ vTwoBarChorusLineTwoBarOne = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
180
+ cBarChorusLineTwoBarOne = { \cChordSetG }
181
+ sBarChorusLineTwoBarOne = { r1 }
182
+
183
+ vOneBarChorusLineTwoBarTwo = { <cs'\2>4 <g'\1>8 <g'\1>4 <cs'\2>4 <c'~\2>8 }
184
+ vTwoBarChorusLineTwoBarTwo = { <a,\5>4 <e\4>4 <a,\5>4 <e\4>4 }
185
+ cBarChorusLineTwoBarTwo = { \cChordSetASeven }
186
+ sBarChorusLineTwoBarTwo = { r1 }
187
+
188
+ vOneBarChorusLineTwoBarThree = { <c'\2>4. <d'\2>4 <c'\2>4 <b~\2>8 }
189
+ vTwoBarChorusLineTwoBarThree = { <c\5>4 <e\4>4 <c\5>4 <e\4>4 }
190
+ cBarChorusLineTwoBarThree = { \cChordSetC }
191
+ sBarChorusLineTwoBarThree = { r1 }
192
+
193
+ vOneBarChorusLineTwoBarFour = { <b\2>8 <g\3>4 <g\3>4 <g\3>4 <g\3>8 }
194
+ vTwoBarChorusLineTwoBarFour = { <g,\6>4 <d\4>4 <g,\6>4 <d\4>4 }
195
+ cBarChorusLineTwoBarFour = { \cChordSetG }
196
+ sBarChorusLineTwoBarFour = { r1 }
197
+
198
+ vOneBarChorusLineTwoBarFive = { <g\3 d'\2 g'\1 >1 }
199
+ vTwoBarChorusLineTwoBarFive = { <g,\6 b,\5 d\4 >1 }
200
+ cBarChorusLineTwoBarFive = { \cChordSetG }
201
+ sBarChorusLineTwoBarFive = { r1 }
166
202
 
167
203
 
168
204
  %-----------------------------------------------------------------------
@@ -171,34 +207,42 @@ cBarChorusLineTwoBarFive = { \cChordSetG }
171
207
  vOneLineVerseLineOne = { \vOneBarVerseLineOneBarOne \vOneBarVerseLineOneBarTwo \vOneBarVerseLineOneBarThree \vOneBarVerseLineOneBarFour \vOneBarVerseLineOneBarFive \break }
172
208
  vTwoLineVerseLineOne = { \vTwoBarVerseLineOneBarOne \vTwoBarVerseLineOneBarTwo \vTwoBarVerseLineOneBarThree \vTwoBarVerseLineOneBarFour \vTwoBarVerseLineOneBarFive \break }
173
209
  cLineVerseLineOne = { \cBarVerseLineOneBarOne \cBarVerseLineOneBarTwo \cBarVerseLineOneBarThree \cBarVerseLineOneBarFour \cBarVerseLineOneBarFive }
210
+ sLineVerseLineOne = { \sBarVerseLineOneBarOne \sBarVerseLineOneBarTwo \sBarVerseLineOneBarThree \sBarVerseLineOneBarFour \sBarVerseLineOneBarFive }
174
211
 
175
212
  vOneLineVerseLineTwo = { \vOneBarVerseLineTwoBarOne \vOneBarVerseLineTwoBarTwo \vOneBarVerseLineTwoBarThree \vOneBarVerseLineTwoBarFour \break }
176
213
  vTwoLineVerseLineTwo = { \vTwoBarVerseLineTwoBarOne \vTwoBarVerseLineTwoBarTwo \vTwoBarVerseLineTwoBarThree \vTwoBarVerseLineTwoBarFour \break }
177
214
  cLineVerseLineTwo = { \cBarVerseLineTwoBarOne \cBarVerseLineTwoBarTwo \cBarVerseLineTwoBarThree \cBarVerseLineTwoBarFour }
215
+ sLineVerseLineTwo = { \sBarVerseLineTwoBarOne \sBarVerseLineTwoBarTwo \sBarVerseLineTwoBarThree \sBarVerseLineTwoBarFour }
178
216
 
179
217
  vOneLineVerseLineThree = { \vOneBarVerseLineThreeBarOne \vOneBarVerseLineThreeBarTwo \vOneBarVerseLineThreeBarThree \vOneBarVerseLineThreeBarFour \break }
180
218
  vTwoLineVerseLineThree = { \vTwoBarVerseLineThreeBarOne \vTwoBarVerseLineThreeBarTwo \vTwoBarVerseLineThreeBarThree \vTwoBarVerseLineThreeBarFour \break }
181
219
  cLineVerseLineThree = { \cBarVerseLineThreeBarOne \cBarVerseLineThreeBarTwo \cBarVerseLineThreeBarThree \cBarVerseLineThreeBarFour }
220
+ sLineVerseLineThree = { \sBarVerseLineThreeBarOne \sBarVerseLineThreeBarTwo \sBarVerseLineThreeBarThree \sBarVerseLineThreeBarFour }
182
221
 
183
222
  vOneLineVerseLineFour = { \vOneBarVerseLineFourBarOne \vOneBarVerseLineFourBarTwo \vOneBarVerseLineFourBarThree \vOneBarVerseLineFourBarFour \break }
184
223
  vTwoLineVerseLineFour = { \vTwoBarVerseLineFourBarOne \vTwoBarVerseLineFourBarTwo \vTwoBarVerseLineFourBarThree \vTwoBarVerseLineFourBarFour \break }
185
224
  cLineVerseLineFour = { \cBarVerseLineFourBarOne \cBarVerseLineFourBarTwo \cBarVerseLineFourBarThree \cBarVerseLineFourBarFour }
225
+ sLineVerseLineFour = { \sBarVerseLineFourBarOne \sBarVerseLineFourBarTwo \sBarVerseLineFourBarThree \sBarVerseLineFourBarFour }
186
226
 
187
227
  vOneLineRefrainLineOne = { \vOneBarRefrainLineOneBarOne \vOneBarRefrainLineOneBarTwo \vOneBarRefrainLineOneBarThree \vOneBarRefrainLineOneBarFour \break }
188
228
  vTwoLineRefrainLineOne = { \vTwoBarRefrainLineOneBarOne \vTwoBarRefrainLineOneBarTwo \vTwoBarRefrainLineOneBarThree \vTwoBarRefrainLineOneBarFour \break }
189
229
  cLineRefrainLineOne = { \cBarRefrainLineOneBarOne \cBarRefrainLineOneBarTwo \cBarRefrainLineOneBarThree \cBarRefrainLineOneBarFour }
230
+ sLineRefrainLineOne = { \sBarRefrainLineOneBarOne \sBarRefrainLineOneBarTwo \sBarRefrainLineOneBarThree \sBarRefrainLineOneBarFour }
190
231
 
191
232
  vOneLineRefrainLineTwo = { \vOneBarRefrainLineTwoBarOne \vOneBarRefrainLineTwoBarTwo \vOneBarRefrainLineTwoBarThree \vOneBarRefrainLineTwoBarFour \vOneBarRefrainLineTwoBarFive \break }
192
233
  vTwoLineRefrainLineTwo = { \vTwoBarRefrainLineTwoBarOne \vTwoBarRefrainLineTwoBarTwo \vTwoBarRefrainLineTwoBarThree \vTwoBarRefrainLineTwoBarFour \vTwoBarRefrainLineTwoBarFive \break }
193
234
  cLineRefrainLineTwo = { \cBarRefrainLineTwoBarOne \cBarRefrainLineTwoBarTwo \cBarRefrainLineTwoBarThree \cBarRefrainLineTwoBarFour \cBarRefrainLineTwoBarFive }
235
+ sLineRefrainLineTwo = { \sBarRefrainLineTwoBarOne \sBarRefrainLineTwoBarTwo \sBarRefrainLineTwoBarThree \sBarRefrainLineTwoBarFour \sBarRefrainLineTwoBarFive }
194
236
 
195
237
  vOneLineChorusLineOne = { \vOneBarChorusLineOneBarOne \vOneBarChorusLineOneBarTwo \vOneBarChorusLineOneBarThree \vOneBarChorusLineOneBarFour \break }
196
238
  vTwoLineChorusLineOne = { \vTwoBarChorusLineOneBarOne \vTwoBarChorusLineOneBarTwo \vTwoBarChorusLineOneBarThree \vTwoBarChorusLineOneBarFour \break }
197
239
  cLineChorusLineOne = { \cBarChorusLineOneBarOne \cBarChorusLineOneBarTwo \cBarChorusLineOneBarThree \cBarChorusLineOneBarFour }
240
+ sLineChorusLineOne = { \sBarChorusLineOneBarOne \sBarChorusLineOneBarTwo \sBarChorusLineOneBarThree \sBarChorusLineOneBarFour }
198
241
 
199
242
  vOneLineChorusLineTwo = { \vOneBarChorusLineTwoBarOne \vOneBarChorusLineTwoBarTwo \vOneBarChorusLineTwoBarThree \vOneBarChorusLineTwoBarFour \vOneBarChorusLineTwoBarFive \break }
200
243
  vTwoLineChorusLineTwo = { \vTwoBarChorusLineTwoBarOne \vTwoBarChorusLineTwoBarTwo \vTwoBarChorusLineTwoBarThree \vTwoBarChorusLineTwoBarFour \vTwoBarChorusLineTwoBarFive \break }
201
244
  cLineChorusLineTwo = { \cBarChorusLineTwoBarOne \cBarChorusLineTwoBarTwo \cBarChorusLineTwoBarThree \cBarChorusLineTwoBarFour \cBarChorusLineTwoBarFive }
245
+ sLineChorusLineTwo = { \sBarChorusLineTwoBarOne \sBarChorusLineTwoBarTwo \sBarChorusLineTwoBarThree \sBarChorusLineTwoBarFour \sBarChorusLineTwoBarFive }
202
246
 
203
247
 
204
248
  %-----------------------------------------------------------------------
@@ -207,14 +251,17 @@ cLineChorusLineTwo = { \cBarChorusLineTwoBarOne \cBarChorusLineTwoBarTwo \cBarCh
207
251
  vOneStanzaVerse = { \vOneLineVerseLineOne \vOneLineVerseLineTwo \vOneLineVerseLineThree \vOneLineVerseLineFour }
208
252
  vTwoStanzaVerse = { \vTwoLineVerseLineOne \vTwoLineVerseLineTwo \vTwoLineVerseLineThree \vTwoLineVerseLineFour }
209
253
  cStanzaVerse = { \cLineVerseLineOne \cLineVerseLineTwo \cLineVerseLineThree \cLineVerseLineFour }
254
+ sStanzaVerse = { \sLineVerseLineOne \sLineVerseLineTwo \sLineVerseLineThree \sLineVerseLineFour }
210
255
 
211
256
  vOneStanzaRefrain = { \vOneLineRefrainLineOne \vOneLineRefrainLineTwo }
212
257
  vTwoStanzaRefrain = { \vTwoLineRefrainLineOne \vTwoLineRefrainLineTwo }
213
258
  cStanzaRefrain = { \cLineRefrainLineOne \cLineRefrainLineTwo }
259
+ sStanzaRefrain = { \sLineRefrainLineOne \sLineRefrainLineTwo }
214
260
 
215
261
  vOneStanzaChorus = { \vOneLineChorusLineOne \vOneLineChorusLineTwo }
216
262
  vTwoStanzaChorus = { \vTwoLineChorusLineOne \vTwoLineChorusLineTwo }
217
263
  cStanzaChorus = { \cLineChorusLineOne \cLineChorusLineTwo }
264
+ sStanzaChorus = { \sLineChorusLineOne \sLineChorusLineTwo }
218
265
 
219
266
 
220
267
  %-----------------------------------------------------------------------
@@ -223,6 +270,7 @@ cStanzaChorus = { \cLineChorusLineOne \cLineChorusLineTwo }
223
270
  vOneScoreTabOneScoreOne = { \vOneStanzaVerse \vOneStanzaRefrain \vOneStanzaChorus }
224
271
  vTwoScoreTabOneScoreOne = { \vTwoStanzaVerse \vTwoStanzaRefrain \vTwoStanzaChorus }
225
272
  cScoreTabOneScoreOne = { \cStanzaVerse \cStanzaRefrain \cStanzaChorus }
273
+ sScoreTabOneScoreOne = { \sStanzaVerse \sStanzaRefrain \sStanzaChorus }
226
274
 
227
275
 
228
276
  %-----------------------------------------------------------------------
@@ -242,11 +290,7 @@ vTwo = {
242
290
  %-----------------------------------------------------------------------
243
291
  % Stanza Headings
244
292
 
245
- stanzaHeadings = {
246
- r1^"Verse" r r r r r r r r r r r r r r r r
247
- r1^"Refrain" r r r r r r r r
248
- r1^"Chorus" r r r r r r r r
249
- }
293
+ stanzaHeadings = { \sScoreTabOneScoreOne }
250
294
 
251
295
  %-----------------------------------------------------------------------
252
296
  % Chord Headings
@@ -8,6 +8,7 @@ Gitara.define do
8
8
  tempo "4 = 90"
9
9
 
10
10
  chords :G, 'r1-"G"'
11
+ chords :G8, 'r8-"G"'
11
12
  chords :C, 'r1-"C"'
12
13
  chords :A7, 'r1-"A7"'
13
14
  chords :Em, 'r1-"Em"'
@@ -17,9 +18,10 @@ Gitara.define do
17
18
  stanza "Verse" do
18
19
  line do
19
20
  bar do
20
- notes "r2. r8 <g/3>8"
21
- notes "r1"
22
- chords :G
21
+ partial 8
22
+ notes "<g/3>8"
23
+ notes "r8"
24
+ chords :G8
23
25
  end
24
26
 
25
27
  bar do
@@ -0,0 +1,167 @@
1
+ \version "2.12.3"
2
+ \include "english.ly"
3
+
4
+ \paper {
5
+ indent = #0
6
+ }
7
+
8
+ \header {
9
+ title = "Huling El Bimbo"
10
+ composer = "Eraserheads"
11
+ arranger = "Arranged by George Mendoza"
12
+ instrument = "Guitar (capo on first fret)"
13
+ }
14
+
15
+ %-----------------------------------------------------------------------
16
+ % Chord Sets
17
+
18
+ cChordSetG = { r1-"G" }
19
+ cChordSetGEight = { r8-"G" }
20
+ cChordSetC = { r1-"C" }
21
+ cChordSetASeven = { r1-"A7" }
22
+ cChordSetEm = { r1-"Em" }
23
+ cChordSetD = { r1-"D" }
24
+
25
+ %-----------------------------------------------------------------------
26
+ % Bars
27
+
28
+ vOneBarVerseLineOneBarOne = { \partial 8 <g\3>8 }
29
+ vTwoBarVerseLineOneBarOne = { \partial 8 r8 }
30
+ cBarVerseLineOneBarOne = { \partial 8 \cChordSetGEight }
31
+ sBarVerseLineOneBarOne = { \partial 8 r8^"Verse" }
32
+
33
+ vOneBarVerseLineOneBarTwo = { <a\3>16\glissando <b\3>16 <b\3>4 r16 <a\3>16\glissando <b\3>4. <a\3>16( <g\3>16) }
34
+ vTwoBarVerseLineOneBarTwo = { r1 }
35
+ cBarVerseLineOneBarTwo = { \cChordSetG }
36
+ sBarVerseLineOneBarTwo = { r1 }
37
+
38
+
39
+ %-----------------------------------------------------------------------
40
+ % Lines
41
+
42
+ vOneLineVerseLineOne = { \vOneBarVerseLineOneBarOne \vOneBarVerseLineOneBarTwo \break }
43
+ vTwoLineVerseLineOne = { \vTwoBarVerseLineOneBarOne \vTwoBarVerseLineOneBarTwo \break }
44
+ cLineVerseLineOne = { \cBarVerseLineOneBarOne \cBarVerseLineOneBarTwo }
45
+ sLineVerseLineOne = { \sBarVerseLineOneBarOne \sBarVerseLineOneBarTwo }
46
+
47
+
48
+ %-----------------------------------------------------------------------
49
+ % Stanzas
50
+
51
+ vOneStanzaVerse = { \vOneLineVerseLineOne }
52
+ vTwoStanzaVerse = { \vTwoLineVerseLineOne }
53
+ cStanzaVerse = { \cLineVerseLineOne }
54
+ sStanzaVerse = { \sLineVerseLineOne }
55
+
56
+
57
+ %-----------------------------------------------------------------------
58
+ % Scores
59
+
60
+ vOneScoreTabOneScoreOne = { \vOneStanzaVerse }
61
+ vTwoScoreTabOneScoreOne = { \vTwoStanzaVerse }
62
+ cScoreTabOneScoreOne = { \cStanzaVerse }
63
+ sScoreTabOneScoreOne = { \sStanzaVerse }
64
+
65
+
66
+ %-----------------------------------------------------------------------
67
+ % Voices
68
+
69
+ vOne = {
70
+ \transposition cs''
71
+ \vOneScoreTabOneScoreOne
72
+ }
73
+
74
+ vTwo = {
75
+ \transposition cs'
76
+ \vTwoScoreTabOneScoreOne
77
+ }
78
+
79
+
80
+ %-----------------------------------------------------------------------
81
+ % Stanza Headings
82
+
83
+ stanzaHeadings = { \sScoreTabOneScoreOne }
84
+
85
+ %-----------------------------------------------------------------------
86
+ % Chord Headings
87
+
88
+ chordHeadings = { \cScoreTabOneScoreOne }
89
+
90
+ %-----------------------------------------------------------------------
91
+
92
+ \score {
93
+ \new StaffGroup <<
94
+ \new Staff <<
95
+ \tempo 4 = 90
96
+
97
+ \clef "treble_8"
98
+
99
+ \new Voice \with { \remove Rest_engraver } {
100
+ \stanzaHeadings
101
+ }
102
+
103
+ \new Voice {
104
+ \voiceOne
105
+ \vOne
106
+ }
107
+ \new Voice {
108
+ \voiceTwo
109
+ \vTwo
110
+ }
111
+ >>
112
+
113
+ \new TabStaff <<
114
+ \new TabVoice {
115
+ \slurUp
116
+ \vOne
117
+ }
118
+ \new TabVoice {
119
+ \slurUp
120
+ \vTwo
121
+ }
122
+ \new TabVoice {
123
+ \chordHeadings
124
+ }
125
+ >>
126
+ >>
127
+
128
+ \layout {
129
+ \context { \Staff
130
+ \override TimeSignature #'style = #'numbered
131
+ \override StringNumber #'transparent = ##t
132
+ }
133
+ \context { \TabStaff
134
+ \override TimeSignature #'style = #'numbered
135
+ }
136
+ \context { \Voice
137
+ \remove Slur_engraver
138
+ }
139
+ \context { \TabVoice
140
+ \remove Dots_engraver
141
+ \remove Stem_engraver
142
+ \remove Rest_engraver
143
+ }
144
+ }
145
+ }
146
+
147
+ % showLastLength = R1*4
148
+ \score {
149
+ \new Staff \with {midiInstrument = #"acoustic guitar (nylon)"} <<
150
+ \tempo 4 = 90
151
+
152
+ \clef "treble_8"
153
+
154
+ \new Voice {
155
+ \unfoldRepeats {
156
+ \vOne
157
+ }
158
+ }
159
+ \new Voice {
160
+ \unfoldRepeats {
161
+ \vTwo
162
+ }
163
+ }
164
+ >>
165
+
166
+ \midi {}
167
+ }
@@ -0,0 +1,35 @@
1
+ Gitara.define do
2
+ title "Huling El Bimbo"
3
+ composer "Eraserheads"
4
+ arranger "Arranged by George Mendoza"
5
+ instrument "Guitar (capo on first fret)"
6
+ midi_instrument "acoustic guitar (nylon)"
7
+ transposition "cs"
8
+ tempo "4 = 90"
9
+
10
+ chords :G, 'r1-"G"'
11
+ chords :G8, 'r8-"G"'
12
+ chords :C, 'r1-"C"'
13
+ chords :A7, 'r1-"A7"'
14
+ chords :Em, 'r1-"Em"'
15
+ chords :D, 'r1-"D"'
16
+
17
+ score do
18
+ stanza "Verse" do
19
+ line do
20
+ bar do
21
+ partial 8
22
+ notes "<g/3>8"
23
+ notes "r8"
24
+ chords :G8
25
+ end
26
+
27
+ bar do
28
+ notes "<a/3>16/glissando <b/3>16 <b/3>4 r16 <a/3>16/glissando <b/3>4. <a/3>16( <g/3>16)"
29
+ notes "r1"
30
+ chords :G
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -26,35 +26,35 @@ cChordSetFD = { r4-"F" r r-"D" r }
26
26
  %-----------------------------------------------------------------------
27
27
  % Bars
28
28
 
29
- vOneBarBeganIt = { \skip 4 <a\3 c'\2 >8 <g\3>8 \skip 4 <g\3 c'\2 >8 <g\3>8 }
30
- vTwoBarBeganIt = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
31
- cBarBeganIt = { \cChordSetFC }
32
- sBarBeganIt = { r1 }
33
-
34
- vOneBarItsNot = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>16( <a\3>16) }
35
- vTwoBarItsNot = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
36
- cBarItsNot = { \cChordSetFC }
37
- sBarItsNot = { r1 }
38
-
39
- vOneBarItThough = { r8 <d'\2>16( <c'\2>16) r8 <a\3>16 <c'\2>16 r8 <d'\2>16( <c'\2>16) r8 <a\3>8 }
40
- vTwoBarItThough = { <f\4>4 <f\4>4 <d\4>4 <d\4>4 }
41
- cBarItThough = { \cChordSetFD }
42
- sBarItThough = { r1 }
43
-
44
- vOneBarWhatYouThought = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>8 }
45
- vTwoBarWhatYouThought = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
46
- cBarWhatYouThought = { \cChordSetFC }
47
- sBarWhatYouThought = { r1 }
48
-
49
- vOneBarWhenYouFirst = { <e'\1>8 <d'\2>16( <c'\2>8) <a\3>8. <c'\2>4 <a\3>8 <c'\2>8 }
50
- vTwoBarWhenYouFirst = { <a,\5>4 <a,\5>8 <e\4>4 <a,\5>4 \skip 8 }
51
- cBarWhenYouFirst = { \cChordSetAm }
52
- sBarWhenYouFirst = { r1 }
53
-
54
- vOneBarYouGot = { <g'\1>8 <a\3>8 <g'\1>8 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>16( <a\3>16) }
55
- vTwoBarYouGot = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
56
- cBarYouGot = { \cChordSetFC }
57
- sBarYouGot = { r1 }
29
+ vOneBarBeganIt = { \skip 4 <a\3 c'\2 >8 <g\3>8 \skip 4 <g\3 c'\2 >8 <g\3>8 }
30
+ vTwoBarBeganIt = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
31
+ cBarBeganIt = { \cChordSetFC }
32
+ sBarBeganIt = { r1 }
33
+
34
+ vOneBarItsNot = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>16( <a\3>16) }
35
+ vTwoBarItsNot = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
36
+ cBarItsNot = { \cChordSetFC }
37
+ sBarItsNot = { r1 }
38
+
39
+ vOneBarItThough = { r8 <d'\2>16( <c'\2>16) r8 <a\3>16 <c'\2>16 r8 <d'\2>16( <c'\2>16) r8 <a\3>8 }
40
+ vTwoBarItThough = { <f\4>4 <f\4>4 <d\4>4 <d\4>4 }
41
+ cBarItThough = { \cChordSetFD }
42
+ sBarItThough = { r1 }
43
+
44
+ vOneBarWhatYouThought = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>8 }
45
+ vTwoBarWhatYouThought = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
46
+ cBarWhatYouThought = { \cChordSetFC }
47
+ sBarWhatYouThought = { r1 }
48
+
49
+ vOneBarWhenYouFirst = { <e'\1>8 <d'\2>16( <c'\2>8) <a\3>8. <c'\2>4 <a\3>8 <c'\2>8 }
50
+ vTwoBarWhenYouFirst = { <a,\5>4 <a,\5>8 <e\4>4 <a,\5>4 \skip 8 }
51
+ cBarWhenYouFirst = { \cChordSetAm }
52
+ sBarWhenYouFirst = { r1 }
53
+
54
+ vOneBarYouGot = { <g'\1>8 <a\3>8 <g'\1>8 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>16( <a\3>16) }
55
+ vTwoBarYouGot = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
56
+ cBarYouGot = { \cChordSetFC }
57
+ sBarYouGot = { r1 }
58
58
 
59
59
 
60
60
  %-----------------------------------------------------------------------
@@ -44,6 +44,10 @@ module Gitara
44
44
  add Node::NoteSet.new(:value => value)
45
45
  end
46
46
 
47
+ def partial(duration)
48
+ node.specified_duration = duration
49
+ end
50
+
47
51
  def score(*names, &block)
48
52
  add_names :names => names, :node_class => Node::Score, &block
49
53
  end
@@ -1,6 +1,12 @@
1
1
  module Gitara
2
2
  module Node
3
3
  class Bar < Base
4
+ has_value :specified_duration
5
+
6
+ def duration
7
+ specified_duration || 1
8
+ end
9
+
4
10
  def first_bar_of_stanza?
5
11
  stanza && stanza.descendants(Node::Bar)[0] == self
6
12
  end
@@ -9,12 +15,16 @@ module Gitara
9
15
  children.select{|child| child.is_a?(Node::NoteSet)}
10
16
  end
11
17
 
18
+ def specified_duration_as_lilypond
19
+ specified_duration ? "\\partial #{specified_duration}" : nil
20
+ end
21
+
12
22
  def stanza
13
23
  self.ancestor(Node::Stanza)
14
24
  end
15
25
 
16
26
  def stanza_heading
17
- first_bar_of_stanza? ? %Q|r1^"#{ancestor(Node::Stanza).name}"| : "r1"
27
+ first_bar_of_stanza? ? %Q|r#{duration}^"#{ancestor(Node::Stanza).name}"| : "r#{duration}"
18
28
  end
19
29
  end
20
30
  end
@@ -1,5 +1,5 @@
1
1
  <% self.voiced_as(self.root.voices).each do |voiced_bar| %>
2
- <%= voiced_bar.definition_name %> = { <%= voiced_bar.matching_note_set.value %> }
2
+ <%= voiced_bar.definition_name %> = { <%= voiced_bar.node.specified_duration_as_lilypond %> <%= voiced_bar.matching_note_set.value %> }
3
3
  <% end %>
4
- <%= self.chorded.definition_name %> = { <%= self.chorded.value %> }
5
- <%= self.stanza_version.definition_name %> = { <%= self.stanza_version.value %> }
4
+ <%= self.chorded.definition_name %> = { <%= self.specified_duration_as_lilypond %> <%= self.chorded.value %> }
5
+ <%= self.stanza_version.definition_name %> = { <%= self.specified_duration_as_lilypond %> <%= self.stanza_version.value %> }
@@ -1,3 +1,3 @@
1
1
  module Gitara
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -1,16 +1,35 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe App do
4
- describe "export" do
5
- it "can convert a tab without a reused bar to lilypond" do
4
+ class AppTest < Valuable
5
+ has_value :name
6
+
7
+ def run
6
8
  app = FactoryGirl.build(:app)
7
- app.invoke :export, ['examples/tab.rb'], "target-directory" => test_tmp_dir.path, "run-lilypond" => false
9
+ app.invoke :export, ["examples/#{name}.rb"], "target-directory" => test_tmp_dir.path, "run-lilypond" => false
10
+ (Pow("tmp") / "new-#{name}.ly").write actual if self.expected != self.actual
11
+ end
12
+
13
+ def expected
14
+ @expected ||= Pow("examples/#{name}.ly").read
15
+ end
8
16
 
9
- example = Pow('examples/tab.ly').read
10
- actual = (test_tmp_dir / 'tab.ly').read
17
+ def actual
18
+ @actual ||= (test_tmp_dir / "#{name}.ly").read
19
+ end
20
+ end
21
+
22
+ describe "export" do
23
+ it "can convert a tab to lilypond" do
24
+ app_test = AppTest.new(:name => 'tab')
25
+ app_test.run
26
+ app_test.actual.should == app_test.expected
27
+ end
11
28
 
12
- (Pow('tmp') / 'new-tab.ly').write actual if example != actual
13
- actual.should == example
29
+ it "can convert a tab with a partial to lilypond" do
30
+ app_test = AppTest.new(:name => 'tab-with-partial')
31
+ app_test.run
32
+ app_test.actual.should == app_test.expected
14
33
  end
15
34
  end
16
35
  end
@@ -244,5 +244,16 @@ describe Gitara do
244
244
  chord_set.name.should == :Am
245
245
  end
246
246
  end
247
+
248
+ describe "partial(duration)" do
249
+ it "should set the specified duration of the bar node to duration" do
250
+ dsl = FactoryGirl.build(:dsl, :node => FactoryGirl.build(:bar))
251
+ dsl.node.specified_duration.should be_nil
252
+
253
+ dsl.partial 8
254
+
255
+ dsl.node.specified_duration.should == 8
256
+ end
257
+ end
247
258
  end
248
259
  end
@@ -32,6 +32,20 @@ describe 'Bar' do
32
32
  end
33
33
  end
34
34
 
35
+ describe "with a special_duration" do
36
+ subject { FactoryGirl.build(:bar, :specified_duration => 8) }
37
+
38
+ it "should be a partial with the stanza name if the bar is the first node of a stanza" do
39
+ stanza = FactoryGirl.build(:stanza, :name => 'Intro', :children => [subject])
40
+
41
+ subject.stanza_heading.should == 'r8^"Intro"'
42
+ end
43
+
44
+ it "should be a partial with no stanza name if the subject is not the first node of a stanza" do
45
+ subject.stanza_heading.should == 'r8'
46
+ end
47
+ end
48
+
35
49
  describe "first_bar_of_stanza?" do
36
50
  it "should be true if the bar is the first bar of a stanza" do
37
51
  bar = FactoryGirl.build(:bar)
@@ -51,4 +65,26 @@ describe 'Bar' do
51
65
  bar.should_not be_first_bar_of_stanza
52
66
  end
53
67
  end
68
+
69
+ describe "specified_duration_as_lilypond" do
70
+ it "should be \\partial specified_duration if present" do
71
+ bar = FactoryGirl.build(:bar, :specified_duration => 8)
72
+ bar.specified_duration_as_lilypond.should == '\partial 8'
73
+ end
74
+
75
+ it "should be nil if there is no specified_duration" do
76
+ bar = FactoryGirl.build(:bar, :specified_duration => nil)
77
+ bar.specified_duration_as_lilypond.should be_nil
78
+ end
79
+ end
80
+
81
+ describe "duration" do
82
+ it "should be 1 if there is no specified duration" do
83
+ FactoryGirl.build(:bar, :specified_duration => nil).duration.should == 1
84
+ end
85
+
86
+ it "should be the specified duration if present" do
87
+ FactoryGirl.build(:bar, :specified_duration => 8).duration.should == 8
88
+ end
89
+ end
54
90
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-04 00:00:00.000000000 Z
12
+ date: 2012-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: active_support
16
- requirement: &68938610 !ruby/object:Gem::Requirement
16
+ requirement: &76036530 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *68938610
24
+ version_requirements: *76036530
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: erubis
27
- requirement: &68938130 !ruby/object:Gem::Requirement
27
+ requirement: &76036310 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *68938130
35
+ version_requirements: *76036310
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: linguistics
38
- requirement: &68937660 !ruby/object:Gem::Requirement
38
+ requirement: &76036050 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *68937660
46
+ version_requirements: *76036050
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pow
49
- requirement: &68928100 !ruby/object:Gem::Requirement
49
+ requirement: &76035840 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *68928100
57
+ version_requirements: *76035840
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: thor
60
- requirement: &68927880 !ruby/object:Gem::Requirement
60
+ requirement: &76035600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *68927880
68
+ version_requirements: *76035600
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: valuable
71
- requirement: &68927660 !ruby/object:Gem::Requirement
71
+ requirement: &76035350 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *68927660
79
+ version_requirements: *76035350
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: factory_girl
82
- requirement: &68927440 !ruby/object:Gem::Requirement
82
+ requirement: &76035070 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *68927440
90
+ version_requirements: *76035070
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: guard
93
- requirement: &68927230 !ruby/object:Gem::Requirement
93
+ requirement: &75681160 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *68927230
101
+ version_requirements: *75681160
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: guard-rspec
104
- requirement: &68927020 !ruby/object:Gem::Requirement
104
+ requirement: &75680880 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *68927020
112
+ version_requirements: *75680880
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: pry
115
- requirement: &68926690 !ruby/object:Gem::Requirement
115
+ requirement: &75680640 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *68926690
123
+ version_requirements: *75680640
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rb-inotify
126
- requirement: &68926400 !ruby/object:Gem::Requirement
126
+ requirement: &75680330 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *68926400
134
+ version_requirements: *75680330
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rspec
137
- requirement: &68926120 !ruby/object:Gem::Requirement
137
+ requirement: &75680020 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,7 +142,7 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *68926120
145
+ version_requirements: *75680020
146
146
  description: A Ruby DSL for generating Lilypond guitar tablatures.
147
147
  email:
148
148
  - gsmendoza@gmail.com
@@ -167,6 +167,8 @@ files:
167
167
  - examples/eraserheads-huling-el-bimbo/tab.pdf
168
168
  - examples/eraserheads-huling-el-bimbo/tab.rb
169
169
  - examples/tab-with-bar.rb
170
+ - examples/tab-with-partial.ly
171
+ - examples/tab-with-partial.rb
170
172
  - examples/tab-with-reused-bar.rb
171
173
  - examples/tab.ly
172
174
  - examples/tab.rb