581EDO

User avatar
cmloegcmluin
Site Admin
Posts: 1786
Joined: Tue Feb 11, 2020 3:10 pm
Location: San Francisco, California, USA
Real Name: Douglas Blumeyer (he/him/his)
Contact:

Re: 581EDO

Post by cmloegcmluin »

Dave Keenan wrote: Mon Sep 02, 2024 12:23 pm The answer is most definitely #1.
Thanks for verifying my guess.
Can't this be handled by a sufficiently general implementation of the same rule that you refer to parenthetically for when :(|\: or :/|): is used as the half-apotome? Namely if a symbol represents the half-apotome in some EDO, it necessarily becomes its own apotome-complement in that notation, and so the usual apotome-complements of that symbol no longer apply and you revert to just flipping its accents.
That's already the case in my code; when I ask it for the notation for 581-EDO, the apotome complement of :)/|\: is never looked for, for this reason. But that's not the problem; the problem is that when it asks (rightfully) for the apotome complement of :.::)/|\: , it's giving an answer that is wrongfully influenced by the JI Ṗrecision Level notations' needs.

I just spent my evening refactoring the @sagittal/system code base, realizing just how much of it assumed the JI Precision Level notations.
User avatar
Dave Keenan
Site Admin
Posts: 2272
Joined: Tue Sep 01, 2015 2:59 pm
Location: Brisbane, Queensland, Australia
Contact:

Re: 581EDO

Post by Dave Keenan »

cmloegcmluin wrote: Mon Sep 02, 2024 3:21 pm I just spent my evening refactoring the @sagittal/system code base, realizing just how much of it assumed the JI Precision Level notations.
I'm sorry you had to, but well done.
Dave Keenan wrote: Mon Sep 02, 2024 12:23 pm Can't this be handled by a sufficiently general implementation of the same rule that you refer to parenthetically for when :(|\: or :/|): is used as the half-apotome? Namely if a symbol represents the half-apotome in some EDO, it necessarily becomes its own apotome-complement in that notation, and so the usual apotome-complements of that symbol no longer apply and you revert to just flipping its accents.
That's already the case in my code; when I ask it for the notation for 581-EDO, the apotome complement of :)/|\: is never looked for, for this reason. But that's not the problem; the problem is that when it asks (rightfully) for the apotome complement of :.::)/|\: , it's giving an answer that is wrongfully influenced by the JI Ṗrecision Level notations' needs.
So you were only missing the "and you revert to just flipping its accents" part. When I wrote that, I was referencing where you wrote:
cmloegcmluin wrote: Mon Sep 02, 2024 7:02 am It doesn't matter that sagittals like :.::|~: and :.::~~|: aren't used in the precision level notations; we can still determine their apotome complements fine by finding the apotome complements of their cores and then flipping their accents.
I should have written: "... and so the usual apotome-complements of that symbol, and its accented versions, no longer apply and you revert to just flipping their accents."

But you've solved it now anyway.
User avatar
רועיסיני
Posts: 72
Joined: Tue Apr 11, 2023 12:11 am
Real Name: Roee Sinai

Re: 581EDO

Post by רועיסיני »

I don't know whether you've already done that or what exactly did you do but IMO apotome complements should somehow have a context where they're calculated. Like if you're working in Trojan then :/|\: is its own apotome complement but in most other situations it's :(|): and you may need to refer to it in several places since if e.g. you have :'::(|\: as a symbol where :(|\: is the half apotome then you need to check in the context that :(|\: is the apotome complement of itself and then apply the accents to it. Also the level of notation should be included in this context to not have the :)/|\: problems.
So some pseudocode for that might be:
  • If this is an accented symbol flip the core recursively (or actually preferably do the rest of the steps in a single function that assumes the symbol has no accents), negate the accent and combine them. (Don't forget to test the :,::)/|\: and :,,::)/|\: cases work correctly here)
  • Check in the context if this is an EDO where the symbol is its own apotome complement and if so leave it as is.
  • If the symbol is :/|\: check in the context for Trojan and if so leave it as is.
  • If the symbol is :)/|\: check in the context for the accent precision level and decide whether or not to add an accent accordingly.
  • Select the usual apotome complement from a list.
Actually the middle 3 stages can be combined to a single stage where you check the symbol you have against the half apotome in the context and return it as is if it is or continue to the table otherwise. That would mean that :)/|\: is by default not the complement of itself but in most of the situations where you encounter it the context would suggest it to be (and maybe even in the construction of the context you insert a JI level superset index or something and the half apotome defaults to :)/|\: in low enough indices).
Post Reply