gitara 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. data/CHANGELOG.markdown +8 -1
  2. data/README.markdown +15 -21
  3. data/examples/{aimee-man-wise-up/aimee-man-wise-up.ly → aimee-man-wise-up.ly} +94 -80
  4. data/examples/aimee-man-wise-up.midi +0 -0
  5. data/examples/aimee-man-wise-up.pdf +0 -0
  6. data/examples/{aimee-man-wise-up/aimee-man-wise-up.rb → aimee-man-wise-up.rb} +7 -7
  7. data/examples/{eraserheads-huling-el-bimbo/tab.ly → eraserheads-huling-el-bimbo.ly} +27 -57
  8. data/examples/eraserheads-huling-el-bimbo.midi +0 -0
  9. data/examples/eraserheads-huling-el-bimbo.pdf +0 -0
  10. data/examples/{eraserheads-huling-el-bimbo/tab.rb → eraserheads-huling-el-bimbo.rb} +7 -7
  11. data/examples/{foo-fighters-walking-after-you/foo-fighters-walking-after-you.ly → foo-fighters-walking-after-you.ly} +19 -90
  12. data/examples/{foo-fighters-walking-after-you/foo-fighters-walking-after-you.midi → foo-fighters-walking-after-you.midi} +0 -0
  13. data/examples/foo-fighters-walking-after-you.pdf +0 -0
  14. data/examples/{foo-fighters-walking-after-you/foo-fighters-walking-after-you.rb → foo-fighters-walking-after-you.rb} +1 -1
  15. data/examples/tab-with-alternate-tuning.ly +11 -7
  16. data/examples/tab-with-alternate-tuning.midi +0 -0
  17. data/examples/tab-with-alternate-tuning.pdf +0 -0
  18. data/examples/tab-with-alternate-tuning.rb +1 -1
  19. data/examples/tab-with-chords.ly +134 -0
  20. data/examples/tab-with-chords.midi +0 -0
  21. data/examples/tab-with-chords.pdf +0 -0
  22. data/examples/tab-with-chords.rb +16 -0
  23. data/examples/tab-with-key-signature.ly +21 -7
  24. data/examples/tab-with-key-signature.midi +0 -0
  25. data/examples/tab-with-key-signature.pdf +0 -0
  26. data/examples/tab-with-key-signature.rb +2 -2
  27. data/examples/tab-with-line-with-no-break.ly +7 -12
  28. data/examples/tab-with-line-with-no-break.midi +0 -0
  29. data/examples/tab-with-line-with-no-break.pdf +0 -0
  30. data/examples/tab-with-partial.ly +25 -15
  31. data/examples/tab-with-partial.midi +0 -0
  32. data/examples/tab-with-partial.pdf +0 -0
  33. data/examples/tab-with-partial.rb +7 -7
  34. data/examples/tab-with-repeats.ly +25 -9
  35. data/examples/tab-with-repeats.midi +0 -0
  36. data/examples/tab-with-repeats.pdf +0 -0
  37. data/examples/tab-with-reused-bar-in-stanza.ly +154 -0
  38. data/examples/tab-with-reused-bar-in-stanza.midi +0 -0
  39. data/examples/tab-with-reused-bar-in-stanza.pdf +0 -0
  40. data/examples/tab-with-reused-bar-in-stanza.rb +14 -0
  41. data/examples/tab-with-time-signature.ly +27 -8
  42. data/examples/tab-with-time-signature.midi +0 -0
  43. data/examples/tab-with-time-signature.pdf +0 -0
  44. data/lib/gitara/node/bar.rb +0 -25
  45. data/lib/gitara/node/stanza.rb +22 -2
  46. data/lib/gitara/template/bar.erb +0 -1
  47. data/lib/gitara/template/chord_set.erb +1 -1
  48. data/lib/gitara/template/line.erb +0 -1
  49. data/lib/gitara/template/score.erb +2 -0
  50. data/lib/gitara/template/stanza.erb +1 -1
  51. data/lib/gitara/template/tab.erb +10 -5
  52. data/lib/gitara/version.rb +1 -1
  53. data/spec/lib/gitara/app_spec.rb +14 -39
  54. data/spec/lib/gitara/node/bar/stanza_version_spec.rb +1 -1
  55. data/spec/lib/gitara/node/bar_spec.rb +2 -58
  56. data/spec/lib/gitara/node/stanza_spec.rb +21 -1
  57. data/spec/spec_helper.rb +5 -1
  58. data/spec/support/app_tester.rb +12 -1
  59. metadata +34 -16
  60. data/examples/aimee-man-wise-up/aimee-man-wise-up.midi +0 -0
  61. data/examples/aimee-man-wise-up/aimee-man-wise-up.pdf +0 -0
  62. data/examples/eraserheads-huling-el-bimbo/tab.midi +0 -0
  63. data/examples/eraserheads-huling-el-bimbo/tab.pdf +0 -0
  64. data/examples/foo-fighters-walking-after-you/foo-fighters-walking-after-you.pdf +0 -0
  65. data/examples/tab.ly +0 -193
  66. data/examples/tab.rb +0 -67
@@ -7,12 +7,12 @@ Gitara.define do
7
7
  transposition "cs"
8
8
  tempo "4 = 90"
9
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"'
10
+ chords :G, 'g1'
11
+ chords :G8, 'g8'
12
+ chords :C, 'c1'
13
+ chords :A7, 'a1:7'
14
+ chords :Em, 'e1:m'
15
+ chords :D, 'd1'
16
16
 
17
17
  score do
18
18
  stanza "Verse" do
@@ -32,4 +32,4 @@ Gitara.define do
32
32
  end
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -1,4 +1,4 @@
1
- \version "2.12.3"
1
+ \version "2.14.2"
2
2
  \include "english.ly"
3
3
 
4
4
  \paper {
@@ -14,40 +14,50 @@
14
14
 
15
15
  %-----------------------------------------------------------------------
16
16
  % Chord Sets
17
+
18
+
17
19
  %-----------------------------------------------------------------------
18
20
  % Bars
19
21
 
20
22
  vOneBarTabOneLineOneRepeatOneBarOne = { c4 d e f }
21
23
  cBarTabOneLineOneRepeatOneBarOne = { }
22
- sBarTabOneLineOneRepeatOneBarOne = { r1 }
23
24
 
24
25
  vOneBarTabOneLineOneAlternativeOneBarOne = { d2 e }
25
26
  cBarTabOneLineOneAlternativeOneBarOne = { }
26
- sBarTabOneLineOneAlternativeOneBarOne = { r1 }
27
27
 
28
28
  vOneBarTabOneLineOneAlternativeOneBarTwo = { f2 g }
29
29
  cBarTabOneLineOneAlternativeOneBarTwo = { }
30
- sBarTabOneLineOneAlternativeOneBarTwo = { r1 }
30
+
31
+
31
32
  %-----------------------------------------------------------------------
32
33
  % Lines
33
34
 
34
35
  vOneLineTabOneLineOne = { \repeat volta 4 { \vOneBarTabOneLineOneRepeatOneBarOne } \alternative { { \vOneBarTabOneLineOneAlternativeOneBarOne } { \vOneBarTabOneLineOneAlternativeOneBarTwo } } \break }
35
36
  cLineTabOneLineOne = { \repeat volta 4 { \cBarTabOneLineOneRepeatOneBarOne } \alternative { { \cBarTabOneLineOneAlternativeOneBarOne } { \cBarTabOneLineOneAlternativeOneBarTwo } } }
36
- sLineTabOneLineOne = { \repeat volta 4 { \sBarTabOneLineOneRepeatOneBarOne } \alternative { { \sBarTabOneLineOneAlternativeOneBarOne } { \sBarTabOneLineOneAlternativeOneBarTwo } } }
37
+
38
+
37
39
  %-----------------------------------------------------------------------
38
40
  % Stanzas
41
+
42
+
39
43
  %-----------------------------------------------------------------------
40
44
  % Scores
45
+
46
+
41
47
  %-----------------------------------------------------------------------
42
48
  % Voices
43
49
 
44
50
  vOne = {
51
+
45
52
  \vOneLineTabOneLineOne
46
53
  }
54
+
55
+
47
56
  %-----------------------------------------------------------------------
48
57
  % Stanza Headings
49
58
 
50
- stanzaHeadings = { \sLineTabOneLineOne }
59
+ stanzaHeadings = {
60
+ }
51
61
 
52
62
  %-----------------------------------------------------------------------
53
63
  % Chord Headings
@@ -59,26 +69,31 @@ chordHeadings = { \cLineTabOneLineOne }
59
69
  \score {
60
70
  \new StaffGroup <<
61
71
  \new Staff <<
72
+
73
+
62
74
  \clef "treble_8"
63
75
 
76
+ \new ChordNames {
77
+ \chordHeadings
78
+ }
79
+
64
80
  \new Voice \with { \remove Rest_engraver } {
65
81
  \stanzaHeadings
66
82
  }
67
83
 
68
84
  \new Voice {
85
+
69
86
  \voiceOne
70
87
  \vOne
71
88
  }
72
89
  >>
73
90
 
74
91
  \new TabStaff <<
92
+
75
93
  \new TabVoice {
76
94
  \slurUp
77
95
  \vOne
78
96
  }
79
- \new TabVoice {
80
- \chordHeadings
81
- }
82
97
  >>
83
98
  >>
84
99
 
@@ -104,6 +119,7 @@ chordHeadings = { \cLineTabOneLineOne }
104
119
  % showLastLength = R1*4
105
120
  \score {
106
121
  \new Staff \with {midiInstrument = #"acoustic guitar (nylon)"} <<
122
+
107
123
  \clef "treble_8"
108
124
 
109
125
  \new Voice {
@@ -0,0 +1,154 @@
1
+ \version "2.14.2"
2
+ \include "english.ly"
3
+
4
+ \paper {
5
+ indent = #0
6
+ }
7
+
8
+ \header {
9
+ title = ""
10
+ composer = ""
11
+ arranger = ""
12
+ instrument = ""
13
+ }
14
+
15
+ %-----------------------------------------------------------------------
16
+ % Chord Sets
17
+
18
+
19
+ %-----------------------------------------------------------------------
20
+ % Bars
21
+
22
+ 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 }
23
+ vTwoBarIntro = { <f\4>4 <f\4>4 <c\5>4 <e\4>4 }
24
+ cBarIntro = { }
25
+
26
+
27
+ %-----------------------------------------------------------------------
28
+ % Lines
29
+
30
+ vOneLineIntroLineOne = { \vOneBarIntro \vOneBarIntro \vOneBarIntro \vOneBarIntro \break }
31
+ vTwoLineIntroLineOne = { \vTwoBarIntro \vTwoBarIntro \vTwoBarIntro \vTwoBarIntro \break }
32
+ cLineIntroLineOne = { \cBarIntro \cBarIntro \cBarIntro \cBarIntro }
33
+
34
+
35
+ %-----------------------------------------------------------------------
36
+ % Stanzas
37
+
38
+ vOneStanzaIntro = { \vOneLineIntroLineOne }
39
+ vTwoStanzaIntro = { \vTwoLineIntroLineOne }
40
+ cStanzaIntro = { \cLineIntroLineOne }
41
+ sStanzaIntro = { r1^"Intro" r1 r1 r1 }
42
+
43
+
44
+ %-----------------------------------------------------------------------
45
+ % Scores
46
+
47
+
48
+ %-----------------------------------------------------------------------
49
+ % Voices
50
+
51
+ vOne = {
52
+
53
+ \vOneStanzaIntro
54
+ }
55
+
56
+ vTwo = {
57
+
58
+ \vTwoStanzaIntro
59
+ }
60
+
61
+
62
+ %-----------------------------------------------------------------------
63
+ % Stanza Headings
64
+
65
+ stanzaHeadings = {
66
+ \sStanzaIntro
67
+ }
68
+
69
+ %-----------------------------------------------------------------------
70
+ % Chord Headings
71
+
72
+ chordHeadings = { \cStanzaIntro }
73
+
74
+ %-----------------------------------------------------------------------
75
+
76
+ \score {
77
+ \new StaffGroup <<
78
+ \new Staff <<
79
+
80
+
81
+ \clef "treble_8"
82
+
83
+ \new ChordNames {
84
+ \chordHeadings
85
+ }
86
+
87
+ \new Voice \with { \remove Rest_engraver } {
88
+ \stanzaHeadings
89
+ }
90
+
91
+ \new Voice {
92
+
93
+ \voiceOne
94
+ \vOne
95
+ }
96
+ \new Voice {
97
+
98
+ \voiceTwo
99
+ \vTwo
100
+ }
101
+ >>
102
+
103
+ \new TabStaff <<
104
+
105
+ \new TabVoice {
106
+ \slurUp
107
+ \vOne
108
+ }
109
+ \new TabVoice {
110
+ \slurUp
111
+ \vTwo
112
+ }
113
+ >>
114
+ >>
115
+
116
+ \layout {
117
+ \context { \Staff
118
+ \override TimeSignature #'style = #'numbered
119
+ \override StringNumber #'transparent = ##t
120
+ }
121
+ \context { \TabStaff
122
+ \override TimeSignature #'style = #'numbered
123
+ }
124
+ \context { \Voice
125
+ \remove Slur_engraver
126
+ }
127
+ \context { \TabVoice
128
+ \remove Dots_engraver
129
+ \remove Stem_engraver
130
+ \remove Rest_engraver
131
+ }
132
+ }
133
+ }
134
+
135
+ % showLastLength = R1*4
136
+ \score {
137
+ \new Staff \with {midiInstrument = #"acoustic guitar (nylon)"} <<
138
+
139
+ \clef "treble_8"
140
+
141
+ \new Voice {
142
+ \unfoldRepeats {
143
+ \vOne
144
+ }
145
+ }
146
+ \new Voice {
147
+ \unfoldRepeats {
148
+ \vTwo
149
+ }
150
+ }
151
+ >>
152
+
153
+ \midi {}
154
+ }
@@ -0,0 +1,14 @@
1
+ Gitara.define do
2
+ bar :Intro do
3
+ 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"
4
+ notes "<f/4>4 <f/4>4 <c/5>4 <e/4>4"
5
+ end
6
+
7
+ line :IntroLineOne do
8
+ bar :Intro, :Intro, :Intro, :Intro
9
+ end
10
+
11
+ stanza "Intro" do
12
+ line :IntroLineOne
13
+ end
14
+ end
@@ -1,4 +1,4 @@
1
- \version "2.12.3"
1
+ \version "2.14.2"
2
2
  \include "english.ly"
3
3
 
4
4
  \paper {
@@ -14,36 +14,49 @@
14
14
 
15
15
  %-----------------------------------------------------------------------
16
16
  % Chord Sets
17
+
18
+
17
19
  %-----------------------------------------------------------------------
18
20
  % Bars
19
21
 
20
22
  vOneBarCChordBarOne = { c4 e4 }
21
23
  cBarCChordBarOne = { }
22
- sBarCChordBarOne = { r4^"C chord" r4 }
23
24
 
24
25
  vOneBarCChordBarTwo = { g2 }
25
26
  cBarCChordBarTwo = { }
26
- sBarCChordBarTwo = { r4 r4 }
27
+
28
+
27
29
  %-----------------------------------------------------------------------
28
30
  % Lines
31
+
32
+
29
33
  %-----------------------------------------------------------------------
30
34
  % Stanzas
31
35
 
32
36
  vOneStanzaCChord = { \vOneBarCChordBarOne \vOneBarCChordBarTwo }
33
37
  cStanzaCChord = { \cBarCChordBarOne \cBarCChordBarTwo }
34
- sStanzaCChord = { \sBarCChordBarOne \sBarCChordBarTwo }
38
+ sStanzaCChord = { r4^"C chord" r4 r4 r4 }
39
+
40
+
35
41
  %-----------------------------------------------------------------------
36
42
  % Scores
43
+
44
+
37
45
  %-----------------------------------------------------------------------
38
46
  % Voices
39
47
 
40
48
  vOne = {
49
+
41
50
  \vOneStanzaCChord
42
51
  }
52
+
53
+
43
54
  %-----------------------------------------------------------------------
44
55
  % Stanza Headings
45
56
 
46
- stanzaHeadings = { \sStanzaCChord }
57
+ stanzaHeadings = {
58
+ \sStanzaCChord
59
+ }
47
60
 
48
61
  %-----------------------------------------------------------------------
49
62
  % Chord Headings
@@ -56,26 +69,31 @@ chordHeadings = { \cStanzaCChord }
56
69
  \new StaffGroup <<
57
70
  \new Staff <<
58
71
  \time 2/4
72
+
73
+
59
74
  \clef "treble_8"
60
75
 
76
+ \new ChordNames {
77
+ \chordHeadings
78
+ }
79
+
61
80
  \new Voice \with { \remove Rest_engraver } {
62
81
  \stanzaHeadings
63
82
  }
64
83
 
65
84
  \new Voice {
85
+
66
86
  \voiceOne
67
87
  \vOne
68
88
  }
69
89
  >>
70
90
 
71
91
  \new TabStaff <<
92
+
72
93
  \new TabVoice {
73
94
  \slurUp
74
95
  \vOne
75
96
  }
76
- \new TabVoice {
77
- \chordHeadings
78
- }
79
97
  >>
80
98
  >>
81
99
 
@@ -101,6 +119,7 @@ chordHeadings = { \cStanzaCChord }
101
119
  % showLastLength = R1*4
102
120
  \score {
103
121
  \new Staff \with {midiInstrument = #"acoustic guitar (nylon)"} <<
122
+
104
123
  \clef "treble_8"
105
124
 
106
125
  \new Voice {
@@ -5,10 +5,6 @@ module Gitara
5
5
  # @attribute $1
6
6
  has_value :specified_duration
7
7
 
8
- def first_bar_of_stanza?
9
- stanza && stanza.descendants(Node::Bar)[0] == self
10
- end
11
-
12
8
  def note_sets
13
9
  definition_children.select{|child| child.is_a?(Node::NoteSet)}
14
10
  end
@@ -17,28 +13,7 @@ module Gitara
17
13
  specified_duration ? "\\partial #{specified_duration}" : nil
18
14
  end
19
15
 
20
- def stanza
21
- self.ancestor(Node::Stanza)
22
- end
23
-
24
16
  def stanza_heading
25
- first_bar_of_stanza? ? stanza_heading_for_first_bar : stanza_heading_for_succeeding_bars
26
- end
27
-
28
- def stanza_heading_for_first_bar
29
- if specified_duration
30
- %Q|r#{specified_duration}^"#{ancestor(Node::Stanza).name}"|
31
- else
32
- ts = ancestor(Node::Tab).time_signature
33
- if ts.generates_whole_note_bars?
34
- %Q|#{ts.rest_bar_value}^"#{ancestor(Node::Stanza).name}"|
35
- else
36
- %Q|r#{ts.beat_unit}^"#{ancestor(Node::Stanza).name}" | + ("r#{ts.beat_unit} " * (ts.beats_per_bar - 1)).strip
37
- end
38
- end
39
- end
40
-
41
- def stanza_heading_for_succeeding_bars
42
17
  specified_duration ? "r#{specified_duration}" : ancestor(Node::Tab).time_signature.rest_bar_value
43
18
  end
44
19
  end