lydown 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lydown/parsing/lydown.treetop +7 -1
- data/lib/lydown/parsing/nodes.rb +14 -0
- data/lib/lydown/rendering/music.rb +27 -0
- data/lib/lydown/version.rb +1 -1
- data/lib/lydown/work.rb +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60fcdf6a08bf0d2bcb5696459558cc363eedd69e
|
4
|
+
data.tar.gz: 34a2c3748611306069d495586549a0de7443d133
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 866094223b9c739569ec266c621a934eccf9d0cd11ac7eb9453d682c5532ffa3e71e9624af070333fba4854213ec26547369315f969f71b4effb95b52f7899fd
|
7
|
+
data.tar.gz: 640142f2131b45050bba63b9e25e2f50d5dd477947a0519c840063e4ba4c02df93a72aa8517baabb3306a898d07c47e4e36457e8074418f31bad38e0f222d583
|
@@ -44,7 +44,7 @@ grammar Lydown
|
|
44
44
|
[ \t]+
|
45
45
|
end
|
46
46
|
rule event
|
47
|
-
(inline_command / inline_lyrics / voice_selector / barline / duration /
|
47
|
+
(inline_command / inline_lyrics / voice_selector / barline / grace_duration / duration /
|
48
48
|
chord / note / standalone_figures / rest / silence / phrasing / tie) white_space*
|
49
49
|
end
|
50
50
|
rule barline
|
@@ -55,6 +55,12 @@ grammar Lydown
|
|
55
55
|
rule duration
|
56
56
|
tuplet_value / duration_value / duration_macro
|
57
57
|
end
|
58
|
+
rule grace_duration
|
59
|
+
'$' grace_duration_type* number <GraceDuration>
|
60
|
+
end
|
61
|
+
rule grace_duration_type
|
62
|
+
[\/\^]
|
63
|
+
end
|
58
64
|
rule tuplet_value
|
59
65
|
number '%' (number '/' number)? <TupletValue>
|
60
66
|
end
|
data/lib/lydown/parsing/nodes.rb
CHANGED
@@ -77,6 +77,20 @@ module Lydown::Parsing
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
+
module GraceDuration
|
81
|
+
GRACE_KIND = {
|
82
|
+
nil => :grace,
|
83
|
+
'/' => :acciaccatura,
|
84
|
+
'^' => :appoggiatura
|
85
|
+
}
|
86
|
+
|
87
|
+
def to_stream(stream)
|
88
|
+
if text_value =~ /^\$([\/\^])?(\d+)$/
|
89
|
+
stream << {type: :grace, value: $2, kind: GRACE_KIND[$1]}
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
80
94
|
module Note
|
81
95
|
include Root
|
82
96
|
|
@@ -15,6 +15,11 @@ module Lydown::Rendering
|
|
15
15
|
@work['process/tuplet_mode'] = nil
|
16
16
|
end
|
17
17
|
|
18
|
+
if @work['process/grace_mode']
|
19
|
+
Grace.emit_grace_end(@work)
|
20
|
+
@work['process/grace_mode'] = nil
|
21
|
+
end
|
22
|
+
|
18
23
|
value = @event[:value].sub(/^[0-9]+/) {|m| LILYPOND_DURATIONS[m] || m}
|
19
24
|
|
20
25
|
if next_event && next_event[:type] == :stand_alone_figures
|
@@ -54,6 +59,28 @@ module Lydown::Rendering
|
|
54
59
|
end
|
55
60
|
end
|
56
61
|
end
|
62
|
+
|
63
|
+
class Grace < Base
|
64
|
+
def self.emit_grace_end(work)
|
65
|
+
work.emit(:music, '} ')
|
66
|
+
end
|
67
|
+
|
68
|
+
def translate
|
69
|
+
# close tuplet braces
|
70
|
+
if @work['process/grace_mode']
|
71
|
+
Grace.emit_grace_end(@work)
|
72
|
+
@work['process/grace_mode'] = nil
|
73
|
+
end
|
74
|
+
|
75
|
+
value = LILYPOND_DURATIONS[@event[:value]] || @event[:value]
|
76
|
+
|
77
|
+
@work['process/duration_values'] = [value]
|
78
|
+
@work['process/last_value'] = nil
|
79
|
+
@work['process/grace_mode'] = true
|
80
|
+
|
81
|
+
@work.emit(:music, "\\#{@event[:kind]} { ")
|
82
|
+
end
|
83
|
+
end
|
57
84
|
|
58
85
|
class Note < Base
|
59
86
|
include Notes
|
data/lib/lydown/version.rb
CHANGED
data/lib/lydown/work.rb
CHANGED
@@ -41,6 +41,9 @@ module Lydown
|
|
41
41
|
if @context['process/tuplet_mode']
|
42
42
|
Lydown::Rendering::TupletDuration.emit_tuplet_end(self)
|
43
43
|
end
|
44
|
+
if @context['process/grace_mode']
|
45
|
+
Lydown::Rendering::Grace.emit_grace_end(self)
|
46
|
+
end
|
44
47
|
|
45
48
|
if @context['process/voice_selector']
|
46
49
|
Lydown::Rendering::VoiceSelect.render_voices(self)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lydown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|