tonal-tools 5.0.1 → 5.1.2
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/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
|