Greetings everyone, I want to share with the community some work I've been doing on implementing proper support for the HEJI notation system in LilyPond. I wouldn't call it stable quite yet, as I'm still open to making breaking changes to the interface based on feedback. However, I would say it has (hopefully) reached the point where it is usable in real projects. You can find the repository here:
https://github.com/BridgeTheMasterBuilder/heji-ly (let me know if you are opposed to using GitHub, I can also host it somewhere else) The differences between this package and existing packages that also implement HEJI support (I am personally only aware of two: https://github.com/levinericzimmermann/ekme-heji.ily and https://github.com/GregoryREvans/abjad-ext-microtones) are the following: - Complete support for all accidentals, with the exception of "enharmonic schismas" and equal-tempered accidentals which are planned for future releases. - Modular interface for arbitrary combinations of accidentals (this is perhaps what I'm most interested in getting feedback on - to me it's a reasonable interface but I don't know what other people's opinion will be) - Full playback support, even for chords, which I believe is just about as accurate as MIDI will allow. Sounds pretty good to my ears in any case. I've included some example scores in the repository, including: Recreating the otonal and utonal harmonic series examples found here https://marsbat.space/pdfs/HEJI2_legend+series.pdf; some other examples related to the harmonic series; a classic Ben Johnston chord from the song Quietness; a Barbershop quartet arrangment of Kentucky Babe notated with the exact harmonies that could plausibly appear in a performance (but still highly theoretical and pure, it's not a transcription of any real performance) and a traditional bagpipe tune Sweet Maid of Glendaruel. These last two examples are a bit out there as far as using HEJI notation is concerned. I only chose them because they are "natural" examples of 7-limit just intonation that happen to be public domain (if anybody knows of any other examples of public domain music in extended just intonation please let me know). Before starting this project I had virtually no exposure to the Scheme API (though I've been a semi-casual LilyPond user for a long time), so I might be doing some things inefficiently or violating some best practices, let me know if you see something particularly egregious. There are some hacks in there that I want to properly address at some point, they should be marked with TODO. I hope this will be useful to others. Best regards, masterbuilder