music_theory 0.3.2 → 0.3.3
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.
- checksums.yaml +4 -4
- data/Rakefile +0 -1
- data/lib/music_theory/arpeggio.rb +3 -3
- data/lib/music_theory/chord.rb +2 -2
- data/lib/music_theory/modes.rb +9 -9
- data/lib/music_theory/note.rb +1 -1
- data/lib/music_theory/octave.rb +1 -1
- data/lib/music_theory/play.rb +5 -4
- data/lib/music_theory/scale.rb +2 -2
- data/lib/music_theory/third.rb +6 -7
- data/lib/music_theory/version.rb +1 -1
- data/lib/music_theory.rb +0 -1
- data/music_theory.gemspec +3 -4
- metadata +7 -22
- data/note-charted.html +0 -157
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0afeebdefed0000fc75bfb4ec149479ad838b770
|
4
|
+
data.tar.gz: 6b0192c14c44c991d83bad249e9714281c20720e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 477ac900a8dc3b002840dd291af75496205a6792fd82b2c30f44277e91c736bcd8a3fe5bd7160c8b41be9f257e3241c6990522c4480d2f814d00426f3715e1bf
|
7
|
+
data.tar.gz: 6ac2534757cfa2671f1d332cffe3a3e781a1f8e7431fa5209d254118068f97198662566bb58e45345c9c5801dd2827f64f8c1f7a878c05173bf667d07394bd33
|
data/Rakefile
CHANGED
@@ -7,14 +7,14 @@ module MusicTheory
|
|
7
7
|
attr_accessor :third, :duration, :all_notes, :output_file_name
|
8
8
|
|
9
9
|
def initialize(third, options = {})
|
10
|
-
@duration
|
11
|
-
@third
|
10
|
+
@duration = options[:duration] || 0.25
|
11
|
+
@third = third
|
12
12
|
@output_file_name = options[:output_file_name] || 'chord' # File name to write (without extension)
|
13
13
|
end
|
14
14
|
|
15
15
|
def arpeggionate
|
16
16
|
third.all_notes.each {|note| note.duration = duration}
|
17
|
-
third.all_notes
|
17
|
+
third.all_notes += [third.all_notes[2], third.all_notes[1], third.all_notes[0], third.all_notes[1]]
|
18
18
|
end
|
19
19
|
|
20
20
|
def samples
|
data/lib/music_theory/chord.rb
CHANGED
@@ -7,8 +7,8 @@ module MusicTheory
|
|
7
7
|
attr_accessor :third, :duration, :all_notes, :output_file_name
|
8
8
|
|
9
9
|
def initialize(third, options = {})
|
10
|
-
@duration
|
11
|
-
@third
|
10
|
+
@duration = options[:duration] || 2.0
|
11
|
+
@third = third
|
12
12
|
@output_file_name = options[:output_file_name] || 'chord' # File name to write (without extension)
|
13
13
|
end
|
14
14
|
|
data/lib/music_theory/modes.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
module MusicTheory
|
2
2
|
class Modes
|
3
|
-
S
|
4
|
-
T
|
5
|
-
I
|
6
|
-
II
|
7
|
-
III
|
8
|
-
IV
|
9
|
-
V
|
10
|
-
VI
|
11
|
-
VII
|
3
|
+
S = 1
|
4
|
+
T = 2
|
5
|
+
I = [T, T, S, T, T, T, S]
|
6
|
+
II = I.rotate
|
7
|
+
III = I.rotate(2)
|
8
|
+
IV = I.rotate(3)
|
9
|
+
V = I.rotate(4)
|
10
|
+
VI = I.rotate(5)
|
11
|
+
VII = I.rotate(6)
|
12
12
|
CHROMATIC = [S,S,S,S,S,S,S,S,S,S,S,S]
|
13
13
|
|
14
14
|
# Map the music theory names as class methods
|
data/lib/music_theory/note.rb
CHANGED
@@ -7,7 +7,7 @@ module MusicTheory
|
|
7
7
|
|
8
8
|
def initialize(options = {})
|
9
9
|
@frequency = options[:frequency] || 440.0 # Note frequency in Hz
|
10
|
-
@frequency
|
10
|
+
@frequency = @frequency.to_f
|
11
11
|
@duration = options[:duration] || 1.0 # Number of seconds per note
|
12
12
|
@distort = options[:distort] || false
|
13
13
|
@output_file_name = options[:output_file_name] || 'note' # File name to write (without extension)
|
data/lib/music_theory/octave.rb
CHANGED
@@ -16,7 +16,7 @@ module MusicTheory
|
|
16
16
|
def build_octave
|
17
17
|
@all_notes = [ starting_note ]
|
18
18
|
amount.to_i.times do
|
19
|
-
new_note = all_notes.last.
|
19
|
+
new_note = all_notes.last.dup
|
20
20
|
if direction == 'asc'
|
21
21
|
new_note.frequency = all_notes.last.frequency * 2
|
22
22
|
elsif direction == 'desc'
|
data/lib/music_theory/play.rb
CHANGED
@@ -3,13 +3,14 @@ require 'music_theory/output'
|
|
3
3
|
module MusicTheory
|
4
4
|
class Play
|
5
5
|
include MusicTheory::Output
|
6
|
-
|
7
6
|
attr_accessor :samples, :output_file_name, :playable_music
|
7
|
+
|
8
8
|
def initialize(playable_music = [], options = {} )
|
9
|
-
@playable_music
|
10
|
-
@output_file_name
|
9
|
+
@playable_music = playable_music
|
10
|
+
@output_file_name = options[:output_file_name] || 'music'
|
11
|
+
@play = options[:play] || true
|
11
12
|
extract_samples
|
12
|
-
play
|
13
|
+
play if play
|
13
14
|
end
|
14
15
|
|
15
16
|
def extract_samples
|
data/lib/music_theory/scale.rb
CHANGED
@@ -52,7 +52,7 @@ module MusicTheory
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def third
|
55
|
-
third ||= MusicTheory::Third.new self
|
55
|
+
third ||= MusicTheory::Third.new self.dup
|
56
56
|
end
|
57
57
|
|
58
58
|
def arpeggio
|
@@ -60,7 +60,7 @@ module MusicTheory
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def chord
|
63
|
-
third.chord
|
63
|
+
chord ||= third.chord
|
64
64
|
end
|
65
65
|
|
66
66
|
end
|
data/lib/music_theory/third.rb
CHANGED
@@ -6,16 +6,15 @@ module MusicTheory
|
|
6
6
|
attr_accessor :scale, :all_notes
|
7
7
|
|
8
8
|
def initialize(scale)
|
9
|
-
@scale
|
10
|
-
@all_notes
|
11
|
-
current
|
9
|
+
@scale = scale
|
10
|
+
@all_notes = [scale.scale_notes.first]
|
11
|
+
current = 0
|
12
12
|
double_scale_notes = scale.scale_notes * 2
|
13
13
|
scale.mode.in_groups_of(2, false) do |group|
|
14
14
|
current += group.sum
|
15
15
|
all_notes << double_scale_notes[current]
|
16
16
|
end
|
17
|
-
all_notes.uniq! {|note| note.frequency}
|
18
|
-
all_notes.sort_by! {|note| note.frequency}
|
17
|
+
all_notes.uniq! {|note| note.frequency}.sort_by! {|note| note.frequency}
|
19
18
|
end
|
20
19
|
|
21
20
|
def samples
|
@@ -23,11 +22,11 @@ module MusicTheory
|
|
23
22
|
end
|
24
23
|
|
25
24
|
def chord
|
26
|
-
chord ||= MusicTheory::Chord.new self
|
25
|
+
chord ||= MusicTheory::Chord.new self.dup
|
27
26
|
end
|
28
27
|
|
29
28
|
def arpeggio
|
30
|
-
arpeggio ||= MusicTheory::Arpeggio.new self
|
29
|
+
arpeggio ||= MusicTheory::Arpeggio.new self.dup
|
31
30
|
end
|
32
31
|
|
33
32
|
def output_file_name
|
data/lib/music_theory/version.rb
CHANGED
data/lib/music_theory.rb
CHANGED
data/music_theory.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["beneggett@gmail.com"]
|
11
11
|
spec.summary = %q{Music theory with ruby}
|
12
12
|
spec.description = %q{Create music with pure ruby goodness}
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "http://www.beneggett.com/#/ben-eggett"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -18,10 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.
|
22
|
-
spec.add_dependency "activesupport"
|
21
|
+
spec.add_runtime_dependency "wavefile", "~> 0"
|
23
22
|
|
24
|
-
spec.add_development_dependency "pry"
|
23
|
+
spec.add_development_dependency "pry", "~> 0"
|
25
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
26
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
26
|
end
|
metadata
CHANGED
@@ -1,55 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: music_theory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Eggett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: wavefile
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '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'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activesupport
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
17
|
+
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
19
|
version: '0'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: pry
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- - "
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
@@ -107,13 +93,12 @@ files:
|
|
107
93
|
- lib/music_theory/transpose.rb
|
108
94
|
- lib/music_theory/version.rb
|
109
95
|
- music_theory.gemspec
|
110
|
-
- note-charted.html
|
111
96
|
- samples/arpeggios.rb
|
112
97
|
- samples/demo.rb
|
113
98
|
- samples/happy.rb
|
114
99
|
- samples/simple_song.rb
|
115
100
|
- samples/song.rb
|
116
|
-
homepage:
|
101
|
+
homepage: http://www.beneggett.com/#/ben-eggett
|
117
102
|
licenses:
|
118
103
|
- MIT
|
119
104
|
metadata: {}
|