coltrane 3.0.0.rc1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5d1a8621e3e0f3c4b9b7841ea9f353c8195865a02049d0f5c5739efceaab92d
4
- data.tar.gz: 2c6cea9e60d30e64d01d69270af7bc6c58f7c44fc9d3511d813856538e341aca
3
+ metadata.gz: 24aa3d9be0bb2cdecadedb502c16276e1d749cb59cd0e58be75ec92ba49e61f7
4
+ data.tar.gz: b5cb786fc245433adec30d304aa13017a975bf031802082f82a43738e2e7ccfb
5
5
  SHA512:
6
- metadata.gz: e95088c4907c8014e78b55d5b30da64ac61363643b8ba07ddd3354be49ffb22a23e5942cdd129d7c0a4f06698fd55420736a8fd149c7a1edf8fa2c7776fae124
7
- data.tar.gz: 2b01cdd22465ad3f722447854aa3b1d6eb195f53063dbab2cc1a48bc55e331731c730b5c72227eb69cd2ee59d42cb0138989428a5067686cd58777bce4f8ef2e
6
+ metadata.gz: f8364216d8f087301c4d9576f5f2722e6635a194e8bd4910d2114ff68bd79dbc1091a5a894680dc11e004063132d6add3bb5f43029dd6391b147db1ffc1c723a
7
+ data.tar.gz: 05127ca168287aff2d5754eeb0f2cddce7ed27f0fa4b36bf149c1d6725b16bedc592df1a1842b0504904bf467a51e65255879175b8bd527b1d122316a5afc80e
data/Gemfile CHANGED
@@ -6,13 +6,12 @@ group :test, :development do
6
6
  gem 'pry'
7
7
  gem 'pry-byebug'
8
8
  gem 'pry-rescue'
9
- # gem 'pronto'
10
- gem 'pronto-rubocop'
11
9
  gem 'opal-rspec'
12
10
  end
13
11
 
14
12
  group :test do
15
13
  gem 'rspec'
14
+ gem 'tty-prompt'
16
15
  gem 'simplecov', require: false
17
16
  gem 'rubocop', require: false
18
17
  end
@@ -1,18 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- coltrane (3.0.0.rc1)
4
+ coltrane (3.0.0)
5
5
  color (~> 1.8)
6
6
  dry-monads (~> 0.4)
7
+ mercenary (~> 0.3)
7
8
  paint (~> 2.0.1)
8
- pedrozath-mercenary (~> 0.3)
9
- tty-prompt (~> 0.16.0)
10
9
 
11
10
  GEM
12
11
  remote: https://rubygems.org/
13
12
  specs:
14
- addressable (2.5.2)
15
- public_suffix (>= 2.0.2, < 4.0)
16
13
  ast (2.3.0)
17
14
  byebug (9.1.0)
18
15
  coderay (1.1.2)
@@ -27,23 +24,13 @@ GEM
27
24
  dry-core (~> 0.3, >= 0.3.3)
28
25
  dry-equalizer
29
26
  equatable (0.5.0)
30
- faraday (0.14.0)
31
- multipart-post (>= 1.2, < 3)
32
- gitlab (3.6.1)
33
- httparty
34
- terminal-table
35
27
  hike (1.2.3)
36
28
  hitimes (1.2.6)
37
- httparty (0.16.1)
38
- multi_xml (>= 0.5.2)
39
29
  interception (0.5)
40
30
  json (2.1.0)
31
+ mercenary (0.3.6)
41
32
  method_source (0.9.0)
42
- multi_xml (0.6.0)
43
- multipart-post (2.0.0)
44
33
  necromancer (0.4.0)
45
- octokit (4.8.0)
46
- sawyer (~> 0.8.0, >= 0.5.3)
47
34
  opal (0.10.5)
48
35
  hike (~> 1.2)
49
36
  sourcemap (~> 0.1.0)
@@ -58,16 +45,7 @@ GEM
58
45
  pastel (0.7.2)
59
46
  equatable (~> 0.5.0)
60
47
  tty-color (~> 0.4.0)
61
- pedrozath-mercenary (0.3.6)
62
48
  powerpack (0.1.1)
63
- pronto (0.6.0)
64
- gitlab (~> 3.6, >= 3.4.0)
65
- octokit (~> 4.3, >= 4.1.0)
66
- rugged (~> 0.24, >= 0.23.0)
67
- thor (~> 0.19.0)
68
- pronto-rubocop (0.6.2)
69
- pronto (~> 0.6.0)
70
- rubocop (~> 0.38, >= 0.35.0)
71
49
  pry (0.11.3)
72
50
  coderay (~> 1.1.0)
73
51
  method_source (~> 0.9.0)
@@ -77,7 +55,6 @@ GEM
77
55
  pry-rescue (1.4.5)
78
56
  interception (>= 0.5)
79
57
  pry
80
- public_suffix (3.0.2)
81
58
  rack (2.0.4)
82
59
  rainbow (3.0.0)
83
60
  rake (10.5.0)
@@ -102,10 +79,6 @@ GEM
102
79
  ruby-progressbar (~> 1.7)
103
80
  unicode-display_width (~> 1.0, >= 1.0.1)
104
81
  ruby-progressbar (1.9.0)
105
- rugged (0.26.0)
106
- sawyer (0.8.1)
107
- addressable (>= 2.3.5, < 2.6)
108
- faraday (~> 0.8, < 1.0)
109
82
  simplecov (0.15.1)
110
83
  docile (~> 1.1.0)
111
84
  json (>= 1.8, < 3)
@@ -115,9 +88,6 @@ GEM
115
88
  sprockets (3.7.1)
116
89
  concurrent-ruby (~> 1.0)
117
90
  rack (> 1, < 3)
118
- terminal-table (1.8.0)
119
- unicode-display_width (~> 1.1, >= 1.1.1)
120
- thor (0.19.4)
121
91
  tilt (2.0.8)
122
92
  timers (4.1.2)
123
93
  hitimes
@@ -144,7 +114,6 @@ DEPENDENCIES
144
114
  bundler (~> 1.14)
145
115
  coltrane!
146
116
  opal-rspec
147
- pronto-rubocop
148
117
  pry
149
118
  pry-byebug
150
119
  pry-rescue
@@ -152,6 +121,7 @@ DEPENDENCIES
152
121
  rspec
153
122
  rubocop
154
123
  simplecov
124
+ tty-prompt
155
125
 
156
126
  BUNDLED WITH
157
127
  1.16.1
data/README.md CHANGED
@@ -11,7 +11,7 @@ A music calculation library/CLI written in Ruby.
11
11
 
12
12
  * [How to use this library](https://github.com/pedrozath/coltrane/wiki/Core-music-theory-library).
13
13
  * [Why did I write this library](https://medium.com/@pedrozath/so-i-wrote-a-library-to-help-me-compose-music-ddb4ae7c8227).
14
- * [Chat room for discussing the project, answering questions, etc.](https://gitter.im/coltrane-music/Lobby)
14
+ * [Chat room for discussing the project, answering questions, etc.](http://coltrane-ruby.herokuapp.com/)
15
15
 
16
16
  ## CLI (Command Line Interface)
17
17
 
@@ -42,7 +42,7 @@ PS: Once you install the gem the CLI is instaled in your system and it's ready t
42
42
 
43
43
  ## Contributing
44
44
 
45
- We are looking for contributors. Find me on [our chatroom](https://gitter.im/coltrane-music/Lobby) if you need any kind of information.
45
+ We are looking for contributors. Find me on [our chatroom](http://coltrane-ruby.herokuapp.com/) if you need any kind of information.
46
46
 
47
47
  ### How to contribute
48
48
  1. Fork this code
@@ -32,11 +32,10 @@ Gem::Specification.new do |spec|
32
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
33
  spec.require_paths = ["lib"]
34
34
 
35
- spec.add_runtime_dependency 'tty-prompt', '~> 0.16.0'
36
35
  spec.add_runtime_dependency 'dry-monads', '~> 0.4'
37
36
  spec.add_runtime_dependency 'paint', '~> 2.0.1'
38
37
  spec.add_runtime_dependency 'color', '~> 1.8'
39
- spec.add_runtime_dependency 'pedrozath-mercenary', '~> 0.3'
38
+ spec.add_runtime_dependency 'mercenary', '~> 0.3'
40
39
  spec.add_development_dependency "bundler", '~> 1.14'
41
40
  spec.add_development_dependency "rake", '~> 10.0'
42
41
  end
@@ -1,13 +1,14 @@
1
1
  module Coltrane
2
2
  module Commands
3
3
  class Chords < Command
4
- attr_reader :chord, :flavor, :on, :preface
4
+ attr_reader :chord, :flavor, :on, :preface, :voicings
5
5
 
6
6
  def initialize(chord = nil,
7
7
  flavor: :notes,
8
8
  on: :text,
9
9
  notes: nil,
10
10
  preface: nil,
11
+ voicings: 4,
11
12
  **options)
12
13
  if chord
13
14
  @chord = chord.is_a?(Theory::Chord) ? chord : Theory::Chord.new(name: chord)
@@ -18,9 +19,10 @@ module Coltrane
18
19
  'or coltrane chords --notes C-E-G'
19
20
  end
20
21
 
21
- @flavor = flavor.to_sym
22
- @preface = preface || @chord.name
23
- @on = on.to_sym
22
+ @flavor = flavor.to_sym
23
+ @preface = preface || @chord.name
24
+ @on = on.to_sym
25
+ @voicings = voicings.to_i
24
26
  end
25
27
 
26
28
  def representation
@@ -31,10 +33,12 @@ module Coltrane
31
33
  def on_model
32
34
  case on
33
35
  when :text then chord
34
- when :guitar then Representation::Guitar.find_chords(chord).first(6)
35
- when :ukulele, :ukelele then Representation::Ukulele.find_chords(chord).first(6)
36
- when :bass then Representation::Bass.find_chords(chord).first(6)
36
+ when :guitar then Representation::Guitar.find_chords(chord).first(voicings)
37
+ when :ukulele, :ukelele then Representation::Ukulele.find_chords(chord).first(voicings)
38
+ when :bass then Representation::Bass.find_notes(chord.notes)
37
39
  when :piano then Representation::Piano.find_notes(chord.notes)
40
+ when :'guitar-frets' then Representation::Guitar.find_notes(chord.notes)
41
+ when :'ukulele-frets', :'ukelele-frets' then Representation::Ukulele.find_notes(chord.notes)
38
42
  end
39
43
  end
40
44
 
@@ -48,7 +52,7 @@ module Coltrane
48
52
  (
49
53
  {
50
54
  layout: :horizontal,
51
- per_row: 6,
55
+ per_row: 4,
52
56
  } if layout_horizontal?
53
57
  )
54
58
  ]
@@ -67,8 +71,11 @@ module Coltrane
67
71
 
68
72
  add_shared_option(:flavor, c)
69
73
  add_shared_option(:on, c)
74
+ add_shared_option(:voicings, c)
70
75
  c.action { |(chords), **options|
71
- (chords&.split('-') || [nil]).each { |chord| new(chord, **options).render }
76
+ (chords&.split('-') || [nil]).each { |chord|
77
+ new(chord, **options).render
78
+ }
72
79
  }
73
80
  end
74
81
  end
@@ -3,15 +3,21 @@ module Coltrane
3
3
  class Command
4
4
  COMMON_OPTIONS = {
5
5
  on: [
6
- '--on guitar INSTRUMENT',
6
+ '--on <INSTRUMENT>',
7
7
  'Shows the notes on the given instrument/representation type. ' \
8
8
  'Can be piano, guitar, ukulele, bass or text'
9
9
  ],
10
10
 
11
11
  flavor: [
12
- '--flavor FLAVOR',
12
+ '--flavor <FLAVOR>',
13
13
  'Chooses which additional information to display: ' \
14
14
  'marks, notes, intervals or degrees'
15
+ ],
16
+
17
+ voicings: [
18
+ '--voicings <NUMBER>',
19
+ 'Number of voicings for guitar like instruments. Default is 6' \
20
+ 'provided they are separated by dashes'
15
21
  ]
16
22
  }
17
23
 
@@ -34,6 +34,7 @@ module Coltrane
34
34
  c.alias(:note)
35
35
  c.syntax 'notes <notes separated by space> [--on <instrument>]'
36
36
  c.description 'Shows the given notes.'
37
+ add_shared_option(:voicings, c)
37
38
  add_shared_option(:flavor, c)
38
39
  add_shared_option(:on, c)
39
40
  c.action { |(notes), **options| new(notes, **options).render }
@@ -7,6 +7,7 @@ module Coltrane
7
7
  c.description 'Gives you chords of a progression in a key. Ex: coltrane progression I-IV-iv-V in Am --on guitar'
8
8
  add_shared_option(:flavor, c)
9
9
  add_shared_option(:on, c)
10
+ add_shared_option(:voicings, c)
10
11
  c.action do |(prog, _, key), **options|
11
12
  prog
12
13
  .tr('-', '_')
@@ -18,10 +18,11 @@ module Coltrane
18
18
  program.command(:scale) do |c|
19
19
  c.syntax 'scale <root_note> <scale name> [--on <instrument>]'
20
20
  c.description 'Gives you information about a scale. Ex: coltrane scale D Natural Minor --on guitar'
21
- c.option :tertians, '--tertians SIZE', 'Outputs all tertian chords from the given size from the scale'
21
+ c.option :tertians, '--tertians <SIZE>', 'Outputs all tertian chords from the given size from the scale'
22
22
  c.option :chords, '--chords [SIZE]', 'Outputs all chords from given size from the scale. Leave size empty to retrieve all'
23
23
  add_shared_option(:flavor, c)
24
24
  add_shared_option(:on, c)
25
+ add_shared_option(:voicings, c)
25
26
 
26
27
  c.action { |scale_notation, **options|
27
28
  parse(scale_notation.join(' '))
@@ -6,15 +6,15 @@ module Coltrane
6
6
  # based on common standards and practices.
7
7
  module NotableProgressions
8
8
  PROGRESSIONS = {
9
- 'Pop' => ['I-V-vi-IV', :major],
10
- 'Jazzy Pop' => ['IM7-V7-vi7-IVM7', :major],
11
- 'Jazz' => ['ii7-V7-I7', :major],
9
+ 'Pop' => ['I-V-vi-IV', :major],
10
+ 'Jazzy Pop' => ['IM7-V7-vi7-IVM7', :major],
11
+ 'Jazz' => ['ii7-V7-I7', :major],
12
12
  'Jazz Minor' => ['ii7-V7-i7', :major],
13
- 'Blues' => ['IM7-IV7-I7-V7-IV7-I7', :major],
13
+ 'Blues' => ['IM7-IV7-I7-V7-IV7-I7', :major],
14
14
  'Jazz Blues' => ['I7-IV7-I7-V7-IV7-I7', :major],
15
- 'Fifties' => ['I-vi-IV-V', :major],
16
- 'Circle' => ['vi-ii-V-I', :major],
17
- 'Tune Up' => ['ii7-V7-IM7-i7-IV7-IVM7-VIIM7', :minor]
15
+ 'Fifties' => ['I-vi-IV-V', :major],
16
+ 'Circle' => ['vi-ii-V-I', :major],
17
+ 'Tune Up' => ['ii7-V7-IM7-i7-IV7-IVM7-VIIM7', :minor]
18
18
  }.freeze
19
19
 
20
20
  PROGRESSIONS.each do |name, values|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Coltrane
4
- VERSION = '3.0.0.rc1'
4
+ VERSION = '3.0.0'
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coltrane
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.rc1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Maciel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-01 00:00:00.000000000 Z
11
+ date: 2018-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: tty-prompt
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.16.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.16.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: dry-monads
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +53,7 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '1.8'
69
55
  - !ruby/object:Gem::Dependency
70
- name: pedrozath-mercenary
56
+ name: mercenary
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
@@ -182,7 +168,6 @@ files:
182
168
  - lib/coltrane/commands/find_scale.rb
183
169
  - lib/coltrane/commands/notes.rb
184
170
  - lib/coltrane/commands/progression.rb
185
- - lib/coltrane/commands/representation.rb
186
171
  - lib/coltrane/commands/scale.rb
187
172
  - lib/coltrane/renderers.rb
188
173
  - lib/coltrane/renderers/renderer.rb
@@ -259,9 +244,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
259
244
  version: '2.5'
260
245
  required_rubygems_version: !ruby/object:Gem::Requirement
261
246
  requirements:
262
- - - ">"
247
+ - - ">="
263
248
  - !ruby/object:Gem::Version
264
- version: 1.3.1
249
+ version: '0'
265
250
  requirements: []
266
251
  rubyforge_project:
267
252
  rubygems_version: 2.7.6
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Coltrane
4
- module Cli
5
- # It manages notes representations, most of times instruments
6
- class Representation
7
- ACCEPTED_FLAVORS = %i[marks notes intervals degrees].freeze
8
-
9
- def self.inherited(subclass)
10
- @@types ||= {}
11
- @@types[subclass.to_s.split('::').last.underscore.to_sym] = subclass
12
- end
13
-
14
- def self.build(notes)
15
- type = Cli.config.on
16
- raise WrongFlavorError unless ACCEPTED_FLAVORS.include?(Cli.config.flavor)
17
- raise(WrongRepresentationTypeError, type) unless @@types.include?(type)
18
- @@types[type].new(notes)
19
- end
20
-
21
- def initialize(notes)
22
- @notes = notes
23
- @ref_note = notes.first
24
- end
25
-
26
- def hint
27
- case Cli.config.flavor
28
- when :marks then ''
29
- # when :notes then "(\u266E means the note is natural, not flat nor sharp)"
30
- when :intervals
31
- <<~DESC
32
- The letters represent the intervals relative to the root tone
33
- Ex: 1P = Perfect First / 3m = Minor Third / 4A = Augmented Fourth
34
- DESC
35
-
36
- when :degrees then '(The numbers represent the degree of the note in the scale)'
37
- end
38
- end
39
- end
40
- end
41
- end