gitara 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Guardfile +8 -0
- data/README.markdown +214 -0
- data/bin/gitara +4 -0
- data/examples/aimee-man-wise-up/aimee-man-wise-up.ly +186 -0
- data/examples/aimee-man-wise-up/aimee-man-wise-up.midi +0 -0
- data/examples/aimee-man-wise-up/aimee-man-wise-up.pdf +0 -0
- data/examples/aimee-man-wise-up/aimee-man-wise-up.rb +170 -0
- data/examples/tab-with-bar.rb +7 -0
- data/examples/tab-with-reused-bar.rb +9 -0
- data/examples/tab.ly +117 -0
- data/examples/tab.rb +43 -0
- data/gitara.gemspec +15 -5
- data/lib/gitara.rb +38 -1
- data/lib/gitara/app.rb +29 -0
- data/lib/gitara/dsl.rb +35 -0
- data/lib/gitara/id_as_word.rb +8 -0
- data/lib/gitara/node/bar.rb +9 -0
- data/lib/gitara/node/bar/voiced_node.rb +13 -0
- data/lib/gitara/node/base.rb +82 -0
- data/lib/gitara/node/base/voiced_node.rb +22 -0
- data/lib/gitara/node/line.rb +6 -0
- data/lib/gitara/node/note_set.rb +6 -0
- data/lib/gitara/node/score.rb +6 -0
- data/lib/gitara/node/tab.rb +21 -0
- data/lib/gitara/pow/base.rb +11 -0
- data/lib/gitara/template/bar.erb +3 -0
- data/lib/gitara/template/line.erb +3 -0
- data/lib/gitara/template/score.erb +3 -0
- data/lib/gitara/template/tab.erb +91 -0
- data/lib/gitara/template/voice.erb +1 -0
- data/lib/gitara/version.rb +1 -1
- data/lib/gitara/voice.rb +20 -0
- data/spec/lib/gitara/app_spec.rb +12 -0
- data/spec/lib/gitara/dsl_spec.rb +173 -0
- data/spec/lib/gitara/node/bar/voiced_node_spec.rb +17 -0
- data/spec/lib/gitara/node/bar_spec.rb +22 -0
- data/spec/lib/gitara/node/base/voiced_node_spec.rb +35 -0
- data/spec/lib/gitara/node/base_spec.rb +201 -0
- data/spec/lib/gitara/node/note_set_spec.rb +4 -0
- data/spec/lib/gitara/node/tab_spec.rb +57 -0
- data/spec/lib/gitara/voice_spec.rb +31 -0
- data/spec/lib/gitara_spec.rb +23 -0
- data/spec/spec_helper.rb +27 -0
- metadata +217 -10
data/.gitignore
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'rspec', :version => 2, :cli => "--color" do
|
5
|
+
watch(%r{^spec/.+_spec\.rb})
|
6
|
+
watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
8
|
+
end
|
data/README.markdown
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
Gitara is a Lilypond processor for guitar tablatures.
|
2
|
+
|
3
|
+
|
4
|
+
Installation
|
5
|
+
------------
|
6
|
+
|
7
|
+
gem install gitara
|
8
|
+
|
9
|
+
You need to have [lilypond](http://lilypond.org) 2.12 or higher to generate pdfs and midis.
|
10
|
+
|
11
|
+
|
12
|
+
Usage
|
13
|
+
------
|
14
|
+
|
15
|
+
gitara export PATH [OPTIONS]...
|
16
|
+
|
17
|
+
This generates a lilypond .ly file for PATH and calls lilypond to export the .ly file to pdf and midi. Please see `gitara help export` for the available options.
|
18
|
+
|
19
|
+
|
20
|
+
Syntax
|
21
|
+
------
|
22
|
+
|
23
|
+
Gitara is a Ruby DSL. A typical Gitara file will have the following structure:
|
24
|
+
|
25
|
+
Gitara.define do
|
26
|
+
score do
|
27
|
+
line do
|
28
|
+
bar do
|
29
|
+
notes "c d e f g a b c"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
Bars
|
37
|
+
----
|
38
|
+
|
39
|
+
Bars are the smallest expressions in Gitara, that is, a gitara file must have at least one bar. The notes inside a bar follow [Lilypond syntax](http://lilypond.org/doc/v2.12/Documentation/user/lilypond-learning/Simple-notation).
|
40
|
+
|
41
|
+
Gitara.define do
|
42
|
+
bar do
|
43
|
+
notes "c d e f g a b c"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
With Gitara, it's easier to write notes using [absolute note names](http://lilypond.org/doc/v2.12/Documentation/learning/absolute-note-names) instead of relative note names. This is because we'll be musical expression often in Gitara (see Reusing bars below).
|
48
|
+
|
49
|
+
|
50
|
+
Multiple voices
|
51
|
+
---------------
|
52
|
+
|
53
|
+
If the bar has more than one note line, then each note line is a voice:
|
54
|
+
|
55
|
+
Gitara.define do
|
56
|
+
bar do
|
57
|
+
notes "c d e f g a b c"
|
58
|
+
notes "c' d' e' f' g' a' b' c'"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
The tab above will play "c d e f g a b c" and "c' d' e' f' g' a' b' c'" simultaneously,
|
63
|
+
not sequentially.
|
64
|
+
|
65
|
+
|
66
|
+
Reusing bars
|
67
|
+
------------
|
68
|
+
|
69
|
+
If you want to repeat a bar, you can name the bar and call it later:
|
70
|
+
|
71
|
+
Gitara.define do
|
72
|
+
score do
|
73
|
+
bar :Intro do
|
74
|
+
notes "c d e f g a b c"
|
75
|
+
notes "c' d' e' f' g' a' b' c'"
|
76
|
+
end
|
77
|
+
|
78
|
+
bar :Intro
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
This will generate a tab with two Intro bars. It's important to group the
|
83
|
+
two bars inside a score, because...
|
84
|
+
|
85
|
+
|
86
|
+
Only the last expression under Gitara.define will be generated
|
87
|
+
--------------------------------------------------------------
|
88
|
+
|
89
|
+
When writing a tab, oftentimes you want to generate only a part of the tab for
|
90
|
+
isolation and testing. Gitara makes this easy by generating a lilypond file
|
91
|
+
only for the last expression under Gitara.define. For example:
|
92
|
+
|
93
|
+
Gitara.define do
|
94
|
+
bar do
|
95
|
+
notes "c d e f"
|
96
|
+
end
|
97
|
+
|
98
|
+
bar do
|
99
|
+
notes "g a b c"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
This tab will generate only the second bar (notes "g a b c"). If you want Gitara
|
104
|
+
to generate both bars, group them inside a score.
|
105
|
+
|
106
|
+
Gitara.define do
|
107
|
+
score do
|
108
|
+
bar do
|
109
|
+
notes "c d e f"
|
110
|
+
end
|
111
|
+
|
112
|
+
bar do
|
113
|
+
notes "g a b c"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
If you want to generate a particular bar inside the score, you can copy it after the score:
|
119
|
+
|
120
|
+
Gitara.define do
|
121
|
+
score do
|
122
|
+
bar do
|
123
|
+
notes "c d e f"
|
124
|
+
end
|
125
|
+
|
126
|
+
bar do
|
127
|
+
notes "g a b c"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
bar do
|
132
|
+
notes "c d e f"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
Or you define the bar to call later:
|
137
|
+
|
138
|
+
Gitara.define do
|
139
|
+
bar :FirstBar do
|
140
|
+
notes "c d e f"
|
141
|
+
end
|
142
|
+
|
143
|
+
score do
|
144
|
+
bar :FirstBar
|
145
|
+
|
146
|
+
bar do
|
147
|
+
notes "g a b c"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
bar :FirstBar
|
152
|
+
end
|
153
|
+
|
154
|
+
|
155
|
+
Calling multiple bars
|
156
|
+
---------------------
|
157
|
+
|
158
|
+
You can call multiple bars in a single line:
|
159
|
+
|
160
|
+
bar :BayangMagiliw, :PerlasNgSilanganan, :AlabNgPuso, :SaDibdibMoyBuhay
|
161
|
+
|
162
|
+
|
163
|
+
Lines
|
164
|
+
-----
|
165
|
+
|
166
|
+
You can group bars in a line:
|
167
|
+
|
168
|
+
line :LineOne do
|
169
|
+
bar :BayangMagiliw, :PerlasNgSilanganan, :AlabNgPuso, :SaDibdibMoyBuhay
|
170
|
+
end
|
171
|
+
|
172
|
+
Lines are manually breaked with [\\break](http://lilypond.org/doc/v2.12/Documentation/notation/line-breaking).
|
173
|
+
|
174
|
+
|
175
|
+
Notes with single quotes and backslashes
|
176
|
+
----------------------------------------
|
177
|
+
|
178
|
+
In Lilypond syntax, single quotes denote octaves while backslashes denote string numbers. So, the c note in the second string is written as
|
179
|
+
|
180
|
+
c'\2
|
181
|
+
|
182
|
+
Since a Gitara file is a Ruby program, you have to be careful with backslashes when writing notes like the one above. Ruby provides two ways (I know of) to preserve the backslash in the note above:
|
183
|
+
|
184
|
+
notes %q|c'\2|
|
185
|
+
|
186
|
+
or
|
187
|
+
|
188
|
+
notes "c'\\2"
|
189
|
+
|
190
|
+
Gitara provides a third option: it will automatically convert slashes to backslashes. This way, you can write the note above as
|
191
|
+
|
192
|
+
notes "c'/2"
|
193
|
+
|
194
|
+
Prettier and easier to search and replace.
|
195
|
+
|
196
|
+
|
197
|
+
Workflow
|
198
|
+
--------
|
199
|
+
|
200
|
+
I'm no Lilypond expert (heh). When writing a tab, I use [TuxGuitar](http://tuxguitar.herac.com.ar) to transcribe a set of notes (usually just one bar). I then export the TuxGuitar tab to lilypond so that I can get the lilypond notes. I then place the notes inside my Gitara tab. This workflow allows me to use TuxGuitar's GUI for transcribing notes while allowing me to use Gitara's features for naming bars and reusing them.
|
201
|
+
|
202
|
+
|
203
|
+
To do
|
204
|
+
-----
|
205
|
+
|
206
|
+
For version 1, I want to convert this lilypond file I wrote to Gitara format:
|
207
|
+
|
208
|
+
* [https://github.com/gsmendoza/tabs/tree/master/aimee-mann-wise-up](https://github.com/gsmendoza/tabs/tree/master/aimee-mann-wise-up)
|
209
|
+
|
210
|
+
The remaining features are:
|
211
|
+
|
212
|
+
1. Properties like the title and authors.
|
213
|
+
2. Stanza labels.
|
214
|
+
3. Chord labels
|
data/bin/gitara
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
\version "2.12.3"
|
2
|
+
\include "english.ly"
|
3
|
+
|
4
|
+
%-----------------------------------------------------------------------
|
5
|
+
% Bars
|
6
|
+
|
7
|
+
vOneBarBeforeYouSign = { r8 <d'\2>16( <c'\2>8.) <a\3>16 <c'\2>8. <d'\2>16 <e'\1>8. <g\3>8 }
|
8
|
+
vTwoBarBeforeYouSign = { <d\4>4 <d\4>4 <d\4>4 <d\4>4 }
|
9
|
+
|
10
|
+
vOneBarBeganIt = { \skip 4 <a\3 c'\2 >8 <g\3>8 \skip 4 <g\3 c'\2 >8 <g\3>8 }
|
11
|
+
vTwoBarBeganIt = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
|
12
|
+
|
13
|
+
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 }
|
14
|
+
vTwoBarItThough = { <f\4>4 <f\4>4 <d\4>4 <d\4>4 }
|
15
|
+
|
16
|
+
vOneBarFDm = { r8 <a\3>8 <c'\2>8 <a\3>8 r8 <d'\2>8 <a\3>8 <e'\1>8 }
|
17
|
+
vTwoBarFDm = { <f\4>4 <f\4>4 <d\4>2 }
|
18
|
+
|
19
|
+
vOneBarIntro = { <g'\1>8 <a\3>8 <g'\1>8 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>8 }
|
20
|
+
vTwoBarIntro = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
|
21
|
+
|
22
|
+
vOneBarItsNot = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>16( <a\3>16) }
|
23
|
+
vTwoBarItsNot = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
|
24
|
+
|
25
|
+
vOneBarItsNotGoingToStop = { <g'\1>8 <a\3>8 <g'\1>16 <g'\1>16\glissando <a'\1>4 <e'\2>4 <d'\2>16( <c'\2>16) }
|
26
|
+
vTwoBarItsNotGoingToStop = { <f\4>4 <f\4>4 <d\4>4 <d\4>4 }
|
27
|
+
|
28
|
+
vOneBarItsNotGoingToStopCcge = { <g'\1>8 <g\3>8 <g'\1>16 <g'\1>16\glissando <a'\1>4 <d'\2>4 <c'\2>8 }
|
29
|
+
vTwoBarItsNotGoingToStopCcge = { <c\5>4 <c\5>4 <g,\6>4 <e,\6>4 }
|
30
|
+
|
31
|
+
vOneBarItsNotGoingToStopCcgeTwo = { r8 <g\3>8 <e'\1>8 <g'\1>8 r8 <d'\2>4 <c'\2>8 }
|
32
|
+
vTwoBarItsNotGoingToStopCcgeTwo = { <c\5>4 <e\4>4 <g,\6>4 <e,\6>4 }
|
33
|
+
|
34
|
+
vOneBarOutro = { <g'\1>8 <a\3>8 <g'\1>8 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>8 }
|
35
|
+
vTwoBarOutro = { <a,\5>4 <a,\5>4 <c\5>4 <c\5>4 }
|
36
|
+
|
37
|
+
vOneBarPrepareAList = { <e'\1>8 <d'\2>16( <c'\2>8.) <a\3>16 <c'\2>8. <d'\2>16 <e'\1>8. <a\3>16 <e'\1>16 }
|
38
|
+
vTwoBarPrepareAList = { <a,\5>4 <a,\5>4 <a,\5>4 <a,\5>4 }
|
39
|
+
|
40
|
+
vOneBarSoJustGiveUp = { r8 <g\3>8 <c'\2>8 <a\3>8 <a\3 c'\2 g'\1 f\4 >4 <c'\3 e'\2 a'\1 >4 }
|
41
|
+
vTwoBarSoJustGiveUp = { <as,\5>4 <d\4>4 \skip 2 }
|
42
|
+
|
43
|
+
vOneBarTheresACure = { r8 <d'\2>16( <c'\2>8.) <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>8 }
|
44
|
+
vTwoBarTheresACure = { <f\4>4 <f\4>4 <c\5>4 <c\5>4 }
|
45
|
+
|
46
|
+
vOneBarTilYouWiseUp = { r8 <g\3>8 <c'\2>8 <g\3>8 <d'\2>4 <a\3>4 }
|
47
|
+
vTwoBarTilYouWiseUp = { <as,\5>4 <d\4>4 <f\4>4 <f\4>4 }
|
48
|
+
|
49
|
+
vOneBarTilYouWiseUpTwo = { r8 <g\3>8 <c'\2>8 <g\3>8 <d'\2>8 <a\3>8 r8 <c'\2>8 }
|
50
|
+
vTwoBarTilYouWiseUpTwo = { <as,\5>4 <d\4>4 <f\4>4 <f\4>4 }
|
51
|
+
|
52
|
+
vOneBarTilYouWiseUpThree = { r8 <g\3>8 <c'\2>8 <a\3>8 <d'\2>8 <e'\1>8 r8 <e'\1>8 }
|
53
|
+
vTwoBarTilYouWiseUpThree = { <as,\5>4 <d\4>4 <f\4>4 <f\4>4 }
|
54
|
+
|
55
|
+
vOneBarWhatYouThought = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <g\3>8 }
|
56
|
+
vTwoBarWhatYouThought = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
|
57
|
+
|
58
|
+
vOneBarWhenYouFirst = { <e'\1>8 <d'\2>16( <c'\2>8) <a\3>8. <c'\2>4 <a\3>8 <c'\2>8 }
|
59
|
+
vTwoBarWhenYouFirst = { <a,\5>4 <a,\5>8 <e\4>4 <a,\5>4 \skip 8 }
|
60
|
+
|
61
|
+
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) }
|
62
|
+
vTwoBarYouGot = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
|
63
|
+
|
64
|
+
vOneBarYoureSure = { r8 <g'\1>4 <a\3>16 <g'\1>8 <g\3>16 <e'\1>4 <e'\1>8 }
|
65
|
+
vTwoBarYoureSure = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
|
66
|
+
|
67
|
+
|
68
|
+
%-----------------------------------------------------------------------
|
69
|
+
% Lines
|
70
|
+
|
71
|
+
vOneLineChorusOneLineOne = { \vOneBarItsNotGoingToStop \vOneBarFDm \vOneBarItsNotGoingToStop \vOneBarFDm \break }
|
72
|
+
vTwoLineChorusOneLineOne = { \vTwoBarItsNotGoingToStop \vTwoBarFDm \vTwoBarItsNotGoingToStop \vTwoBarFDm \break }
|
73
|
+
|
74
|
+
vOneLineIntroLineOne = { \vOneBarIntro \vOneBarIntro \vOneBarIntro \vOneBarIntro \break }
|
75
|
+
vTwoLineIntroLineOne = { \vTwoBarIntro \vTwoBarIntro \vTwoBarIntro \vTwoBarIntro \break }
|
76
|
+
|
77
|
+
vOneLineVerseOneLineTwo = { \vOneBarYouGot \vOneBarWhatYouThought \vOneBarWhenYouFirst \vOneBarItThough \break }
|
78
|
+
vTwoLineVerseOneLineTwo = { \vTwoBarYouGot \vTwoBarWhatYouThought \vTwoBarWhenYouFirst \vTwoBarItThough \break }
|
79
|
+
|
80
|
+
vOneLineTabOneScoreTwentyFourLineTwo = { \vOneBarItsNot \vOneBarWhatYouThought \vOneBarWhenYouFirst \vOneBarBeganIt \break }
|
81
|
+
vTwoLineTabOneScoreTwentyFourLineTwo = { \vTwoBarItsNot \vTwoBarWhatYouThought \vTwoBarWhenYouFirst \vTwoBarBeganIt \break }
|
82
|
+
|
83
|
+
vOneLineTabOneScoreTwentyFourLineFive = { \vOneBarItsNotGoingToStopCcge \vOneBarTilYouWiseUp \vOneBarIntro \vOneBarIntro \break }
|
84
|
+
vTwoLineTabOneScoreTwentyFourLineFive = { \vTwoBarItsNotGoingToStopCcge \vTwoBarTilYouWiseUp \vTwoBarIntro \vTwoBarIntro \break }
|
85
|
+
|
86
|
+
vOneLineTabOneScoreTwentyFourLineSix = { \vOneBarYoureSure \vOneBarTheresACure \vOneBarWhenYouFirst \vOneBarBeganIt \break }
|
87
|
+
vTwoLineTabOneScoreTwentyFourLineSix = { \vTwoBarYoureSure \vTwoBarTheresACure \vTwoBarWhenYouFirst \vTwoBarBeganIt \break }
|
88
|
+
|
89
|
+
vOneLineTabOneScoreTwentyFourLineNine = { \vOneBarItsNotGoingToStopCcge \vOneBarTilYouWiseUpTwo \vOneBarIntro \vOneBarIntro \break }
|
90
|
+
vTwoLineTabOneScoreTwentyFourLineNine = { \vTwoBarItsNotGoingToStopCcge \vTwoBarTilYouWiseUpTwo \vTwoBarIntro \vTwoBarIntro \break }
|
91
|
+
|
92
|
+
vOneLineTabOneScoreTwentyFourLineTen = { \vOneBarPrepareAList \vOneBarBeforeYouSign \break }
|
93
|
+
vTwoLineTabOneScoreTwentyFourLineTen = { \vTwoBarPrepareAList \vTwoBarBeforeYouSign \break }
|
94
|
+
|
95
|
+
vOneLineTabOneScoreTwentyFourLineTwelve = { \vOneBarItsNotGoingToStopCcge \vOneBarTilYouWiseUpThree \vOneBarItsNotGoingToStopCcgeTwo \vOneBarTilYouWiseUpThree \break }
|
96
|
+
vTwoLineTabOneScoreTwentyFourLineTwelve = { \vTwoBarItsNotGoingToStopCcge \vTwoBarTilYouWiseUpThree \vTwoBarItsNotGoingToStopCcgeTwo \vTwoBarTilYouWiseUpThree \break }
|
97
|
+
|
98
|
+
vOneLineTabOneScoreTwentyFourLineThirteen = { \vOneBarItsNotGoingToStopCcgeTwo \vOneBarTilYouWiseUpThree \vOneBarItsNotGoingToStopCcgeTwo \vOneBarSoJustGiveUp \break }
|
99
|
+
vTwoLineTabOneScoreTwentyFourLineThirteen = { \vTwoBarItsNotGoingToStopCcgeTwo \vTwoBarTilYouWiseUpThree \vTwoBarItsNotGoingToStopCcgeTwo \vTwoBarSoJustGiveUp \break }
|
100
|
+
|
101
|
+
vOneLineTabOneScoreTwentyFourLineFifteen = { \vOneBarOutro \vOneBarOutro \vOneBarOutro \vOneBarOutro \break }
|
102
|
+
vTwoLineTabOneScoreTwentyFourLineFifteen = { \vTwoBarOutro \vTwoBarOutro \vTwoBarOutro \vTwoBarOutro \break }
|
103
|
+
|
104
|
+
|
105
|
+
%-----------------------------------------------------------------------
|
106
|
+
% Scores
|
107
|
+
|
108
|
+
vOneScoreTabOneScoreTwentyFour = { \vOneLineIntroLineOne \vOneLineTabOneScoreTwentyFourLineTwo \vOneLineVerseOneLineTwo \vOneLineChorusOneLineOne \vOneLineTabOneScoreTwentyFourLineFive \vOneLineTabOneScoreTwentyFourLineSix \vOneLineVerseOneLineTwo \vOneLineChorusOneLineOne \vOneLineTabOneScoreTwentyFourLineNine \vOneLineTabOneScoreTwentyFourLineTen \vOneLineChorusOneLineOne \vOneLineTabOneScoreTwentyFourLineTwelve \vOneLineTabOneScoreTwentyFourLineThirteen \vOneLineIntroLineOne \vOneLineTabOneScoreTwentyFourLineFifteen }
|
109
|
+
vTwoScoreTabOneScoreTwentyFour = { \vTwoLineIntroLineOne \vTwoLineTabOneScoreTwentyFourLineTwo \vTwoLineVerseOneLineTwo \vTwoLineChorusOneLineOne \vTwoLineTabOneScoreTwentyFourLineFive \vTwoLineTabOneScoreTwentyFourLineSix \vTwoLineVerseOneLineTwo \vTwoLineChorusOneLineOne \vTwoLineTabOneScoreTwentyFourLineNine \vTwoLineTabOneScoreTwentyFourLineTen \vTwoLineChorusOneLineOne \vTwoLineTabOneScoreTwentyFourLineTwelve \vTwoLineTabOneScoreTwentyFourLineThirteen \vTwoLineIntroLineOne \vTwoLineTabOneScoreTwentyFourLineFifteen }
|
110
|
+
|
111
|
+
|
112
|
+
%-----------------------------------------------------------------------
|
113
|
+
% Voices
|
114
|
+
|
115
|
+
vOne = { \vOneScoreTabOneScoreTwentyFour }
|
116
|
+
|
117
|
+
vTwo = { \vTwoScoreTabOneScoreTwentyFour }
|
118
|
+
|
119
|
+
|
120
|
+
\score {
|
121
|
+
\new StaffGroup <<
|
122
|
+
\new Staff <<
|
123
|
+
\tempo 4 = 75
|
124
|
+
\clef "treble_8"
|
125
|
+
|
126
|
+
\new Voice {
|
127
|
+
\voiceOne
|
128
|
+
\vOne
|
129
|
+
}
|
130
|
+
\new Voice {
|
131
|
+
\voiceTwo
|
132
|
+
\vTwo
|
133
|
+
}
|
134
|
+
>>
|
135
|
+
|
136
|
+
\new TabStaff <<
|
137
|
+
\new TabVoice {
|
138
|
+
\slurUp
|
139
|
+
\vOne
|
140
|
+
}
|
141
|
+
\new TabVoice {
|
142
|
+
\slurUp
|
143
|
+
\vTwo
|
144
|
+
}
|
145
|
+
>>
|
146
|
+
>>
|
147
|
+
|
148
|
+
\layout {
|
149
|
+
\context { \Staff
|
150
|
+
\override TimeSignature #'style = #'numbered
|
151
|
+
\override StringNumber #'transparent = ##t
|
152
|
+
}
|
153
|
+
\context { \TabStaff
|
154
|
+
\override TimeSignature #'style = #'numbered
|
155
|
+
}
|
156
|
+
\context { \Voice
|
157
|
+
\remove Slur_engraver
|
158
|
+
}
|
159
|
+
\context { \TabVoice
|
160
|
+
\remove Dots_engraver
|
161
|
+
\remove Stem_engraver
|
162
|
+
\remove Rest_engraver
|
163
|
+
}
|
164
|
+
}
|
165
|
+
}
|
166
|
+
|
167
|
+
% showLastLength = R1*4
|
168
|
+
\score {
|
169
|
+
\new Staff \with {midiInstrument = #"acoustic guitar (nylon)"} <<
|
170
|
+
\tempo 4 = 75
|
171
|
+
\clef "treble_8"
|
172
|
+
|
173
|
+
\new Voice {
|
174
|
+
\unfoldRepeats {
|
175
|
+
\vOne
|
176
|
+
}
|
177
|
+
}
|
178
|
+
\new Voice {
|
179
|
+
\unfoldRepeats {
|
180
|
+
\vTwo
|
181
|
+
}
|
182
|
+
}
|
183
|
+
>>
|
184
|
+
|
185
|
+
\midi {}
|
186
|
+
}
|
Binary file
|
Binary file
|
@@ -0,0 +1,170 @@
|
|
1
|
+
Gitara.define do
|
2
|
+
bar :BeforeYouSign do
|
3
|
+
notes "r8 <d'/2>16( <c'/2>8.) <a/3>16 <c'/2>8. <d'/2>16 <e'/1>8. <g/3>8"
|
4
|
+
notes "<d/4>4 <d/4>4 <d/4>4 <d/4>4"
|
5
|
+
end
|
6
|
+
|
7
|
+
bar :BeganIt do
|
8
|
+
notes "/skip 4 <a/3 c'/2 >8 <g/3>8 /skip 4 <g/3 c'/2 >8 <g/3>8"
|
9
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
|
10
|
+
end
|
11
|
+
|
12
|
+
bar :ItThough do
|
13
|
+
notes "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"
|
14
|
+
notes "<f/4>4 <f/4>4 <d/4>4 <d/4>4"
|
15
|
+
end
|
16
|
+
|
17
|
+
bar :FDm do
|
18
|
+
notes "r8 <a/3>8 <c'/2>8 <a/3>8 r8 <d'/2>8 <a/3>8 <e'/1>8"
|
19
|
+
notes "<f/4>4 <f/4>4 <d/4>2"
|
20
|
+
end
|
21
|
+
|
22
|
+
bar :Intro do
|
23
|
+
notes "<g'/1>8 <a/3>8 <g'/1>8 <a/3>16 <g'/1>8 <g/3>16 <e'/1>4 <g/3>8"
|
24
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
|
25
|
+
end
|
26
|
+
|
27
|
+
bar :ItsNot do
|
28
|
+
notes "r8 <g'/1>4 <a/3>16 <g'/1>8 <g/3>16 <e'/1>4 <g/3>16( <a/3>16)"
|
29
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
|
30
|
+
end
|
31
|
+
|
32
|
+
bar :ItsNotGoingToStop do
|
33
|
+
notes "<g'/1>8 <a/3>8 <g'/1>16 <g'/1>16/glissando <a'/1>4 <e'/2>4 <d'/2>16( <c'/2>16)"
|
34
|
+
notes "<f/4>4 <f/4>4 <d/4>4 <d/4>4"
|
35
|
+
end
|
36
|
+
|
37
|
+
bar :ItsNotGoingToStopCcge do
|
38
|
+
notes "<g'/1>8 <g/3>8 <g'/1>16 <g'/1>16/glissando <a'/1>4 <d'/2>4 <c'/2>8"
|
39
|
+
notes "<c/5>4 <c/5>4 <g,/6>4 <e,/6>4"
|
40
|
+
end
|
41
|
+
|
42
|
+
bar :ItsNotGoingToStopCcgeTwo do
|
43
|
+
notes "r8 <g/3>8 <e'/1>8 <g'/1>8 r8 <d'/2>4 <c'/2>8"
|
44
|
+
notes "<c/5>4 <e/4>4 <g,/6>4 <e,/6>4"
|
45
|
+
end
|
46
|
+
|
47
|
+
bar :Outro do
|
48
|
+
notes "<g'/1>8 <a/3>8 <g'/1>8 <a/3>16 <g'/1>8 <g/3>16 <e'/1>4 <g/3>8"
|
49
|
+
notes "<a,/5>4 <a,/5>4 <c/5>4 <c/5>4"
|
50
|
+
end
|
51
|
+
|
52
|
+
bar :PrepareAList do
|
53
|
+
notes "<e'/1>8 <d'/2>16( <c'/2>8.) <a/3>16 <c'/2>8. <d'/2>16 <e'/1>8. <a/3>16 <e'/1>16"
|
54
|
+
notes "<a,/5>4 <a,/5>4 <a,/5>4 <a,/5>4"
|
55
|
+
end
|
56
|
+
|
57
|
+
bar :SoJustGiveUp do
|
58
|
+
notes "r8 <g/3>8 <c'/2>8 <a/3>8 <a/3 c'/2 g'/1 f/4 >4 <c'/3 e'/2 a'/1 >4"
|
59
|
+
notes "<as,/5>4 <d/4>4 /skip 2"
|
60
|
+
end
|
61
|
+
|
62
|
+
bar :TheresACure do
|
63
|
+
notes "r8 <d'/2>16( <c'/2>8.) <a/3>16 <g'/1>8 <g/3>16 <e'/1>4 <g/3>8"
|
64
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <c/5>4"
|
65
|
+
end
|
66
|
+
|
67
|
+
bar :TilYouWiseUp do
|
68
|
+
notes "r8 <g/3>8 <c'/2>8 <g/3>8 <d'/2>4 <a/3>4"
|
69
|
+
notes "<as,/5>4 <d/4>4 <f/4>4 <f/4>4"
|
70
|
+
end
|
71
|
+
|
72
|
+
bar :TilYouWiseUpTwo do
|
73
|
+
notes "r8 <g/3>8 <c'/2>8 <g/3>8 <d'/2>8 <a/3>8 r8 <c'/2>8"
|
74
|
+
notes "<as,/5>4 <d/4>4 <f/4>4 <f/4>4"
|
75
|
+
end
|
76
|
+
|
77
|
+
bar :TilYouWiseUpThree do
|
78
|
+
notes "r8 <g/3>8 <c'/2>8 <a/3>8 <d'/2>8 <e'/1>8 r8 <e'/1>8"
|
79
|
+
notes "<as,/5>4 <d/4>4 <f/4>4 <f/4>4"
|
80
|
+
end
|
81
|
+
|
82
|
+
bar :WhatYouThought do
|
83
|
+
notes "r8 <g'/1>4 <a/3>16 <g'/1>8 <g/3>16 <e'/1>4 <g/3>8"
|
84
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
|
85
|
+
end
|
86
|
+
|
87
|
+
bar :WhenYouFirst do
|
88
|
+
notes "<e'/1>8 <d'/2>16( <c'/2>8) <a/3>8. <c'/2>4 <a/3>8 <c'/2>8"
|
89
|
+
notes "<a,/5>4 <a,/5>8 <e/4>4 <a,/5>4 /skip 8"
|
90
|
+
end
|
91
|
+
|
92
|
+
bar :YouGot do
|
93
|
+
notes "<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)"
|
94
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
|
95
|
+
end
|
96
|
+
|
97
|
+
bar :YoureSure do
|
98
|
+
notes "r8 <g'/1>4 <a/3>16 <g'/1>8 <g/3>16 <e'/1>4 <e'/1>8"
|
99
|
+
notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
|
100
|
+
end
|
101
|
+
|
102
|
+
#-----------------------------------------------------------------------
|
103
|
+
|
104
|
+
line :ChorusOneLineOne do
|
105
|
+
bar :ItsNotGoingToStop, :FDm, :ItsNotGoingToStop, :FDm
|
106
|
+
end
|
107
|
+
|
108
|
+
line :IntroLineOne do
|
109
|
+
bar :Intro, :Intro, :Intro, :Intro
|
110
|
+
end
|
111
|
+
|
112
|
+
line :VerseOneLineTwo do
|
113
|
+
bar :YouGot, :WhatYouThought, :WhenYouFirst, :ItThough
|
114
|
+
end
|
115
|
+
|
116
|
+
#-----------------------------------------------------------------------
|
117
|
+
|
118
|
+
score do
|
119
|
+
# stanza Intro do
|
120
|
+
line :IntroLineOne
|
121
|
+
|
122
|
+
# stanza "Verse 1" do
|
123
|
+
line do
|
124
|
+
bar :ItsNot, :WhatYouThought, :WhenYouFirst, :BeganIt
|
125
|
+
end
|
126
|
+
|
127
|
+
line :VerseOneLineTwo
|
128
|
+
|
129
|
+
# stanza "Chorus 1" do
|
130
|
+
line :ChorusOneLineOne
|
131
|
+
line do
|
132
|
+
bar :ItsNotGoingToStopCcge, :TilYouWiseUp, :Intro, :Intro
|
133
|
+
end
|
134
|
+
|
135
|
+
# stanza "Verse 2" do
|
136
|
+
line do
|
137
|
+
bar :YoureSure, :TheresACure, :WhenYouFirst, :BeganIt
|
138
|
+
end
|
139
|
+
|
140
|
+
line :VerseOneLineTwo
|
141
|
+
|
142
|
+
# stanza "Chorus 2" do
|
143
|
+
line :ChorusOneLineOne
|
144
|
+
line do
|
145
|
+
bar :ItsNotGoingToStopCcge, :TilYouWiseUpTwo, :Intro, :Intro
|
146
|
+
end
|
147
|
+
|
148
|
+
# stanza "Bridge" do
|
149
|
+
line do
|
150
|
+
bar :PrepareAList, :BeforeYouSign
|
151
|
+
end
|
152
|
+
|
153
|
+
# stanza "Chorus 3" do
|
154
|
+
line :ChorusOneLineOne
|
155
|
+
|
156
|
+
line do
|
157
|
+
bar :ItsNotGoingToStopCcge, :TilYouWiseUpThree, :ItsNotGoingToStopCcgeTwo, :TilYouWiseUpThree
|
158
|
+
end
|
159
|
+
|
160
|
+
line do
|
161
|
+
bar :ItsNotGoingToStopCcgeTwo, :TilYouWiseUpThree, :ItsNotGoingToStopCcgeTwo, :SoJustGiveUp
|
162
|
+
end
|
163
|
+
|
164
|
+
# stanza "Outro" do
|
165
|
+
line :IntroLineOne
|
166
|
+
line do
|
167
|
+
bar :Outro, :Outro, :Outro, :Outro
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|