fretboards 0.0.2 → 0.0.3
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 +5 -13
- data/lib/fretboards/fretboard.rb +14 -3
- data/lib/fretboards/renderer/svg.rb +4 -4
- data/lib/fretboards/renderer/text.rb +19 -0
- data/lib/fretboards/version.rb +1 -1
- data/test/test_text_renderer.rb +44 -0
- metadata +11 -8
checksums.yaml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
data.tar.gz: !binary |-
|
|
6
|
-
ZGRmYzc2NDc3ZTgxN2QxZGFhNjA1YmM1YWZjYjZmMzdiYTAwOGQyMg==
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 9838c847b5421215855b81ac39942b75d8757129
|
|
4
|
+
data.tar.gz: 28fd5ffbeda27ceeaa869d909b9856160e3b180c
|
|
7
5
|
SHA512:
|
|
8
|
-
metadata.gz:
|
|
9
|
-
|
|
10
|
-
MTE2MjY5MTM4M2FiZjIyNjdhNzY4NWI1NGJmMzRmODI0M2I0ZjgwYzkyOWQw
|
|
11
|
-
NTg0OTVkYmY1YWY2N2E1YmJhNzM4ZmFmZDhmOTY4YmI5ZjEwZTQ=
|
|
12
|
-
data.tar.gz: !binary |-
|
|
13
|
-
OWViNjc0NmVmZjYzODFiMmUyOTdhMmU5ODc2ZDE4MDQxZmFhY2FiM2E4M2Zi
|
|
14
|
-
ZTYyZjFhOTI1YWRmNTU2Y2U1YWZlOTI1MjY3MjQ0MzJmODI2YmM2MjkyMzUw
|
|
15
|
-
YjdmZWQ5Y2ZjYmNjNjcyMDU1MDgxNmMyM2NhOTU3MTM5MTA5MTQ=
|
|
6
|
+
metadata.gz: 176c645245285856a5470ad8c739ec24eb7a2b8e037da8b34a52e71ae0150444ee3b9405ab9d89d5b4687d6a0d438eb84352a257bbe14ceedd3cb8ae4a406262
|
|
7
|
+
data.tar.gz: 6405780b186c442e4459c74c649cffffe77efb2b53f12c65ac1441c043eb64c1ad5c3f00d95817925081eaedd3ddc30b354fc8086c9bf40119cd185e6f45be47
|
data/lib/fretboards/fretboard.rb
CHANGED
|
@@ -3,7 +3,7 @@ require "fretboards/pitch"
|
|
|
3
3
|
module Fretboards
|
|
4
4
|
class Fretboard
|
|
5
5
|
|
|
6
|
-
attr_reader :marks, :labels, :barres, :conf, :opens, :mutes
|
|
6
|
+
attr_reader :marks, :labels, :barres, :conf, :opens, :mutes, :label_offset, :offset
|
|
7
7
|
|
|
8
8
|
attr_accessor :title
|
|
9
9
|
|
|
@@ -17,6 +17,8 @@ module Fretboards
|
|
|
17
17
|
}
|
|
18
18
|
@mutes = []
|
|
19
19
|
@opens = []
|
|
20
|
+
@offset = 0
|
|
21
|
+
@label_offset = 0
|
|
20
22
|
configure(conf)
|
|
21
23
|
self.instance_eval block if block_given?
|
|
22
24
|
end
|
|
@@ -69,7 +71,16 @@ module Fretboards
|
|
|
69
71
|
self
|
|
70
72
|
end
|
|
71
73
|
|
|
72
|
-
|
|
74
|
+
def set_offset(n)
|
|
75
|
+
@offset = n
|
|
76
|
+
self
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def set_label_offset(n)
|
|
80
|
+
@label_offset = n
|
|
81
|
+
self
|
|
82
|
+
end
|
|
83
|
+
|
|
73
84
|
|
|
74
85
|
def mark(s, f = nil, settings = {})
|
|
75
86
|
if !s.is_a? Hash
|
|
@@ -193,7 +204,7 @@ module Fretboards
|
|
|
193
204
|
# puts "#{self.title} pasa por el segundo hilo"
|
|
194
205
|
min = 1 if min == 0
|
|
195
206
|
max = (min + size) if (size > (max - min) )
|
|
196
|
-
[min, max]
|
|
207
|
+
[min + offset, max + offset]
|
|
197
208
|
end
|
|
198
209
|
end
|
|
199
210
|
end
|
|
@@ -39,7 +39,7 @@ module Fretboards
|
|
|
39
39
|
:string_ext_top => 5,
|
|
40
40
|
:fret_ext_left => 2,
|
|
41
41
|
:fret_ext_right => 2,
|
|
42
|
-
:string_widths => [ 2, 2, 2, 2 ], # TODO calculate on demand if not passed
|
|
42
|
+
:string_widths => [ 2, 2, 2, 2, 2, 2 ], # TODO calculate on demand if not passed
|
|
43
43
|
:fret_reduction_factor => 0.95,
|
|
44
44
|
:rectangular_frets => true,
|
|
45
45
|
:fret_count => 4,
|
|
@@ -99,7 +99,7 @@ module Fretboards
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
def string_spacing
|
|
102
|
-
(@opts[:width] - @opts[:padding_left] - @opts[:padding_right]) / (@fb.string_count - 1)
|
|
102
|
+
(@opts[:width] - @opts[:padding_left] - @opts[:padding_right]) / ((@fb.string_count - 1).to_f)
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
def draw_strings(svg)
|
|
@@ -145,10 +145,10 @@ module Fretboards
|
|
|
145
145
|
def draw_labels(svg)
|
|
146
146
|
fret_range = @fb.fret_range(@opts[:fret_count])
|
|
147
147
|
if fret_range.first > 1
|
|
148
|
-
y = get_dot_position(0, fret_range.first)[1] + @opts[:label_attrs][:"font-size"] * 0.4
|
|
148
|
+
y = get_dot_position(0, fret_range.first + @fb.label_offset)[1] + @opts[:label_attrs][:"font-size"] * 0.4
|
|
149
149
|
x = @opts[:padding_left] - @opts[:label_attrs][:"font-size"] * 1.25
|
|
150
150
|
# TODO allow rotating
|
|
151
|
-
svg.text(fret_range.first, { :y => y, :x => x, :class => 'label' }.merge(@opts[:label_attrs]))
|
|
151
|
+
svg.text(fret_range.first + @fb.label_offset, { :y => y, :x => x, :class => 'label' }.merge(@opts[:label_attrs]))
|
|
152
152
|
end
|
|
153
153
|
end
|
|
154
154
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'fretboards/renderer/base'
|
|
2
|
+
|
|
3
|
+
module Fretboards
|
|
4
|
+
module Renderer
|
|
5
|
+
class Text < Base
|
|
6
|
+
|
|
7
|
+
def render(fb)
|
|
8
|
+
@fb = fb
|
|
9
|
+
output_marks = []
|
|
10
|
+
@fb.string_count.downto(1).each do |n|
|
|
11
|
+
mark = fb.marks.find { |m| m[:string] == n && m[:symbol] != :phantom }
|
|
12
|
+
output_marks << (!mark.nil? ? mark[:fret] : "x" )
|
|
13
|
+
end
|
|
14
|
+
output = output_marks.join(" ")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/fretboards/version.rb
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'fretboards'
|
|
3
|
+
require 'fretboards/renderer/text'
|
|
4
|
+
|
|
5
|
+
include Fretboards
|
|
6
|
+
|
|
7
|
+
class TextRendererTest < Test::Unit::TestCase
|
|
8
|
+
def test_string_count
|
|
9
|
+
fb = Fretboard.new
|
|
10
|
+
renderer = Fretboards::Renderer::Text.new
|
|
11
|
+
output = renderer.render(fb)
|
|
12
|
+
assert_equal(4, output.split(' ').size)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_one_mark_each_string
|
|
16
|
+
fb = Fretboard.new
|
|
17
|
+
fb.terse(%w{ 0 0 0 3 })
|
|
18
|
+
renderer = Fretboards::Renderer::Text.new
|
|
19
|
+
output = renderer.render(fb)
|
|
20
|
+
assert_equal("0 0 0 3", output)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_some_strings_unfretted
|
|
24
|
+
fb = Fretboard.new
|
|
25
|
+
fb.terse(%w{ 3/1 })
|
|
26
|
+
renderer = Fretboards::Renderer::Text.new
|
|
27
|
+
output = renderer.render(fb)
|
|
28
|
+
assert_equal("x x x 3", output)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_obliviate_phantom_notes
|
|
32
|
+
fb = Fretboard.new
|
|
33
|
+
renderer = Fretboards::Renderer::Text.new
|
|
34
|
+
fb.terse(%w{ 3/4 4/3 3/2 3/1? 5/1})
|
|
35
|
+
output = renderer.render(fb)
|
|
36
|
+
assert_equal("3 4 3 5", output)
|
|
37
|
+
|
|
38
|
+
fb.terse(%w{ 3/4 4/3 3/2 3/1!? 5/1})
|
|
39
|
+
puts fb.marks.inspect
|
|
40
|
+
output = renderer.render(fb)
|
|
41
|
+
assert_equal("3 4 3 5", output)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
metadata
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fretboards
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Choan Galvez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-06-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: builder
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
description: Allows defining instrument fretboard structures and representing them
|
|
@@ -33,7 +33,7 @@ executables:
|
|
|
33
33
|
extensions: []
|
|
34
34
|
extra_rdoc_files: []
|
|
35
35
|
files:
|
|
36
|
-
- .gitignore
|
|
36
|
+
- ".gitignore"
|
|
37
37
|
- Gemfile
|
|
38
38
|
- Rakefile
|
|
39
39
|
- bin/fretboards_render
|
|
@@ -46,10 +46,12 @@ files:
|
|
|
46
46
|
- lib/fretboards/pitch.rb
|
|
47
47
|
- lib/fretboards/renderer/base.rb
|
|
48
48
|
- lib/fretboards/renderer/svg.rb
|
|
49
|
+
- lib/fretboards/renderer/text.rb
|
|
49
50
|
- lib/fretboards/tuning.rb
|
|
50
51
|
- lib/fretboards/version.rb
|
|
51
52
|
- readme.mdown
|
|
52
53
|
- test/test_fretboard.rb
|
|
54
|
+
- test/test_text_renderer.rb
|
|
53
55
|
homepage: ''
|
|
54
56
|
licenses: []
|
|
55
57
|
metadata: {}
|
|
@@ -59,19 +61,20 @@ require_paths:
|
|
|
59
61
|
- lib
|
|
60
62
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
61
63
|
requirements:
|
|
62
|
-
- -
|
|
64
|
+
- - ">="
|
|
63
65
|
- !ruby/object:Gem::Version
|
|
64
66
|
version: '0'
|
|
65
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
68
|
requirements:
|
|
67
|
-
- -
|
|
69
|
+
- - ">="
|
|
68
70
|
- !ruby/object:Gem::Version
|
|
69
71
|
version: '0'
|
|
70
72
|
requirements: []
|
|
71
73
|
rubyforge_project: fretboards
|
|
72
|
-
rubygems_version: 2.
|
|
74
|
+
rubygems_version: 2.4.2
|
|
73
75
|
signing_key:
|
|
74
76
|
specification_version: 4
|
|
75
77
|
summary: Define and draw fretboards
|
|
76
78
|
test_files:
|
|
77
79
|
- test/test_fretboard.rb
|
|
80
|
+
- test/test_text_renderer.rb
|