ramekin 0.1.3 → 0.1.4
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.
- checksums.yaml +4 -4
- data/lib/ramekin/meta.rb +7 -2
- data/lib/ramekin/note_aggregator.rb +6 -12
- data/lib/ramekin/renderer.rb +7 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05452ce105a35c32216d5236506aaddbe28564e7645a8f3aa53c517eaedc44db
|
4
|
+
data.tar.gz: a65a65ac28b44078bf626a141ec6ecc9b3a725b65d562f957d6c67fee2a57d0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 050f82c12f9f39d82b224cbab93244913b21cde8f08cdfe4ecd389dd6c1a97348fc9066978cce076935bcaa44f027263070461f6dd9ac12df1a8030047f888c5
|
7
|
+
data.tar.gz: a9cad79a5b20128fa0d2d8a3838af346a9c01d43635a984c2ae25ce907f0a74e1907a5ba0fe057e724e7eb7aea34ba1c6e04ee521ceb03f31898ce8d015b0477
|
data/lib/ramekin/meta.rb
CHANGED
@@ -78,9 +78,13 @@ module Ramekin
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
+
def done?
|
82
|
+
@elements.empty? && @peek.nil?
|
83
|
+
end
|
84
|
+
|
81
85
|
def parse
|
82
86
|
loop do
|
83
|
-
break if
|
87
|
+
break if done?
|
84
88
|
next!
|
85
89
|
|
86
90
|
case @current.type
|
@@ -88,7 +92,8 @@ module Ramekin
|
|
88
92
|
when :amk then @amk = @current
|
89
93
|
when :option then @options[@current.value] = true
|
90
94
|
when :w then @volume = @current
|
91
|
-
when :t, :bpm then
|
95
|
+
when :t, :bpm then
|
96
|
+
@tempo = @current; @t_with_divisor = nil
|
92
97
|
else
|
93
98
|
error! 'invalid token in header'
|
94
99
|
end
|
@@ -57,19 +57,15 @@ module Ramekin
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
def
|
61
|
-
if
|
60
|
+
def length_amk(div)
|
61
|
+
if ticks % div != 0
|
62
62
|
divisible = div == 2 ? 'even' : "divisible by #{div}"
|
63
63
|
error!("too fast! tick count must be #{divisible} at this tempo", el: self)
|
64
64
|
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def length_amk(div)
|
68
|
-
check_length!(ticks, div)
|
69
65
|
|
70
66
|
t = ticks / div
|
71
67
|
# we use l16
|
72
|
-
|
68
|
+
return '' if t == 12
|
73
69
|
KNOWN_LENGTHS.fetch(t) { "=#{t}" }
|
74
70
|
end
|
75
71
|
|
@@ -103,15 +99,13 @@ module Ramekin
|
|
103
99
|
end
|
104
100
|
|
105
101
|
def ticks
|
106
|
-
if @extensions.empty? && default_length.nil?
|
107
|
-
return 192 / 16
|
108
|
-
end
|
109
|
-
|
110
102
|
exts = @extensions
|
111
|
-
|
103
|
+
default = default_length&.value || '16'
|
104
|
+
exts = [default] if exts.empty?
|
112
105
|
|
113
106
|
base = exts.map do |ext|
|
114
107
|
ext = ext.value if Token === ext
|
108
|
+
ext ||= default
|
115
109
|
|
116
110
|
case ext
|
117
111
|
when /\A=(\d+)\z/ then $1.to_i
|
data/lib/ramekin/renderer.rb
CHANGED
@@ -297,7 +297,13 @@ module Ramekin
|
|
297
297
|
|
298
298
|
ticks = sprintf("%02x", note.ticks)
|
299
299
|
yield "$dd$#{ticks}$#{ticks}#{note.octave_amk}#{note.note.value}"
|
300
|
-
|
300
|
+
|
301
|
+
case peek
|
302
|
+
when NoteEvent
|
303
|
+
peek.extensions.concat(note.extensions)
|
304
|
+
else
|
305
|
+
yield "^=#{note.ticks}"
|
306
|
+
end
|
301
307
|
|
302
308
|
@octave = note.octave
|
303
309
|
when 'legato'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ramekin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jneen
|
8
8
|
autorequire:
|
9
9
|
bindir: gembin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-03-
|
11
|
+
date: 2025-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: strscan
|