jamming 0.1.2 → 0.2.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.
- data/README.markdown +23 -0
- data/VERSION +1 -1
- data/jamming.gemspec +3 -2
- data/lib/jamming/chord.rb +6 -1
- data/lib/jamming/dictionary.rb +34 -0
- metadata +5 -4
data/README.markdown
CHANGED
@@ -24,6 +24,29 @@ This will write Em7#9, <em>The Jimi Hendrix Chord</em>, to <tt>/tmp/old_good_jim
|
|
24
24
|
|
25
25
|

|
26
26
|
|
27
|
+
### Auto labels
|
28
|
+
|
29
|
+
Jamming has an internal database with some chords that lets her auto-identify some chords. So, for example:
|
30
|
+
|
31
|
+
File.open("/tmp/a_major.png", 'w') do |f|
|
32
|
+
chord = Jamming::Chord.new("x-0-2-2-2-0")
|
33
|
+
f.write chord.to_png
|
34
|
+
end
|
35
|
+
|
36
|
+
will generate an image like this:
|
37
|
+
|
38
|
+

|
39
|
+
|
40
|
+
(Notice the _A_ label even if you never explicitly declared it.)
|
41
|
+
|
42
|
+
If you'd like to override this behavior, pass `:label => nil` to the `to_png` method.
|
43
|
+
|
44
|
+
If you find a chord that is not auto-labeled but you'd like it to be, please add it [to this file](https://github.com/andmej/jamming/blob/master/lib/jamming/dictionary.rb) and send a pull request.
|
45
|
+
|
46
|
+
### Front-end
|
47
|
+
|
48
|
+
Jamming is better served with a front-end that takes care of generating the images for you. Check out [this tiny Sinatra app](https://github.com/andmej/jamming_frontend) that does just that.
|
49
|
+
|
27
50
|
Thanks
|
28
51
|
---
|
29
52
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/jamming.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{jamming}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrés Mejía"]
|
12
|
-
s.date = %q{2010-12-
|
12
|
+
s.date = %q{2010-12-21}
|
13
13
|
s.description = %q{A Ruby library to generate images of guitar chords}
|
14
14
|
s.email = %q{andmej@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
"jamming.gemspec",
|
29
29
|
"lib/jamming.rb",
|
30
30
|
"lib/jamming/chord.rb",
|
31
|
+
"lib/jamming/dictionary.rb",
|
31
32
|
"lib/jamming/png_formatter.rb",
|
32
33
|
"test/helper.rb",
|
33
34
|
"test/test_jamming.rb"
|
data/lib/jamming/chord.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'jamming/png_formatter'
|
2
|
+
require 'jamming/dictionary'
|
2
3
|
|
3
4
|
module Jamming
|
4
5
|
class Chord
|
@@ -9,7 +10,11 @@ module Jamming
|
|
9
10
|
end
|
10
11
|
|
11
12
|
def to_png(options = {})
|
12
|
-
Jamming::PNGFormatter.new(frets).print(options)
|
13
|
+
Jamming::PNGFormatter.new(frets).print({ :label => name }.merge(options))
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
Jamming::Dictionary.name_for(frets)
|
13
18
|
end
|
14
19
|
|
15
20
|
protected
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Jamming
|
2
|
+
class Dictionary
|
3
|
+
DICTIONARY = {
|
4
|
+
"A" => %w(x02220),
|
5
|
+
"Am" => %w(x02210),
|
6
|
+
"B" => %w(x24442),
|
7
|
+
"Bm" => %w(x24432),
|
8
|
+
"C" => %w(x32010),
|
9
|
+
"Cm" => %w(x35543),
|
10
|
+
"D" => %w(xx0232),
|
11
|
+
"Dm" => %w(xx0231),
|
12
|
+
"E" => %w(022100),
|
13
|
+
"Em" => %w(022000),
|
14
|
+
"F" => %w(133211),
|
15
|
+
"Fm" => %w(133111),
|
16
|
+
"G" => %w(320022 320002),
|
17
|
+
"Gm" => %w(355333)
|
18
|
+
}
|
19
|
+
|
20
|
+
def self.name_for(frets)
|
21
|
+
frets = normalize_frets(frets)
|
22
|
+
DICTIONARY.each do |key, different_fingerings|
|
23
|
+
return key if different_fingerings.include?(frets)
|
24
|
+
end
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def self.normalize_frets(frets)
|
30
|
+
join_with = frets.any? { |f| f && f >= 10 } ? "-" : ""
|
31
|
+
frets.map { |f| f.nil? ? "x" : f.to_s }.join(join_with)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
- 1
|
8
7
|
- 2
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Andr\xC3\xA9s Mej\xC3\xADa"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-21 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- jamming.gemspec
|
108
108
|
- lib/jamming.rb
|
109
109
|
- lib/jamming/chord.rb
|
110
|
+
- lib/jamming/dictionary.rb
|
110
111
|
- lib/jamming/png_formatter.rb
|
111
112
|
- test/helper.rb
|
112
113
|
- test/test_jamming.rb
|
@@ -124,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
125
|
requirements:
|
125
126
|
- - ">="
|
126
127
|
- !ruby/object:Gem::Version
|
127
|
-
hash:
|
128
|
+
hash: 2896660226921079104
|
128
129
|
segments:
|
129
130
|
- 0
|
130
131
|
version: "0"
|