Path-based goodness: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
Hkm (talk | contribs)
No edit summary
Hkm (talk | contribs)
No edit summary
Line 2: Line 2:


# Choose values for the parameters <code>error_power</code>, <code>complexity_fondness</code>, <code>inaccuracy_fondness</code>, and <code>target_score</code>. The canonical values are:
# Choose values for the parameters <code>error_power</code>, <code>complexity_fondness</code>, <code>inaccuracy_fondness</code>, and <code>target_score</code>. The canonical values are:
#* <code>error_power</code> = 1.5,  
#* <code>error_power</code> = 1.5,  
#* <code>complexity_fondness</code> = 0.9,  
#* <code>complexity_fondness</code> = 0.9,  
#* <code>inaccuracy_fondness</code> = 0.98,  
#* <code>inaccuracy_fondness</code> = 0.98,  
#* <code>target_score</code> = 0.02.
#* <code>target_score</code> = 0.02.
# Let ''g'' be a variable. Assign to every JI interval (except 1/1) n/d with error e (in cents) a score equal to <code>inaccuracy_fondness</code>^(e^<code>error_power</code></code>) * <code>complexity_fondness</code>^(n+d) / ''g''.
# Let ''g'' be a variable. Assign to every JI interval (except 1/1) n/d with error e (in cents) a score equal to <code>inaccuracy_fondness</code>^(e^<code>error_power</code></code>) * <code>complexity_fondness</code>^(n+d) / ''g''.
# Assign to every ordered list of JI intervals a score equal to the product of the scores of all of its steps.
# Assign to every ordered list of JI intervals a score equal to the product of the scores of all of its steps.

Revision as of 17:33, 9 July 2025

Path-based goodness is a metric for judging the accuracy and simplicity of temperaments. To compute path-based goodness, we can apply the following steps:

  1. Choose values for the parameters error_power, complexity_fondness, inaccuracy_fondness, and target_score. The canonical values are:
    • error_power = 1.5,
    • complexity_fondness = 0.9,
    • inaccuracy_fondness = 0.98,
    • target_score = 0.02.
  2. Let g be a variable. Assign to every JI interval (except 1/1) n/d with error e (in cents) a score equal to inaccuracy_fondness^(e^error_power) * complexity_fondness^(n+d) / g.
  3. Assign to every ordered list of JI intervals a score equal to the product of the scores of all of its steps.
  4. Assign to every temperament with tuning a score equal to the sum of the scores of all the paths that yield a comma when the intervals are stacked.
  5. Assign to every temperament with tuning a goodness equal to the value g such that the score is equal to the target_score.
  6. Assign to every temperament a goodness equal to the largest goodness of that temperament across all generator tunings. In this way, path-based goodness also provides optimal tunings for temperaments.

Path-based goodness observes several properties that make it easier to compare across subgroups than Smith or Dirichlet badness.

  1. If we have two temperaments A and B which are equal except that in temperament A, some prime is free, while in temperament B, the prime is tuned arbitrarily close to temperament A's optimal tuning for that prime but related to the other primes by an arbitrarily complex comma, A and B have the same goodness.
  2. If we have two temperaments A and B which are equal except that B gives a mapping to a prime that A does not, but the tuned value for that prime is arbitrarily inaccurate, then A and B have the same goodness.

Path-based goodness can also be calculated for scales without JI interpretations; we assign to each note and just interval a tempered interval rooted on that note, and compute the goodness of the best assignment.