tonal-tools 5.0.1 → 5.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/commas.yml +9 -7
- data/lib/tonal/approximation.rb +7 -4
- data/lib/tonal/attributions.rb +1 -1
- data/lib/tonal/cents.rb +2 -0
- data/lib/tonal/comma.rb +5 -11
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83c904daf57681752be14329c6cd8630d700561d6184cb84705b908694b6f944
|
4
|
+
data.tar.gz: d64f5204212366b729be2f30609031aa50e8046d16c671f883d4957b0d2a8ad8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e8d2d083e168674ede2557213f36e722fced30e775d8ca4b52496005b7a317d8fa1ecb30ea4255e09049deb43b6c31b3b68a83b82ecbc19bd8d274cbdfc37bb
|
7
|
+
data.tar.gz: 632412ee397215fd1ee8eae32e412374a6b91d9432ec51cb047caeafe135347116f670b4da377d2f0031a89557911e6b7a8b0a1e3e57acb231235068f684c3a8
|
data/data/commas.yml
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
commas:
|
2
|
-
# Interval between two enharmonically equivalent notes, as B# and C, in the Pythogorean tuning. ~23 cents
|
3
|
-
ditonic: 531441/524288
|
4
|
-
# The interval between a just major third (5:4) and a Pythogorean third (81:64). ~22 cents
|
5
|
-
syntonic: 81/80
|
6
|
-
# Difference between the syntonic and ditonic commas. ~2 cents
|
7
|
-
schisma: 32805/32768
|
8
2
|
diaschisma: 2048/2025
|
3
|
+
# Interval between 16/15 and 10/9, 27/25 and 9/8, 6/5 and 5/4, 8/5 and 5/3, 16/9 and 50/27, 9/5 and 15/8. ~71¢
|
4
|
+
dicot: 25/24
|
9
5
|
dieses1: 648/625
|
10
6
|
dieses2: 128/125
|
11
|
-
|
7
|
+
# Interval between two enharmonically equivalent notes, as B# and C, in the Pythogorean tuning. ~23¢
|
8
|
+
ditonic: 531441/524288
|
9
|
+
# Difference between the syntonic and ditonic commas. ~2¢
|
10
|
+
schisma: 32805/32768
|
11
|
+
septimal: 64/63
|
12
|
+
# The interval between a just major third (5:4) and a Pythogorean third (81:64). ~22¢
|
13
|
+
syntonic: 81/80
|
data/lib/tonal/approximation.rb
CHANGED
@@ -4,6 +4,9 @@ class Tonal::Ratio
|
|
4
4
|
DEFAULT_MAX_GRID_SCALE = 100
|
5
5
|
DEFAULT_MAX_GRID_BOUNDARY = 5
|
6
6
|
DEFAULT_DEPTH = Float::INFINITY
|
7
|
+
DEFAULT_FRACTION_TREE_DEPTH = 10
|
8
|
+
DEFAULT_SUPERPART_DEPTH = 20
|
9
|
+
DEFAULT_NEIGHBORHOOD_DEPTH = 10
|
7
10
|
DEFAULT_COMPLEXITY_AMOUNT = 50.0
|
8
11
|
CONVERGENT_LIMIT = 10
|
9
12
|
|
@@ -47,7 +50,7 @@ class Tonal::Ratio
|
|
47
50
|
# @param max_prime the maximum prime number to allow in the collection
|
48
51
|
# @param conv_limit the number of convergents to limit the ContinuedFraction method
|
49
52
|
#
|
50
|
-
def by_quotient_walk(cents_tolerance: Tonal::Cents::TOLERANCE, depth:
|
53
|
+
def by_quotient_walk(cents_tolerance: Tonal::Cents::TOLERANCE, depth: DEFAULT_FRACTION_TREE_DEPTH, max_prime: DEFAULT_MAX_PRIME, conv_limit: CONVERGENT_LIMIT)
|
51
54
|
self_in_cents = to_cents
|
52
55
|
within = cents_tolerance.kind_of?(Tonal::Cents) ? cents_tolerance : Tonal::Cents.new(cents: cents_tolerance)
|
53
56
|
|
@@ -68,7 +71,7 @@ class Tonal::Ratio
|
|
68
71
|
# @param depth the maximum number of ratios in the collection
|
69
72
|
# @param max_prime the maximum prime number to allow in the collection
|
70
73
|
#
|
71
|
-
def by_tree_path(cents_tolerance: Tonal::Cents::TOLERANCE, depth:
|
74
|
+
def by_tree_path(cents_tolerance: Tonal::Cents::TOLERANCE, depth: DEFAULT_FRACTION_TREE_DEPTH, max_prime: DEFAULT_MAX_PRIME)
|
72
75
|
self_in_cents = to_cents
|
73
76
|
within = cents_tolerance.kind_of?(Tonal::Cents) ? cents_tolerance : Tonal::Cents.new(cents: cents_tolerance)
|
74
77
|
Set.new(ratio: ratio) do |ratios|
|
@@ -89,7 +92,7 @@ class Tonal::Ratio
|
|
89
92
|
# @param max_prime the maximum prime number to allow in the collection
|
90
93
|
# @param superpart if the superior part is the numerator or denominator
|
91
94
|
#
|
92
|
-
def by_superparticular(cents_tolerance: Tonal::Cents::TOLERANCE, depth:
|
95
|
+
def by_superparticular(cents_tolerance: Tonal::Cents::TOLERANCE, depth: DEFAULT_SUPERPART_DEPTH, max_prime: DEFAULT_MAX_PRIME, superpart: :upper)
|
93
96
|
self_in_cents = to_cents
|
94
97
|
within = cents_tolerance.kind_of?(Tonal::Cents) ? cents_tolerance : Tonal::Cents.new(cents: cents_tolerance)
|
95
98
|
Set.new(ratio: ratio) do |ratios|
|
@@ -113,7 +116,7 @@ class Tonal::Ratio
|
|
113
116
|
# @param max_boundary the maximum distance grid ratios will be from the scaled ratio
|
114
117
|
# @param max_scale the maximum self will be scaled
|
115
118
|
#
|
116
|
-
def by_neighborhood(cents_tolerance: Tonal::Cents::TOLERANCE, depth:
|
119
|
+
def by_neighborhood(cents_tolerance: Tonal::Cents::TOLERANCE, depth: DEFAULT_NEIGHBORHOOD_DEPTH, max_prime: DEFAULT_MAX_PRIME, max_boundary: DEFAULT_MAX_GRID_BOUNDARY, max_scale: DEFAULT_MAX_GRID_SCALE)
|
117
120
|
self_in_cents = to_cents
|
118
121
|
within = cents_tolerance.kind_of?(Tonal::Cents) ? cents_tolerance : Tonal::Cents.new(cents: cents_tolerance)
|
119
122
|
Set.new(ratio: ratio) do |ratios|
|
data/lib/tonal/attributions.rb
CHANGED
data/lib/tonal/cents.rb
CHANGED
@@ -56,6 +56,7 @@ class Tonal::Cents
|
|
56
56
|
@value.round(precision)
|
57
57
|
end
|
58
58
|
alias :cents :value
|
59
|
+
alias :to_f :value
|
59
60
|
|
60
61
|
# @return
|
61
62
|
# [Tonal::Cents] nearest hundredth cent value
|
@@ -92,6 +93,7 @@ class Tonal::Cents
|
|
92
93
|
def inspect
|
93
94
|
"#{value.round(@precision)}"
|
94
95
|
end
|
96
|
+
alias :to_s :inspect
|
95
97
|
|
96
98
|
#
|
97
99
|
# Challenges to comparing floats
|
data/lib/tonal/comma.rb
CHANGED
@@ -2,9 +2,9 @@ class Tonal::Comma
|
|
2
2
|
# @return [Hash] of comma key/value pairs
|
3
3
|
# @example
|
4
4
|
# Tonal::Comma.commas
|
5
|
-
# => {"
|
6
|
-
# "
|
7
|
-
# "
|
5
|
+
# => {"diaschisma"=>"2048/2025",
|
6
|
+
# "dicot"=>"25/24",
|
7
|
+
# "dieses1"=>"648/625",
|
8
8
|
# ...}
|
9
9
|
#
|
10
10
|
def self.commas
|
@@ -14,10 +14,7 @@ class Tonal::Comma
|
|
14
14
|
# @return [Array] of comma values
|
15
15
|
# @example
|
16
16
|
# Tonal::Comma.values
|
17
|
-
# => [(
|
18
|
-
# (81/80),
|
19
|
-
# (32805/32768),
|
20
|
-
# ...]
|
17
|
+
# => [(2048/2025), (25/24), (648/625), ...]
|
21
18
|
#
|
22
19
|
def self.values
|
23
20
|
@values ||= commas.values.map(&:to_r)
|
@@ -26,10 +23,7 @@ class Tonal::Comma
|
|
26
23
|
# @return [Array] of comma keys
|
27
24
|
# @example
|
28
25
|
# Tonal::Comma.keys
|
29
|
-
# => ["
|
30
|
-
# "syntonic",
|
31
|
-
# "schisma",
|
32
|
-
# ...]
|
26
|
+
# => ["diaschisma", "dicot", "dieses1", ...]
|
33
27
|
#
|
34
28
|
def self.keys
|
35
29
|
@keys ||= commas.keys
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tonal-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Hales-Garcia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yaml
|
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
192
|
- !ruby/object:Gem::Version
|
193
193
|
version: '3.1'
|
194
194
|
requirements: []
|
195
|
-
rubygems_version: 3.5.
|
195
|
+
rubygems_version: 3.5.9
|
196
196
|
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: Tonal tools
|