chordy 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +14 -4
- data/VERSION +1 -1
- data/lib/chordy.rb +21 -18
- data/lib/chordy/chord.rb +13 -11
- data/lib/chordy/chords/a.rb +0 -2
- data/lib/chordy/chords/a_sharp.rb +2 -4
- data/lib/chordy/chords/b.rb +0 -2
- data/lib/chordy/chords/c.rb +0 -2
- data/lib/chordy/chords/c_sharp.rb +3 -5
- data/lib/chordy/chords/d.rb +0 -2
- data/lib/chordy/chords/d_sharp.rb +3 -5
- data/lib/chordy/chords/e.rb +0 -2
- data/lib/chordy/chords/f.rb +0 -2
- data/lib/chordy/chords/f_sharp.rb +0 -2
- data/lib/chordy/chords/g.rb +0 -2
- data/lib/chordy/chords/g_sharp.rb +3 -5
- data/lib/chordy/util/section.rb +1 -3
- data/lib/chordy/util/text.rb +0 -2
- data/lib/chordy/util/tuning.rb +0 -2
- data/lib/chordy_script.rb +0 -2
- data/test/helper.rb +0 -2
- data/test/test_chordy.rb +23 -5
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= chordy {<img src="https://travis-ci.org/darth10/chordy.png" />}[https://travis-ci.org/darth10/chordy]
|
1
|
+
= chordy {<img src="https://secure.travis-ci.org/darth10/chordy.png?branch=master" />}[https://travis-ci.org/darth10/chordy]
|
2
2
|
|
3
3
|
chordy is a DSL written in Ruby for printing guitar chord diagrams.
|
4
4
|
A chordy script produces output that looks like a song with various chords, sections and arbitrary text.
|
@@ -14,7 +14,9 @@ Formatting options are also provided.
|
|
14
14
|
== Usage
|
15
15
|
|
16
16
|
After installing the chordy gem, you can start chordy in an interactive mode through <code>irb</code>.
|
17
|
-
You can declare chords to play using the <code>play</code> function.
|
17
|
+
You can declare chords to play using the <code>play</code> function.
|
18
|
+
|
19
|
+
=== Basic chords
|
18
20
|
|
19
21
|
The <code>play</code> function takes one required arugment, which can be a chord family like C or F#.
|
20
22
|
There are a handful of notations to specify a chord family.
|
@@ -187,8 +189,10 @@ You can specify low-to-high string order for playing a chord by adding a <code>:
|
|
187
189
|
|
188
190
|
1.9.3-p327 :005 >
|
189
191
|
|
190
|
-
|
191
|
-
|
192
|
+
=== Variations
|
193
|
+
|
194
|
+
You can also play variations in chords, such as a muted chord or a harmonic.
|
195
|
+
To play a variation, use the <em>play_var</em> function, where <em>var</em> is the variation name to play.
|
192
196
|
Alternatively, you could use the name of the variation itself as a function, which takes a block of chords to be played.
|
193
197
|
For example, the <code>play_mute</code> function plays a muted chord, and the <code>slide_down</code> function plays multiple chords with a slide down.
|
194
198
|
This {wiki page}[http://darth10.github.com/chordy/chords.html] contains a complete listing of all supported varations.
|
@@ -248,6 +252,8 @@ For example, it's not possible to print both variations in a chord with both <co
|
|
248
252
|
|
249
253
|
1.9.3-p327 :008 >
|
250
254
|
|
255
|
+
=== Tuning
|
256
|
+
|
251
257
|
Chordy also supports different tunings.
|
252
258
|
The <code>tune</code> function can be used to change the tuning, and has to be supplied with a tuning parameter.
|
253
259
|
A tuning is represented as <em>tuning_x_y</em>, where <em>x</em> is the number of strings in the tuning and <em>y</em> is the name of the tuning.
|
@@ -295,6 +301,8 @@ This {wiki page}[http://darth10.github.com/chordy/tuning.html] contains a comple
|
|
295
301
|
|
296
302
|
1.9.3-p327 :005 >
|
297
303
|
|
304
|
+
=== Scripting
|
305
|
+
|
298
306
|
You could also script the chords to play by using <code>require 'chordy_script'</code>.
|
299
307
|
Just be sure to call <code>print_chords</code>.
|
300
308
|
Here's a sample chordy script.
|
@@ -322,6 +330,8 @@ Here's what the output of the script looks like.
|
|
322
330
|
A [--3---2---3---2--|--1-----]
|
323
331
|
E [--3---0-------0--|--------]
|
324
332
|
|
333
|
+
=== Text and Sections
|
334
|
+
|
325
335
|
Text can be added by using <code>text</code>.
|
326
336
|
To provide structure to your output, use <code>section</code> to separate chords.
|
327
337
|
Here's the previous script with some text and sections.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.3
|
data/lib/chordy.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'stringio'
|
3
2
|
includes = ['chords', 'util']
|
4
3
|
|
5
4
|
include_dirs = includes.map { |dir| "chordy/#{dir}/" }
|
@@ -76,16 +75,12 @@ module Chordy
|
|
76
75
|
strings = [6, 7, 8]
|
77
76
|
|
78
77
|
if new_tuning.is_a? Array
|
79
|
-
if
|
80
|
-
|
81
|
-
new_tuning = new_tuning.reverse
|
82
|
-
end
|
83
|
-
|
84
|
-
set_chords_to_tuning new_tuning
|
85
|
-
to_do_print = true
|
86
|
-
else
|
87
|
-
puts "Invalid tuning; only " + strings.join(",") + " strings are allowed"
|
78
|
+
if direction == :high_to_low
|
79
|
+
new_tuning = new_tuning.reverse
|
88
80
|
end
|
81
|
+
|
82
|
+
set_chords_to_tuning new_tuning
|
83
|
+
to_do_print = true
|
89
84
|
else
|
90
85
|
if is_tuning? new_tuning.to_s
|
91
86
|
new_tuning = eval("#{new_tuning}")
|
@@ -164,7 +159,7 @@ module Chordy
|
|
164
159
|
do_print
|
165
160
|
end
|
166
161
|
|
167
|
-
def separator
|
162
|
+
def separator
|
168
163
|
section
|
169
164
|
end
|
170
165
|
|
@@ -210,14 +205,14 @@ module Chordy
|
|
210
205
|
line << curr_chord.print_string_at(i, Chordy.chord_space, Chordy.low_to_high)
|
211
206
|
end
|
212
207
|
end
|
213
|
-
|
208
|
+
|
214
209
|
chords_in_section = chords_in_section + 1
|
215
210
|
to_skip_end_strings = false
|
216
211
|
elsif (chords[chord_index].is_a? Util::Text) or (chords[chord_index].is_a? Util::Section)
|
217
212
|
lines_to_print.push chords[chord_index].to_s
|
218
213
|
to_skip_end_strings = true
|
219
214
|
chords_in_section = 0
|
220
|
-
|
215
|
+
|
221
216
|
if chords[chord_index + 1].is_a? Chord
|
222
217
|
to_print_start_chords = true
|
223
218
|
end
|
@@ -229,7 +224,7 @@ module Chordy
|
|
229
224
|
else
|
230
225
|
is_next_chord_section_or_text = false
|
231
226
|
end
|
232
|
-
|
227
|
+
|
233
228
|
if ((chords_in_section % Chordy.line_length) == 0) or (chord_index == chords.length) or is_next_chord_section_or_text
|
234
229
|
if to_skip_end_strings
|
235
230
|
to_skip_end_strings = false
|
@@ -244,11 +239,11 @@ module Chordy
|
|
244
239
|
lines_to_print.push ""
|
245
240
|
is_new_line = true
|
246
241
|
elsif (chords_in_section % Chordy.line_length) == (Chordy.line_length / 2) and is_even_line_length
|
247
|
-
last_chord_lines.each_with_index do |line, i|
|
242
|
+
last_chord_lines.each_with_index do |line, i|
|
248
243
|
line << Chord.print_half_length_string_at(i, Chordy.tuning, Chordy.half_length_delimiter, Chordy.chord_space)
|
249
244
|
end
|
250
245
|
end
|
251
|
-
|
246
|
+
|
252
247
|
if is_next_chord_section_or_text
|
253
248
|
is_new_line = false
|
254
249
|
end
|
@@ -263,6 +258,14 @@ module Chordy
|
|
263
258
|
nil
|
264
259
|
end
|
265
260
|
|
261
|
+
def print_chords_to_string
|
262
|
+
sio = StringIO.new
|
263
|
+
old_stdout, $stdout = $stdout, sio
|
264
|
+
print_chords
|
265
|
+
$stdout = old_stdout
|
266
|
+
sio.string
|
267
|
+
end
|
268
|
+
|
266
269
|
Chord::CHORD_FLAGS.each_with_index do |name,i|
|
267
270
|
eval <<-ENDOFEVAL
|
268
271
|
def #{name}
|
@@ -271,7 +274,7 @@ module Chordy
|
|
271
274
|
Chordy.auto = false
|
272
275
|
begin
|
273
276
|
chord = yield if block_given?
|
274
|
-
|
277
|
+
|
275
278
|
num_new_chords = Chordy.chords.length - saved_chord_index
|
276
279
|
Chordy.chords.last(num_new_chords).each { |c| c.send :#{name} }
|
277
280
|
rescue Exception => e
|
data/lib/chordy/chord.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module Chordy
|
4
2
|
|
5
3
|
class Chord
|
@@ -13,7 +11,7 @@ module Chordy
|
|
13
11
|
def self.get_num_high_strings length
|
14
12
|
(length / 3.0).ceil
|
15
13
|
end
|
16
|
-
|
14
|
+
|
17
15
|
def self.start_of_strings tuning, start_delimiter, low_to_high
|
18
16
|
num_strings = tuning.length
|
19
17
|
num_high_strings = get_num_high_strings num_strings
|
@@ -30,7 +28,7 @@ module Chordy
|
|
30
28
|
strings_to_print = strings_range.map { |s| s.rjust(2) + start_delimiter.rjust(2) }
|
31
29
|
strings_to_print + [ " " * 4 ]
|
32
30
|
end
|
33
|
-
|
31
|
+
|
34
32
|
def self.end_of_strings tuning, end_delimiter
|
35
33
|
num_strings = tuning.length
|
36
34
|
([ end_delimiter ] * num_strings) + [ "" ]
|
@@ -71,7 +69,7 @@ module Chordy
|
|
71
69
|
:sus7 => :suspended_7,
|
72
70
|
}
|
73
71
|
end
|
74
|
-
|
72
|
+
|
75
73
|
def initialize chord, strings
|
76
74
|
@strings = [-1] * strings
|
77
75
|
pad_low = false
|
@@ -93,7 +91,7 @@ module Chordy
|
|
93
91
|
pad_or_trim strings, pad_low
|
94
92
|
@flags = 0
|
95
93
|
end
|
96
|
-
|
94
|
+
|
97
95
|
def pad_or_trim length, pad_low
|
98
96
|
if @strings.length > length
|
99
97
|
@strings = @strings.last length
|
@@ -102,7 +100,7 @@ module Chordy
|
|
102
100
|
if pad_low
|
103
101
|
first = @strings.first
|
104
102
|
min = @strings.min
|
105
|
-
|
103
|
+
|
106
104
|
# play as bar chord
|
107
105
|
bar_chord_string = ((first == min) and (min > 0) and (first > 0)) ? first : -1
|
108
106
|
@strings = ([bar_chord_string] * diff) + @strings
|
@@ -117,6 +115,10 @@ module Chordy
|
|
117
115
|
def play chord_type
|
118
116
|
method_for_chord_type = "play_" + chord_type.to_s
|
119
117
|
chord = eval(method_for_chord_type)
|
118
|
+
if chord.length > @strings.length
|
119
|
+
chord = chord.last @strings.length
|
120
|
+
end
|
121
|
+
|
120
122
|
chord
|
121
123
|
end
|
122
124
|
|
@@ -159,11 +161,11 @@ module Chordy
|
|
159
161
|
end
|
160
162
|
|
161
163
|
to_print = to_print.rjust(3, chord_space)
|
162
|
-
|
164
|
+
|
163
165
|
if @flags != 0
|
164
166
|
to_print = print_string_with_flag_at index_to_print, to_print, chord_space
|
165
167
|
end
|
166
|
-
|
168
|
+
|
167
169
|
to_print.ljust(4, chord_space)
|
168
170
|
end
|
169
171
|
|
@@ -193,7 +195,7 @@ module Chordy
|
|
193
195
|
end
|
194
196
|
|
195
197
|
# for printing flags on diff line
|
196
|
-
def print_flag
|
198
|
+
def print_flag
|
197
199
|
to_print = ""
|
198
200
|
|
199
201
|
if has_flag MUTE
|
@@ -203,7 +205,7 @@ module Chordy
|
|
203
205
|
end
|
204
206
|
|
205
207
|
to_print.rjust(3).ljust(4)
|
206
|
-
end
|
208
|
+
end
|
207
209
|
end
|
208
210
|
|
209
211
|
Chord::CHORD_FLAGS.each_with_index do |name,i|
|
data/lib/chordy/chords/a.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require File.join(File.dirname(__FILE__), '..', 'chord')
|
4
2
|
|
5
3
|
module Chordy
|
@@ -20,7 +18,7 @@ module Chordy
|
|
20
18
|
def play_dominant_7_5
|
21
19
|
[0, 1, 2, 1, 3, 4]
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
def play_major_6
|
25
23
|
[1, 1, 3, 3, 3, 3]
|
26
24
|
end
|
@@ -40,7 +38,7 @@ module Chordy
|
|
40
38
|
def play_minor_7
|
41
39
|
[1, 1, 3, 1, 2, 1]
|
42
40
|
end
|
43
|
-
|
41
|
+
|
44
42
|
def play_half_diminished_7
|
45
43
|
[1, 1, 2, 1, 2, 4]
|
46
44
|
end
|
data/lib/chordy/chords/b.rb
CHANGED
data/lib/chordy/chords/c.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require File.join(File.dirname(__FILE__), '..', 'chord')
|
4
2
|
|
5
3
|
module Chordy
|
@@ -20,7 +18,7 @@ module Chordy
|
|
20
18
|
def play_dominant_7_5
|
21
19
|
[-1, 2, 3, 4, 2, 3]
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
def play_major_6
|
25
23
|
[1, 1, 3, 1, 2, 1]
|
26
24
|
end
|
@@ -40,7 +38,7 @@ module Chordy
|
|
40
38
|
def play_minor_7
|
41
39
|
[0, 2, 2, 4, 2, 4]
|
42
40
|
end
|
43
|
-
|
41
|
+
|
44
42
|
def play_half_diminished_7
|
45
43
|
[0, 2, 2, 4, 2, 3]
|
46
44
|
end
|
@@ -56,7 +54,7 @@ module Chordy
|
|
56
54
|
def play_augmented_7
|
57
55
|
[-1, 2, 3, 4, 2, 5]
|
58
56
|
end
|
59
|
-
|
57
|
+
|
60
58
|
def play_augmented_major_7
|
61
59
|
[1, 4, 3, 2, 1, 1]
|
62
60
|
end
|
data/lib/chordy/chords/d.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require File.join(File.dirname(__FILE__), '..', 'chord')
|
4
2
|
|
5
3
|
module Chordy
|
@@ -20,7 +18,7 @@ module Chordy
|
|
20
18
|
def play_dominant_7_5
|
21
19
|
[-1, 0, 1, 2, 2, 3]
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
def play_major_6
|
25
23
|
[-1, 1, 1, 3, 1, 3]
|
26
24
|
end
|
@@ -40,7 +38,7 @@ module Chordy
|
|
40
38
|
def play_minor_7
|
41
39
|
[-1, 1, 1, 3, 2, 2]
|
42
40
|
end
|
43
|
-
|
41
|
+
|
44
42
|
def play_half_diminished_7
|
45
43
|
[2, -1, 1, 2, 2, 2]
|
46
44
|
end
|
@@ -56,7 +54,7 @@ module Chordy
|
|
56
54
|
def play_augmented_7
|
57
55
|
[-1, -1, 1, 4, 2, 3]
|
58
56
|
end
|
59
|
-
|
57
|
+
|
60
58
|
def play_augmented_major_7
|
61
59
|
[-1, 2, 1, 0, 3, 3]
|
62
60
|
end
|
data/lib/chordy/chords/e.rb
CHANGED
data/lib/chordy/chords/f.rb
CHANGED
data/lib/chordy/chords/g.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require File.join(File.dirname(__FILE__), '..', 'chord')
|
4
2
|
|
5
3
|
module Chordy
|
@@ -20,7 +18,7 @@ module Chordy
|
|
20
18
|
def play_dominant_7_5
|
21
19
|
[-1, -1, 0, 1, 1, 2]
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
def play_major_6
|
25
23
|
[4, 3, 1, 1, 1, 1]
|
26
24
|
end
|
@@ -40,7 +38,7 @@ module Chordy
|
|
40
38
|
def play_minor_7
|
41
39
|
[0, 0, 2, 2, 1, 3]
|
42
40
|
end
|
43
|
-
|
41
|
+
|
44
42
|
def play_half_diminished_7
|
45
43
|
[2, 2, 0, 1, 0, 2]
|
46
44
|
end
|
@@ -56,7 +54,7 @@ module Chordy
|
|
56
54
|
def play_augmented_7
|
57
55
|
[-1, 3, 2, 1, 1, 2]
|
58
56
|
end
|
59
|
-
|
57
|
+
|
60
58
|
def play_augmented_major_7
|
61
59
|
[0, 3, 2, 1, 1, 3]
|
62
60
|
end
|
data/lib/chordy/util/section.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module Util
|
4
2
|
|
5
3
|
class Section
|
@@ -9,7 +7,7 @@ module Util
|
|
9
7
|
@title = title
|
10
8
|
@separator_length = separator_length
|
11
9
|
end
|
12
|
-
|
10
|
+
|
13
11
|
def to_s
|
14
12
|
title_str = @title.to_s
|
15
13
|
title_str.rjust(title_str.length + 2, "-").ljust(@separator_length, "-")
|
data/lib/chordy/util/text.rb
CHANGED
data/lib/chordy/util/tuning.rb
CHANGED
data/lib/chordy_script.rb
CHANGED
data/test/helper.rb
CHANGED
data/test/test_chordy.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'helper'
|
4
2
|
|
5
3
|
class TestChordy < Test::Unit::TestCase
|
@@ -42,9 +40,29 @@ class TestChordy < Test::Unit::TestCase
|
|
42
40
|
end
|
43
41
|
end
|
44
42
|
|
45
|
-
should "
|
46
|
-
|
47
|
-
|
43
|
+
should "support any tuning length" do
|
44
|
+
no_auto
|
45
|
+
tuning_range = 1..20
|
46
|
+
|
47
|
+
tuning_range.each do |t|
|
48
|
+
assert_nothing_raised do
|
49
|
+
tuning = ["a"] * t
|
50
|
+
tune tuning
|
51
|
+
play :C
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
should "print to string" do
|
57
|
+
string = 1
|
58
|
+
no_of_strings = 6
|
59
|
+
|
60
|
+
no_auto
|
61
|
+
play [string] * no_of_strings
|
62
|
+
a = print_chords_to_string
|
63
|
+
a_parts = a.split("\n").first(no_of_strings)
|
64
|
+
|
65
|
+
a_parts.each { |c| assert(c.include? string.to_s) }
|
48
66
|
end
|
49
67
|
|
50
68
|
should "know strings at different positions" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chordy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
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:
|
12
|
+
date: 2013-02-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: shoulda
|
@@ -172,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
172
|
version: '0'
|
173
173
|
segments:
|
174
174
|
- 0
|
175
|
-
hash:
|
175
|
+
hash: 509814771
|
176
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
177
|
none: false
|
178
178
|
requirements:
|
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project: chordy
|
184
|
-
rubygems_version: 1.8.
|
184
|
+
rubygems_version: 1.8.25
|
185
185
|
signing_key:
|
186
186
|
specification_version: 3
|
187
187
|
summary: DSL for guitar chords
|