Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FJS support? #4

Closed
chroma04 opened this issue Apr 4, 2023 · 4 comments
Closed

FJS support? #4

chroma04 opened this issue Apr 4, 2023 · 4 comments
Labels
for later Will be worked on at some arbitrary time in the future

Comments

@chroma04
Copy link

chroma04 commented Apr 4, 2023

Functional Just Notation is a relatively popular JI notation that uses fingering-like fractions to indicate a comma shift from a plain Pythagorean interval, instead of extra accidental symbols.

There are an infinite amount of unique commas (one for each prime) that can stack upon themselves and each other, so to fit them into one number they are all multiplied together: a fingering of 35/121 or (5*7)/(11*11) indicates a shift up by a 5- and 7-comma (80/81 and 63/64) and then a shift down by two 11-commas (33/32).

Since the numbers have to be parsed and factored into primes and their commas generated according to their algorithm, it might be outside the scope of this project that mainly assists with managing accidentals... 😜

@euwbah
Copy link
Owner

euwbah commented May 27, 2023

Thanks for sharing about FJS. Hmm, I would like to implement this but you're right about this being a bit out of scope, as this requires a change to the internals. Right now, this plugin can parse JI ratios, but will tune them verbatim. However, this calls for JI ratios to represent commas w.r.t. the 3-limit chain of fifths, so a different operating mode of this plugin needs to be made. I'll mark this as a feature for later.

@euwbah euwbah added the for later Will be worked on at some arbitrary time in the future label May 27, 2023
@euwbah euwbah closed this as completed May 27, 2023
@euwbah
Copy link
Owner

euwbah commented May 27, 2023

PS i realise that the 'prime factorizing' ability can be artificially implemented using ligatures and text-based accidentals, since it could do a brute force search-and-replace for composite numbers and break them down into primes. So a python script could brute force all the powers of primes up to a certain required threshold.

Of course, for really large tunings, I don't think this will be feasible due to performance constraints, but you can check out how HEJI is implemented.

E.g. (the comma up/down direction may be wrong/inverted)

A4: 440
b (2187/2048) #
'1/25' '1/5' (125/128) '5' '25'
'1/7' (63/64) '7'

lig(2,3)
-2 -1 '1/175'
-2 1 '7/25'
-1 -1 '1/35'
-1 1 '7/5'
//etc...

@euwbah euwbah pinned this issue May 27, 2023
@euwbah euwbah unpinned this issue May 27, 2023
@Aumuse
Copy link

Aumuse commented Jul 5, 2024

Hi! Inspired by this thread I have written a 255-odd-limit FJS tuning config (.txt), listing as secondary text accidentals (only, so the only primary accidental chain defined is Pythagorean) all the utonal (/n) then otonal (n) commas corresponding to each non-3 odd limit up to 253 (since 255 = 3×5×17 and can be represented with the 85 comma) and using FloraC's radius of tolerance, sqrt(2178/2048), instead of 65/63 - so the otonal 31-comma is 31/32 instead of 248/243 etc. (Credits to the calculator I used to obtain the commas: https://www.yacavone.net/fjs-explorer/?rotPreset=2)
Feel free to modify this config by adding more commas for higher odd limits, redefining the naturals and accidentals and so on :)
255fjs.txt

@Aumuse
Copy link

Aumuse commented Jul 5, 2024

Hi! Inspired by this thread I have written a 255-odd-limit FJS tuning config (.txt), listing as secondary text accidentals (only, so the only primary accidental chain defined is Pythagorean) all the utonal (/n) then otonal (n) commas corresponding to each non-3 odd limit up to 253 (since 255 = 3×5×17 and can be represented with the 85 comma) and using FloraC's radius of tolerance, sqrt(2178/2048), instead of 65/63 - so the otonal 31-comma is 31/32 instead of 248/243 etc. (Credits to the calculator I used to obtain the commas: https://www.yacavone.net/fjs-explorer/?rotPreset=2) Feel free to modify this config by adding more commas for higher odd limits, redefining the naturals and accidentals and so on :) 255fjs.txt

With reference to this bug: #12 (comment), I have defined the fingering '1' as undoing all previous accidentals. Hence for instance F1 following F#23 is equal to F-natural-one instead of F-sharp-one, and if F#1 is meant to follow F#23, the sharp accidental must be repeated. This differs from the official recommendation that 1 only undoes a previous comma ratio, not the Pythagorean accidental as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
for later Will be worked on at some arbitrary time in the future
Projects
None yet
Development

No branches or pull requests

3 participants