gitara 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.gitignore +4 -0
  2. data/Guardfile +8 -0
  3. data/README.markdown +214 -0
  4. data/bin/gitara +4 -0
  5. data/examples/aimee-man-wise-up/aimee-man-wise-up.ly +186 -0
  6. data/examples/aimee-man-wise-up/aimee-man-wise-up.midi +0 -0
  7. data/examples/aimee-man-wise-up/aimee-man-wise-up.pdf +0 -0
  8. data/examples/aimee-man-wise-up/aimee-man-wise-up.rb +170 -0
  9. data/examples/tab-with-bar.rb +7 -0
  10. data/examples/tab-with-reused-bar.rb +9 -0
  11. data/examples/tab.ly +117 -0
  12. data/examples/tab.rb +43 -0
  13. data/gitara.gemspec +15 -5
  14. data/lib/gitara.rb +38 -1
  15. data/lib/gitara/app.rb +29 -0
  16. data/lib/gitara/dsl.rb +35 -0
  17. data/lib/gitara/id_as_word.rb +8 -0
  18. data/lib/gitara/node/bar.rb +9 -0
  19. data/lib/gitara/node/bar/voiced_node.rb +13 -0
  20. data/lib/gitara/node/base.rb +82 -0
  21. data/lib/gitara/node/base/voiced_node.rb +22 -0
  22. data/lib/gitara/node/line.rb +6 -0
  23. data/lib/gitara/node/note_set.rb +6 -0
  24. data/lib/gitara/node/score.rb +6 -0
  25. data/lib/gitara/node/tab.rb +21 -0
  26. data/lib/gitara/pow/base.rb +11 -0
  27. data/lib/gitara/template/bar.erb +3 -0
  28. data/lib/gitara/template/line.erb +3 -0
  29. data/lib/gitara/template/score.erb +3 -0
  30. data/lib/gitara/template/tab.erb +91 -0
  31. data/lib/gitara/template/voice.erb +1 -0
  32. data/lib/gitara/version.rb +1 -1
  33. data/lib/gitara/voice.rb +20 -0
  34. data/spec/lib/gitara/app_spec.rb +12 -0
  35. data/spec/lib/gitara/dsl_spec.rb +173 -0
  36. data/spec/lib/gitara/node/bar/voiced_node_spec.rb +17 -0
  37. data/spec/lib/gitara/node/bar_spec.rb +22 -0
  38. data/spec/lib/gitara/node/base/voiced_node_spec.rb +35 -0
  39. data/spec/lib/gitara/node/base_spec.rb +201 -0
  40. data/spec/lib/gitara/node/note_set_spec.rb +4 -0
  41. data/spec/lib/gitara/node/tab_spec.rb +57 -0
  42. data/spec/lib/gitara/voice_spec.rb +31 -0
  43. data/spec/lib/gitara_spec.rb +23 -0
  44. data/spec/spec_helper.rb +27 -0
  45. metadata +217 -10
data/.gitignore CHANGED
@@ -1,4 +1,8 @@
1
1
  *.gem
2
+ *.ps
2
3
  .bundle
4
+ .geanyprj
3
5
  Gemfile.lock
6
+ files/*
4
7
  pkg/*
8
+ tmp/*
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,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gitara'
3
+
4
+ Gitara::App.start
@@ -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
+ }
@@ -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