musician 0.0.0
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 +7 -0
- data/lib/files/chord.rb +86 -0
- data/lib/files/music.rb +29 -0
- data/lib/files/song.rb +71 -0
- data/lib/musician.rb +3 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3025626213997e715c4b42c5c21478dbd1895c0e
|
4
|
+
data.tar.gz: 00bb0168e1b86374ff0a20677ef51c5c7f8b5d5d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6a23414692035b15c0d96118b296f5bb700faa6c21d41cf78cd1aa6a39b978f111d805fd5503e02baf9957091b527da06cb2c85e8d942862b7cf66dc9fe187ed
|
7
|
+
data.tar.gz: b3c25b41bc11de1a4fefb3c604a85330ebb91a816e2418e427fb376cf584ceb0bcad6850547b9fdab805b18df8a746cf42ee70dc7821798e8ed3344cb3714ebb
|
data/lib/files/chord.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
class Chord
|
2
|
+
|
3
|
+
Sharp = "♯"
|
4
|
+
Flat = "♭"
|
5
|
+
|
6
|
+
attr_accessor :name, :sanitized_name, :addition
|
7
|
+
attr_reader :Sharp_chords, :Flat_chords
|
8
|
+
|
9
|
+
def initialize(name)
|
10
|
+
name = name.tr("#b", "#{Sharp}#{Flat}") # gsub()の変わりに「tr」を使ってる(・ω・)
|
11
|
+
@name = name
|
12
|
+
sanitized_elements = sanitize_method
|
13
|
+
@sanitized_name = sanitized_elements[0]
|
14
|
+
@addition = sanitized_elements[1]
|
15
|
+
@Sharp_chords = ["C", "C♯", "D", "D♯", "E", "F", "F♯", "G", "G♯", "A", "A♯", "B"]
|
16
|
+
@Flat_chords = ["C", "D♭", "D", "E♭", "E", "F", "G♭", "G", "A♭", "A", "B♭", "B"]
|
17
|
+
end
|
18
|
+
|
19
|
+
# 真偽を返して欲しかったから次のように書きました
|
20
|
+
def sharp?
|
21
|
+
!!name.match(/#/) || !!name.match(/♯/)
|
22
|
+
end
|
23
|
+
|
24
|
+
def flat?
|
25
|
+
!!name.match(/b/) || !!name.match(/♭/)
|
26
|
+
end
|
27
|
+
|
28
|
+
def position
|
29
|
+
# 1を足す理由は、key_changeの中で使うためです
|
30
|
+
# 1が足されないと計算がうまくできないから
|
31
|
+
# そして配列が正しく定義されるように、new_position -= 1 を def key_change ... end の中に行う
|
32
|
+
if sharp?
|
33
|
+
@Sharp_chords.index(sanitized_name)
|
34
|
+
else
|
35
|
+
@Flat_chords.index(sanitized_name)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def sanitize_method
|
41
|
+
|
42
|
+
addition = ""
|
43
|
+
|
44
|
+
case name
|
45
|
+
when /dim7/ then
|
46
|
+
addition = "dim7"
|
47
|
+
when /dim/ then
|
48
|
+
addition = "dim"
|
49
|
+
when /2/ then
|
50
|
+
addition = "2"
|
51
|
+
when /sus4/ then
|
52
|
+
addition = "sus4"
|
53
|
+
when /sus/ then
|
54
|
+
addition = "sus"
|
55
|
+
when /maj7/ then
|
56
|
+
addition = "maj7"
|
57
|
+
when /maj/ then
|
58
|
+
addition = "maj"
|
59
|
+
when /m7/ then
|
60
|
+
addition = "m7"
|
61
|
+
when /m/ then
|
62
|
+
addition = "m"
|
63
|
+
when /7/ then
|
64
|
+
addition = "7"
|
65
|
+
when /6/ then
|
66
|
+
addition = "6"
|
67
|
+
when /9/ then
|
68
|
+
addition = "9"
|
69
|
+
when /aug/ then
|
70
|
+
addition = "aug"
|
71
|
+
when /11/ then
|
72
|
+
addition = "11"
|
73
|
+
end
|
74
|
+
|
75
|
+
sanitized_chord_array = []
|
76
|
+
if addition != ""
|
77
|
+
sanitized_chord_array << name.gsub(addition, "")
|
78
|
+
sanitized_chord_array << addition
|
79
|
+
else
|
80
|
+
sanitized_chord_array << name
|
81
|
+
sanitized_chord_array << ""
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/lib/files/music.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
class Music
|
2
|
+
|
3
|
+
def initialize
|
4
|
+
@quarter_note = "♩"
|
5
|
+
@half_note = ""
|
6
|
+
@whole_note = ""
|
7
|
+
@eight_note = "♪"
|
8
|
+
@sixteenth_note = ""
|
9
|
+
end
|
10
|
+
|
11
|
+
# この中にメソッドを作るかは分からないけど、
|
12
|
+
# とにかく普通のキーボードで書けないシンボルを使えるようにする
|
13
|
+
|
14
|
+
# Song.rbの方にはテンポがあるけど。。。
|
15
|
+
|
16
|
+
def add_notes(note1, note2)
|
17
|
+
# この中に、
|
18
|
+
note1 = "♪"
|
19
|
+
note2 = "♪"
|
20
|
+
new_note = note1 + note2
|
21
|
+
# をして、返すのは
|
22
|
+
"♩"
|
23
|
+
# みたいな感じのメソッドはどうかな
|
24
|
+
# 今の段階ではそんなにいらないけど、一応役に立つと思う
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
data/lib/files/song.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
class Song
|
2
|
+
|
3
|
+
attr_accessor :key, :chords, :title, :tempo
|
4
|
+
attr_reader :Sharp_chords, :Flat_chords
|
5
|
+
|
6
|
+
# keyは文字列で、chordsは文字列の配列
|
7
|
+
def initialize(key, chords)
|
8
|
+
@key = Chord.new(key)
|
9
|
+
@chords = chords.map do |chord|
|
10
|
+
Chord.new(chord)
|
11
|
+
end
|
12
|
+
# 作る時に定義しなくていいけど、一応自分で定義できる
|
13
|
+
@title = ""
|
14
|
+
@tempo = ""
|
15
|
+
end
|
16
|
+
|
17
|
+
def key_change(new_key, option)
|
18
|
+
new_key = Chord.new(new_key)
|
19
|
+
|
20
|
+
if key.position < new_key.position
|
21
|
+
key_up = true
|
22
|
+
difference = new_key.position - key.position
|
23
|
+
elsif key.position > new_key.position
|
24
|
+
key_up = false
|
25
|
+
difference = key.position - new_key.position
|
26
|
+
else
|
27
|
+
# キーが変わってない場合
|
28
|
+
difference = 0
|
29
|
+
end
|
30
|
+
|
31
|
+
new_chord_array = []
|
32
|
+
|
33
|
+
new_chord_array = chords.map do |chord|
|
34
|
+
if key_up == true
|
35
|
+
new_position = (chord.position + 1) + difference
|
36
|
+
if new_position > 12
|
37
|
+
new_position -= 12
|
38
|
+
end
|
39
|
+
else
|
40
|
+
new_position = (chord.position + 1) - difference
|
41
|
+
if new_position < 1
|
42
|
+
new_position += 12
|
43
|
+
end
|
44
|
+
end
|
45
|
+
new_position -= 1
|
46
|
+
|
47
|
+
case option
|
48
|
+
when :default || :sharp then
|
49
|
+
if chord.flat?
|
50
|
+
chord.Flat_chords[new_position] + chord.addition
|
51
|
+
else
|
52
|
+
chord.Sharp_chords[new_position] + chord.addition
|
53
|
+
end
|
54
|
+
when :flat then
|
55
|
+
if chord.sharp?
|
56
|
+
chord.Sharp_chords[new_position] + chord.addition
|
57
|
+
else
|
58
|
+
chord.Flat_chords[new_position] + chord.addition
|
59
|
+
end
|
60
|
+
when :all_sharp
|
61
|
+
chord.Sharp_chords[new_position] + chord.addition
|
62
|
+
when :all_flat
|
63
|
+
chord.Flat_chords[new_position] + chord.addition
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
Song.new(new_key.name, new_chord_array)
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
data/lib/musician.rb
ADDED
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: musician
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gabriel Arcangel Zayas
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-10 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: http://www.github.com/gazayas/musician
|
14
|
+
email: g-zayas@hotmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/files/chord.rb
|
20
|
+
- lib/files/music.rb
|
21
|
+
- lib/files/song.rb
|
22
|
+
- lib/musician.rb
|
23
|
+
homepage: http://www.github.com/gazayas/musician
|
24
|
+
licenses: []
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.5.1
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: A gem for musicians. 音楽家のために役に立つgemです。
|
46
|
+
test_files: []
|