transpose_chords 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -7,6 +7,9 @@ Ruby library for transposing chords
7
7
  TransposeChords::Chord.transpose(['C','F','Am','G']).to('D')
8
8
  ['D','G','Bm','A']
9
9
 
10
+ TransposeChords::Chord.transpose(['C','D','G']).capo(2)
11
+ ['D','E','A']
12
+
10
13
  == Contributing to transpose_chords
11
14
 
12
15
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -10,19 +10,37 @@ module TransposeChords
10
10
 
11
11
  def table
12
12
  {
13
- c: ['C', 'Dm', 'Em', 'F', 'G', 'Am', 'Bdim'],
14
- d: ['D', 'Em', 'F#m', 'G', 'A', 'Bm', 'C#dim'],
15
- e: ['E', 'F#m', 'G#m', 'A', 'B', 'C#m', 'D#dim'],
16
- f: ['F', 'Gm', 'Am', 'Bb', 'C', 'Dm', 'Edim'],
17
- g: ['G', 'Am', 'Bm', 'C', 'D', 'Em', 'F#dim'],
18
- a: ['A', 'Bm', 'C#m', 'D', 'E', 'F#m', 'G#dim'],
19
- b: ['B', 'C#m', 'D#m', 'E', 'F#', 'G#m', 'A#dim']
13
+ to_key: {
14
+ c: ['C', 'Dm', 'Em', 'F', 'G', 'Am', 'Bdim'],
15
+ d: ['D', 'Em', 'F#m', 'G', 'A', 'Bm', 'C#dim'],
16
+ e: ['E', 'F#m', 'G#m', 'A', 'B', 'C#m', 'D#dim'],
17
+ f: ['F', 'Gm', 'Am', 'Bb', 'C', 'Dm', 'Edim'],
18
+ g: ['G', 'Am', 'Bm', 'C', 'D', 'Em', 'F#dim'],
19
+ a: ['A', 'Bm', 'C#m', 'D', 'E', 'F#m', 'G#dim'],
20
+ b: ['B', 'C#m', 'D#m', 'E', 'F#', 'G#m', 'A#dim']
21
+ },
22
+ to_capo: {
23
+ c: ['C', 'C#/Db', 'D', 'D#/Eb', 'E', 'F', 'F#/Gb', 'G'],
24
+ d: ['D', 'D#/Eb', 'E', 'F', 'F#/Gb', 'G', 'Gb/Ab', 'A'],
25
+ e: ['E', 'F', 'F#/Gb', 'G', 'G#/Ab', 'A', 'A#/Bb', 'B'],
26
+ f: ['F', 'F#/Gb', 'G', 'G#/Ab', 'A', 'A#/Bb', 'B', 'C'],
27
+ g: ['G', 'G#/Ab', 'A', 'A#/Bb', 'B', 'C', 'C#/Db', 'D'],
28
+ a: ['A', 'A#/Bb', 'B', 'C', 'C#/Db', 'D', 'D#/Eb', 'E'],
29
+ b: ['B', 'C', 'C#/Db', 'D', 'D#/Eb', 'E', 'F', 'F#/Gb']
30
+ }
20
31
  }
21
32
  end
22
33
 
23
34
  def to(key)
24
35
  key = table_key_for(key)
25
- key_indexes.map { |k| table[key][k] }
36
+ key_indexes.map { |k| table[:to_key][key][k] }
37
+ end
38
+
39
+ def capo(fret)
40
+ @keys.map do |k|
41
+ key = table_key_for(k)
42
+ table[:to_capo][key][fret]
43
+ end
26
44
  end
27
45
 
28
46
  def table_key_for(key)
@@ -34,7 +52,7 @@ module TransposeChords
34
52
  end
35
53
 
36
54
  def keys_for(key)
37
- Hash[table[key].map.with_index{|*ki| ki}]
55
+ Hash[table[:to_key][key].map.with_index{|*ki| ki}]
38
56
  end
39
57
  end
40
58
  end
@@ -0,0 +1,17 @@
1
+ require_relative '../../lib/transpose_chords'
2
+
3
+ module TransposeChords
4
+ describe Chord do
5
+ context 'transposing to a new key' do
6
+ it 'transposes a chord progression' do
7
+ Chord.transpose(['C','F','Am','G']).to('D').should == ['D','G','Bm','A']
8
+ end
9
+ end
10
+
11
+ context 'transposing with a capo' do
12
+ it 'transposes the chords' do
13
+ Chord.transpose(['C','D','G']).capo(2).should == ['D','E','A']
14
+ end
15
+ end
16
+ end
17
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "transpose_chords"
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Richard Patching"]
12
- s.date = "2012-06-03"
12
+ s.date = "2012-06-17"
13
13
  s.description = "Ruby library for transposing chords"
14
14
  s.email = "richard@justaddpixels.com"
15
15
  s.extra_rdoc_files = [
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "lib/transpose_chords.rb",
28
- "spec/lib/transpose_chords.rb",
28
+ "spec/lib/transpose_chords_spec.rb",
29
29
  "transpose_chords.gemspec"
30
30
  ]
31
31
  s.homepage = "http://github.com/patchfx/transpose_chords"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transpose_chords
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-03 00:00:00.000000000 Z
12
+ date: 2012-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
@@ -123,7 +123,7 @@ files:
123
123
  - Rakefile
124
124
  - VERSION
125
125
  - lib/transpose_chords.rb
126
- - spec/lib/transpose_chords.rb
126
+ - spec/lib/transpose_chords_spec.rb
127
127
  - transpose_chords.gemspec
128
128
  homepage: http://github.com/patchfx/transpose_chords
129
129
  licenses:
@@ -140,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  segments:
142
142
  - 0
143
- hash: -2002430735331876971
143
+ hash: 3721842906326010125
144
144
  required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
@@ -1,9 +0,0 @@
1
- require_relative '../../lib/transpose_chords'
2
-
3
- module TransposeChords
4
- describe Chord do
5
- it 'transposes a chord progression' do
6
- Chord.transpose(['C','F','Am','G']).to('D').should == ['D','G','Bm','A']
7
- end
8
- end
9
- end