Safe Haskell | Safe-Inferred |
---|
Clarence Barlow. "Two Essays on Theory". Computer Music Journal, 11(1):44-60, 1987. Translated by Henning Lohner.
- barlow :: (Integral a, Fractional b) => a -> b
- factor :: Integral a => [a] -> a -> [a]
- prime_factors :: Integral a => a -> [a]
- multiplicities :: (Eq a, Integral n) => [a] -> [(a, n)]
- prime_factors_m :: Integral a => a -> [(a, a)]
- merge :: (Ord a, Num b, Eq b) => [(a, b)] -> [(a, b)] -> [(a, b)]
- rational_prime_factors_m :: Integral b => (b, b) -> [(b, b)]
- rational_prime_factors_t :: Integral b => Int -> (b, b) -> [b]
- disharmonicity :: (Integral a, Num b) => (a -> b) -> (a, a) -> b
- harmonicity :: (Integral a, Fractional b) => (a -> b) -> (a, a) -> b
- harmonicity_r :: (Integral a, Fractional b) => (a -> b) -> Ratio a -> b
- cents :: (Real a, Floating b) => a -> b
- to_rational :: Integral a => (a, a) -> Ratio a
- from_rational :: Integral t => Ratio t -> (t, t)
- type Table_2_Row = (Double, [Integer], Rational, Double)
- table_2 :: Double -> [Table_2_Row]
- table_2_pp :: Table_2_Row -> String
Documentation
barlow :: (Integral a, Fractional b) => a -> bSource
Barlow's indigestibility function for prime numbers.
map barlow [1,2,3,5,7,11,13] == [0,1,8/3,32/5,72/7,200/11,288/13]
factor :: Integral a => [a] -> a -> [a]Source
Generate list of factors of n from x.
factor primes 315 == [3,3,5,7]
prime_factors :: Integral a => a -> [a]Source
multiplicities :: (Eq a, Integral n) => [a] -> [(a, n)]Source
Collect number of occurences of each element of a sorted list.
multiplicities [1,1,1,2,2,3] == [(1,3),(2,2),(3,1)]
prime_factors_m :: Integral a => a -> [(a, a)]Source
multiplicities
.
prime_factors
.
prime_factors_m 315 == [(3,2),(5,1),(7,1)]
merge :: (Ord a, Num b, Eq b) => [(a, b)] -> [(a, b)] -> [(a, b)]Source
Merging function for rational_prime_factors_m
.
rational_prime_factors_m :: Integral b => (b, b) -> [(b, b)]Source
Collect the prime factors in a rational number given as a numerator/ denominator pair (n,m). Prime factors are listed in ascending order with their positive or negative multiplicities, depending on whether the prime factor occurs in the numerator or the denominator (after cancelling out common factors).
rational_prime_factors_m (16,15) == [(2,4),(3,-1),(5,-1)] rational_prime_factors_m (10,9) == [(2,1),(3,-2),(5,1)] rational_prime_factors_m (81,64) == [(2,-6),(3,4)] rational_prime_factors_m (27,16) == [(2,-4),(3,3)] rational_prime_factors_m (12,7) == [(2,2),(3,1),(7,-1)]
rational_prime_factors_t :: Integral b => Int -> (b, b) -> [b]Source
Variant of rational_prime_factors_m
giving results in a table
up to the nth prime.
rational_prime_factors_t 6 (12,7) == [2,1,0,-1,0,0]
disharmonicity :: (Integral a, Num b) => (a -> b) -> (a, a) -> bSource
Compute the disharmonicity of the interval (p,q) using the prime valuation function pv.
map (disharmonicity barlow) [(9,10),(8,9)] ~= [12.733333,8.333333]
harmonicity :: (Integral a, Fractional b) => (a -> b) -> (a, a) -> bSource
The reciprocal of disharmonicity
.
map (harmonicity barlow) [(9,10),(8,9)] ~= [0.078534,0.120000]
harmonicity_r :: (Integral a, Fractional b) => (a -> b) -> Ratio a -> bSource
Variant of harmonicity
with Ratio
input.
cents :: (Real a, Floating b) => a -> bSource
Interval ratio to cents.
map cents [16%15,16%9] == [111.73128526977776,996.0899982692251]
from_rational :: Integral t => Ratio t -> (t, t)Source
Make numerator
denominator
pair of n.
type Table_2_Row = (Double, [Integer], Rational, Double)Source
Set of 1. interval size (cents), 2. intervals as product of powers of primes, 3. frequency ratio and 4. harmonicity value.
table_2 :: Double -> [Table_2_Row]Source
Table 2 (p.45)
length (table_2 0.06) == 24
table_2_pp :: Table_2_Row -> StringSource
Pretty printer for Table_2_Row
values.
mapM_ (putStrLn . table_2_pp) (table_2 0.06)
0.000 | 0 0 0 0 0 0 | 1:1 | Infinity 111.731 | 4 -1 -1 0 0 0 | 15:16 | 0.076531 182.404 | 1 -2 1 0 0 0 | 9:10 | 0.078534 203.910 | -3 2 0 0 0 0 | 8:9 | 0.120000 231.174 | 3 0 0 -1 0 0 | 7:8 | 0.075269 266.871 | -1 -1 0 1 0 0 | 6:7 | 0.071672 294.135 | 5 -3 0 0 0 0 | 27:32 | 0.076923 315.641 | 1 1 -1 0 0 0 | 5:6 | 0.099338 386.314 | -2 0 1 0 0 0 | 4:5 | 0.119048 407.820 | -6 4 0 0 0 0 | 64:81 | 0.060000 435.084 | 0 2 0 -1 0 0 | 7:9 | 0.064024 498.045 | 2 -1 0 0 0 0 | 3:4 | 0.214286 519.551 | -2 3 -1 0 0 0 | 20:27 | 0.060976 701.955 | -1 1 0 0 0 0 | 2:3 | 0.272727 764.916 | 1 -2 0 1 0 0 | 9:14 | 0.060172 813.686 | 3 0 -1 0 0 0 | 5:8 | 0.106383 884.359 | 0 -1 1 0 0 0 | 3:5 | 0.110294 905.865 | -4 3 0 0 0 0 | 16:27 | 0.083333 933.129 | 2 1 0 -1 0 0 | 7:12 | 0.066879 968.826 | -2 0 0 1 0 0 | 4:7 | 0.081395 996.090 | 4 -2 0 0 0 0 | 9:16 | 0.107143 1017.596 | 0 2 -1 0 0 0 | 5:9 | 0.085227 1088.269 | -3 1 1 0 0 0 | 8:15 | 0.082873 1200.000 | 1 0 0 0 0 0 | 1:2 | 1.000000