Skip to content

Commit

Permalink
Add amity inflection
Browse files Browse the repository at this point in the history
Improve formatting of the table of Lumi's commas.
  • Loading branch information
frostburn committed May 4, 2024
1 parent 8064d74 commit 16498fb
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 25 deletions.
35 changes: 20 additions & 15 deletions documentation/commas.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ A [variant](http://www.tonalsoft.com/enc/h/hewm.aspx) of Helmholtz-Ellis by Jose

## Semifourth bridges

The neutral FJS master algorithm can be generalized to semiquartals. Semifourths fill the spectrum unevenly and the primes align poorly with them so the inflections end up large in terms of size in cents. (A smaller radius of tolerance would make everything much more complex.)
The neutral FJS master algorithm can be generalized to semiquartals. Semifourths fill the spectrum unevenly and align poorly with primes so the inflections end up large in terms of size in cents. (A smaller radius of tolerance would make everything much more complex.)

| Prime | Comma | Monzo | Size in cents |
| ------ | --------------------- | ------------------------------ | ------------- |
Expand Down Expand Up @@ -115,35 +115,40 @@ A random collection of inflections to bridge from irrationals to just intonation

Reasons for existence assume `C4 = 1/1`.

| Identifier | Size in cents | Raison d'être |
| ---------- | ------------- | ------------------ |
| `0l` | `+0.797` | `15/14` ~ `sm2^0l` |
| `1l` | `+10.485` | `11/10` ~ `sM2_1l` |
| `2l` | `+56.843` | `9/8` ~ `n2^2l` |
| `3l` | `+1.281` | `15/13` ~ `φ4_3l` |
| `4l` | `+4.018` | `25/14` ~ `α4^4l` |
| `5l` | `+17.488` | `7/5` ~ `ζ4_5l` |
| `6l` | `+16.389` | `6/5` ~ `⅓m3_6l` |
| `7l` | `+1.011` | `11/10` ~ `⅓M2_7l` |
| `8l` | `+26.343` | `13/7` ~ `β4_8l` |
| `9l` | `+2.221` | `21/19` ~ `sM2_9l` |

Only the [apotomic](https://en.xen.wiki/w/2187/2048) inflection `2l` ~ `sqrt(2187/2048)`, the [island](https://en.xen.wiki/w/676/675) inflection `3l` ~ `sqrt(676/675)`, the [jubilismic](https://en.xen.wiki/w/50/49) inflection `5l` ~ `sqrt(50/49)`, the [porcupine](https://en.xen.wiki/w/250/243) inflection `6l` ~ `cbrt(250/243)` and the [wizardharry](https://en.xen.wiki/w/4000/3993) inflection `7l` ~ `cbrt(4000/3993)` have reasonable expressions. The rest are filler curiosities which should be revised by someone who's willing to do more research into irrational bridging.
| Identifier | Name | Comma | Size in cents | Raison d'être |
| ---------- | ------------------------------------------------------------| ----------------- | ------------- | -------------------|
| `0l` | ? | * | `+0.797` | `15/14` ~ `sm2^0l` |
| `1l` | ? | * | `+10.485` | `11/10` ~ `sM2_1l` |
| `2l` | [apotomic](https://en.xen.wiki/w/2187/2048) | `sqrt(2187/2048)` | `+56.843` | `9/8` ~ `n2^2l` |
| `3l` | [island](https://en.xen.wiki/w/676/675) | `sqrt(676/675)` | `+1.281` | `15/13` ~ `φ4_3l` |
| `4l` | [varunismic](https://en.xen.wiki/w/Varunismic_temperaments) | `[-9/2 4 -2 1>` | `+4.018` | `25/14` ~ `α4^4l` |
| `5l` | [jubilismic](https://en.xen.wiki/w/50/49) | `sqrt(50/49)` | `+17.488` | `7/5` ~ `ζ4_5l` |
| `6l` | [porcupine](https://en.xen.wiki/w/250/243) | `cbrt(250/243)` | `+16.389` | `6/5` ~ `⅓m3_6l` |
| `7l` | [wizardharry](https://en.xen.wiki/w/4000/3993) | `cbrt(4000/3993)` | `+1.011` | `11/10` ~ `⅓M2_7l` |
| `8l` | ? | * | `+26.343` | `13/7` ~ `β4_8l` |
| `9l` | [amity](https://en.xen.wiki/w/Amity_comma) | `[9/5 -13/5 1>` | `1.231` | `10/9` ~ `⅗M2^9l` |

The unnamed inflections are filler curiosities which should be revised by someone who is willing to do more research into irrational bridging.

The semiapotome `2l` is a handy companion of the neutral inflections. It's equivalent to a half-sharp, but allows for spellings that bring prime 3 more in line with the higher primes. For comparison with prime 5 we get these pairs of small and large intervals centered on the neutrals.

| Small | Fraction | Large | Fraction |
| ------- | ---------- | ------- | --------- |
| `n2_2l` | `256/243` | `n2^2l` | `9/8` |
| `n2_5n` | `16/15` | `n2^5n` | `10/9` |
| | | | |
| `n3_2l` | `32/27` | `n3^2l` | `81/64` |
| `n3_5n` | `6/5` | `n3^5n` | `5/4` |
| | | | |
| `n4_2l` | `4/3` | `n4^2l` | `729/512` |
| `n4_5n` | `27/20` | `n4^5n` | `45/32` |
| | | | |
| `n5_2l` | `1024/729` | `n5^2l` | `3/2` |
| `n5_5n` | `64/45` | `n5^5n` | `40/27` |
| | | | |
| `n6_2l` | `128/81` | `n6^2l` | `27/16` |
| `n6_5n` | `8/5` | `n6^5n` | `5/3` |
| | | | |
| `n7_2l` | `16/9` | `n7^2l` | `243/128` |
| `n7_5n` | `9/5` | `n7^5n` | `15/8` |

Expand Down
4 changes: 2 additions & 2 deletions src/extra-commas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ const LUMIS_COMMAS = {
'7': ['5/3', '-1/3', '1', '0', '-1'],
// For 13/7 ~ β4_8l
'8': ['5/2', '-1', '0', '1', '0', '-1'],
// For 21/19 ~ sM2_9l
'9': ['-1/4', '-3/4', '0', '-1', '0', '0', '0', '1'],
// For 10/9` ~ ⅗M2^9
'9': ['9/5', '-13/5', '1'],
};

// https://en.xen.wiki/w/Helmholtz-Ellis_notation
Expand Down
21 changes: 13 additions & 8 deletions src/parser/__tests__/expression.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1779,23 +1779,28 @@ describe('SonicWeave expression evaluator', () => {
});

it('has "Aug" as an alternative spelling for "a"', () => {
const {interval} = parseSingle('Aug4');
expect(interval.toFraction().toFraction()).toBe('729/512');
const {fraction} = parseSingle('Aug4');
expect(fraction).toBe('729/512');
});

it('has "dim" as an alternative spelling for "d"', () => {
const {interval} = parseSingle('dim5');
expect(interval.toFraction().toFraction()).toBe('1024/729');
const {fraction} = parseSingle('dim5');
expect(fraction).toBe('1024/729');
});

it('has a porkupine inflection', () => {
const {interval} = parseSingle('⅓m3_6l');
expect(interval.toFraction().toFraction()).toBe('6/5');
const {fraction} = parseSingle('⅓m3_6l');
expect(fraction).toBe('6/5');
});

it('is a wizard, Harry!', () => {
const {interval} = parseSingle('⅓M2_7l');
expect(interval.toFraction().toFraction()).toBe('11/10');
const {fraction} = parseSingle('⅓M2_7l');
expect(fraction).toBe('11/10');
});

it('has amity', () => {
const {fraction} = parseSingle('⅗M2^9l');
expect(fraction).toBe('10/9');
});

it('has binary prefixes for mild amusement', () => {
Expand Down

0 comments on commit 16498fb

Please sign in to comment.