chordy 0.7.1
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/.travis.yml +8 -0
- data/Gemfile +16 -0
- data/LICENSE.rdoc +24 -0
- data/README.rdoc +196 -0
- data/Rakefile +47 -0
- data/lib/a_chords.rb +81 -0
- data/lib/a_sharp_chords.rb +83 -0
- data/lib/b_chords.rb +81 -0
- data/lib/c_chords.rb +81 -0
- data/lib/c_sharp_chords.rb +83 -0
- data/lib/chord.rb +193 -0
- data/lib/chordy.rb +287 -0
- data/lib/chordy_script.rb +5 -0
- data/lib/d_chords.rb +81 -0
- data/lib/d_sharp_chords.rb +83 -0
- data/lib/e_chords.rb +81 -0
- data/lib/f_chords.rb +81 -0
- data/lib/f_sharp_chords.rb +83 -0
- data/lib/g_chords.rb +81 -0
- data/lib/g_sharp_chords.rb +83 -0
- data/lib/section.rb +13 -0
- data/lib/text.rb +11 -0
- data/lib/tuning.rb +109 -0
- data/test/helper.rb +21 -0
- data/test/test_chordy.rb +49 -0
- metadata +187 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'chord'
|
4
|
+
|
5
|
+
class GSharp < Chord
|
6
|
+
def play_major
|
7
|
+
[4, 3, 1, 1, 1, 4]
|
8
|
+
end
|
9
|
+
|
10
|
+
def play_minor
|
11
|
+
[-1, 2, 1, 4, 4, 4]
|
12
|
+
end
|
13
|
+
|
14
|
+
def play_dominant_7
|
15
|
+
[4, 3, 1, 1, 1, 2]
|
16
|
+
end
|
17
|
+
|
18
|
+
def play_dominant_7_5
|
19
|
+
[-1, -1, 0, 1, 1, 2]
|
20
|
+
end
|
21
|
+
|
22
|
+
def play_major_6
|
23
|
+
[4, 3, 1, 1, 1, 1]
|
24
|
+
end
|
25
|
+
|
26
|
+
def play_major_7
|
27
|
+
[-1, 3, 1, 1, 1, 3]
|
28
|
+
end
|
29
|
+
|
30
|
+
def play_major_9
|
31
|
+
[-1, 1, 1, 1, 1, 2]
|
32
|
+
end
|
33
|
+
|
34
|
+
def play_minor_6
|
35
|
+
[-1, -1, 1, 1, 0, 1]
|
36
|
+
end
|
37
|
+
|
38
|
+
def play_minor_7
|
39
|
+
[0, 0, 2, 2, 1, 3]
|
40
|
+
end
|
41
|
+
|
42
|
+
def play_half_diminished_7
|
43
|
+
[2, 2, 0, 1, 0, 2]
|
44
|
+
end
|
45
|
+
|
46
|
+
def play_minor_major_7
|
47
|
+
[-1, -1, 1, 1, 0, 3]
|
48
|
+
end
|
49
|
+
|
50
|
+
def play_augmented_5
|
51
|
+
[0, 3, 2, 1, 1, 0]
|
52
|
+
end
|
53
|
+
|
54
|
+
def play_augmented_7
|
55
|
+
[-1, 3, 2, 1, 1, 2]
|
56
|
+
end
|
57
|
+
|
58
|
+
def play_augmented_major_7
|
59
|
+
[0, 3, 2, 1, 1, 3]
|
60
|
+
end
|
61
|
+
|
62
|
+
def play_diminished_5
|
63
|
+
[4, 5, 0, 4, 3, 4]
|
64
|
+
end
|
65
|
+
|
66
|
+
def play_diminished_7
|
67
|
+
[-1, -1, 0, 1, 0, 1]
|
68
|
+
end
|
69
|
+
|
70
|
+
def play_diminished_9
|
71
|
+
[2, 0, 1, 1, 1, 2]
|
72
|
+
end
|
73
|
+
|
74
|
+
def play_suspended_4
|
75
|
+
[4, 4, 6, 6, 4, 4]
|
76
|
+
end
|
77
|
+
|
78
|
+
def play_suspended_7
|
79
|
+
[4, 4, 4, 6, 4, 4]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
AFlat = GSharp
|
data/lib/section.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Section
|
4
|
+
def initialize(title="", separator_length=40)
|
5
|
+
@title = title
|
6
|
+
@separator_length = separator_length
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_s
|
10
|
+
title_str = @title.to_s
|
11
|
+
title_str.rjust(title_str.length + 2, "-").ljust(@separator_length, "-")
|
12
|
+
end
|
13
|
+
end
|
data/lib/text.rb
ADDED
data/lib/tuning.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Tuning
|
4
|
+
def is_tuning? tuning
|
5
|
+
Tuning.instance_methods.include? tuning.to_s
|
6
|
+
true
|
7
|
+
end
|
8
|
+
|
9
|
+
def tuning_6_standard
|
10
|
+
["e", "a", "d", "g", "b", "e"]
|
11
|
+
end
|
12
|
+
|
13
|
+
def tuning_6_a
|
14
|
+
["a", "d", "g", "c", "e", "a"]
|
15
|
+
end
|
16
|
+
|
17
|
+
def tuning_6_b
|
18
|
+
["b", "e", "a", "d", "f#", "b"]
|
19
|
+
end
|
20
|
+
|
21
|
+
def tuning_6_c
|
22
|
+
["c", "f", "a#", "d#", "g", "c"]
|
23
|
+
end
|
24
|
+
|
25
|
+
def tuning_6_d
|
26
|
+
["d", "g", "c", "f", "a", "d"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def tuning_6_drop_a
|
30
|
+
["a", "e", "a", "d", "f#", "b"]
|
31
|
+
end
|
32
|
+
|
33
|
+
def tuning_6_drop_c
|
34
|
+
["c", "g", "c", "f", "a", "d"]
|
35
|
+
end
|
36
|
+
|
37
|
+
def tuning_6_drop_d
|
38
|
+
["d", "a", "d", "g", "b", "e"]
|
39
|
+
end
|
40
|
+
|
41
|
+
def tuning_7_standard
|
42
|
+
["b", "e", "a", "d", "g", "b", "e"]
|
43
|
+
end
|
44
|
+
|
45
|
+
def tuning_7_a
|
46
|
+
["a", "d", "g", "c", "f", "a", "d"]
|
47
|
+
end
|
48
|
+
|
49
|
+
def tuning_7_a_sharp
|
50
|
+
["a#", "d#", "g#", "c#", "f#", "a#", "d#"]
|
51
|
+
end
|
52
|
+
|
53
|
+
def tuning_7_c
|
54
|
+
["c", "f", "a#", "d#", "g#", "c", "f"]
|
55
|
+
end
|
56
|
+
|
57
|
+
def tuning_7_d
|
58
|
+
["d", "g", "c", "f", "a#", "d", "g"]
|
59
|
+
end
|
60
|
+
|
61
|
+
def tuning_7_drop_a
|
62
|
+
["a", "e", "a", "d", "f#", "b", "e"]
|
63
|
+
end
|
64
|
+
|
65
|
+
def tuning_7_drop_g
|
66
|
+
["g", "d", "g", "c", "f", "a", "d"]
|
67
|
+
end
|
68
|
+
|
69
|
+
def tuning_7_drop_g_sharp
|
70
|
+
["g#", "d#", "g#", "c#", "f#", "a#", "d#"]
|
71
|
+
end
|
72
|
+
|
73
|
+
def tuning_8_standard
|
74
|
+
["f#", "b", "e", "a", "d", "g", "b", "e"]
|
75
|
+
end
|
76
|
+
|
77
|
+
def tuning_8_a
|
78
|
+
["a", "d", "g", "c", "f", "a", "d", "g"]
|
79
|
+
end
|
80
|
+
|
81
|
+
def tuning_8_e
|
82
|
+
["e", "a", "d", "g", "c", "f", "a", "d"]
|
83
|
+
end
|
84
|
+
|
85
|
+
def tuning_8_f
|
86
|
+
["fb", "bb", "eb", "ab", "db", "gb", "bb", "eb"]
|
87
|
+
end
|
88
|
+
|
89
|
+
def tuning_8_drop_d_sharp
|
90
|
+
["eb", "bb", "eb", "ab", "db", "gb", "bb", "eb"]
|
91
|
+
end
|
92
|
+
|
93
|
+
def tuning_8_drop_e
|
94
|
+
["e", "b", "e", "a", "d", "g", "b", "e"]
|
95
|
+
end
|
96
|
+
|
97
|
+
alias :tuning_standard :tuning_6_standard
|
98
|
+
alias :tuning_a :tuning_6_a
|
99
|
+
alias :tuning_b :tuning_6_b
|
100
|
+
alias :tuning_c :tuning_6_c
|
101
|
+
alias :tuning_d :tuning_6_d
|
102
|
+
alias :tuning_drop_a :tuning_6_drop_a
|
103
|
+
alias :tuning_drop_c :tuning_6_drop_c
|
104
|
+
alias :tuning_drop_d :tuning_6_drop_d
|
105
|
+
alias :tuning_7 :tuning_7_standard
|
106
|
+
alias :tuning_7_a! :tuning_7_a_sharp
|
107
|
+
alias :tuning_7_drop_g! :tuning_7_drop_g_sharp
|
108
|
+
alias :tuning_8_drop_d! :tuning_8_drop_d_sharp
|
109
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
|
6
|
+
begin
|
7
|
+
Bundler.setup(:default, :development)
|
8
|
+
rescue Bundler::BundlerError => e
|
9
|
+
$stderr.puts e.message
|
10
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
11
|
+
exit e.status_code
|
12
|
+
end
|
13
|
+
require 'test/unit'
|
14
|
+
require 'shoulda'
|
15
|
+
|
16
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
17
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
18
|
+
require 'chordy'
|
19
|
+
|
20
|
+
class Test::Unit::TestCase
|
21
|
+
end
|
data/test/test_chordy.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestChordy < Test::Unit::TestCase
|
6
|
+
should "have private methods and constants for all chord flags" do
|
7
|
+
c = Chord.new(:M, 6)
|
8
|
+
methods = c.private_methods
|
9
|
+
flags = Chord::CHORD_FLAGS
|
10
|
+
consts = Chord.constants
|
11
|
+
|
12
|
+
flags.each { |f| assert(methods.include?(f.to_sym), "no method '#{f}' in Chord") }
|
13
|
+
flags.each { |f| assert(consts.include?(f.upcase.to_sym), "no constant '#{f}' in Chord") }
|
14
|
+
end
|
15
|
+
|
16
|
+
should "knows all chord types" do
|
17
|
+
short_chords = Chord.short_chords
|
18
|
+
|
19
|
+
short_chords.keys.each { |k| assert_not_nil(Chord.new(k, 6)) }
|
20
|
+
short_chords.values.each { |k| assert_not_nil(Chord.new(k, 6)) }
|
21
|
+
end
|
22
|
+
|
23
|
+
should "has all chord types for all chord families" do
|
24
|
+
chord_families = [C, CSharp, DFlat, D, DSharp, EFlat, E, F, FSharp, GFlat, G, GSharp, AFlat, A, ASharp, B]
|
25
|
+
|
26
|
+
short_chords = Chord.short_chords.values
|
27
|
+
short_chord_methods = short_chords.map { |c| "play_" + c.to_s }
|
28
|
+
|
29
|
+
chord_families.each do |family|
|
30
|
+
family_methods = family.instance_methods
|
31
|
+
short_chord_methods.each { |method| assert(family_methods.include?(method.to_sym), "no method '#{method}' in #{family}") }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
should "know all effects" do
|
36
|
+
# TODO implement
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
should "have 6,7 or 8 strings" do
|
41
|
+
# TODO implement
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
should "know strings at different positions" do
|
46
|
+
# TODO implement
|
47
|
+
true
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,187 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: chordy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Akhil Wali
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-12-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: shoulda
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 10.0.2
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 10.0.2
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.12'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.12'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.2.3
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.2.3
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: jeweler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.8.4
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.8.4
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: simplecov
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: ruby-debug19
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: Chordy is a DSL written in Ruby to print guitar chords diagrams
|
127
|
+
email: akhil.wali.10@gmail.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files:
|
131
|
+
- LICENSE.rdoc
|
132
|
+
- README.rdoc
|
133
|
+
files:
|
134
|
+
- .travis.yml
|
135
|
+
- Gemfile
|
136
|
+
- LICENSE.rdoc
|
137
|
+
- README.rdoc
|
138
|
+
- Rakefile
|
139
|
+
- lib/a_chords.rb
|
140
|
+
- lib/a_sharp_chords.rb
|
141
|
+
- lib/b_chords.rb
|
142
|
+
- lib/c_chords.rb
|
143
|
+
- lib/c_sharp_chords.rb
|
144
|
+
- lib/chord.rb
|
145
|
+
- lib/chordy.rb
|
146
|
+
- lib/chordy_script.rb
|
147
|
+
- lib/d_chords.rb
|
148
|
+
- lib/d_sharp_chords.rb
|
149
|
+
- lib/e_chords.rb
|
150
|
+
- lib/f_chords.rb
|
151
|
+
- lib/f_sharp_chords.rb
|
152
|
+
- lib/g_chords.rb
|
153
|
+
- lib/g_sharp_chords.rb
|
154
|
+
- lib/section.rb
|
155
|
+
- lib/text.rb
|
156
|
+
- lib/tuning.rb
|
157
|
+
- test/helper.rb
|
158
|
+
- test/test_chordy.rb
|
159
|
+
homepage: http://github.com/darth10/chordy
|
160
|
+
licenses:
|
161
|
+
- MIT
|
162
|
+
post_install_message:
|
163
|
+
rdoc_options: []
|
164
|
+
require_paths:
|
165
|
+
- lib
|
166
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
167
|
+
none: false
|
168
|
+
requirements:
|
169
|
+
- - ! '>='
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
hash: -257714063
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
+
none: false
|
177
|
+
requirements:
|
178
|
+
- - ! '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
requirements: []
|
182
|
+
rubyforge_project: chordy
|
183
|
+
rubygems_version: 1.8.24
|
184
|
+
signing_key:
|
185
|
+
specification_version: 3
|
186
|
+
summary: DSL for guitar chords
|
187
|
+
test_files: []
|