Giter Club home page Giter Club logo

ekme-heji.ily's Introduction

Helmholtz-Ellis JI Notation for Lilypond

This package adds support for the Extended Helmholtz-Ellis JI Pitch Notation in Lilypond via Ekmelily and the Ekmelos font from Thomas Richter. For a basic introduction to microtonal composition and notation read this article.

Installation

First follow the installation instructions of Ekmelily and Ekmelos. Then download the latest ekme-heji.ily package or clone the files straight from github. You can either extract the 'ekme-heji.ily' file in the same directory as your Lilypond project, or you put it in Lilyponds installation directory (something like lilypond/usr/share/lilypond/current/ly). Finally you have to include ekme-heji.ily in your Lilypond file:

\version "2.22.0"
\language "english"
\include "ekme-heji.ily"

Usage and nomenclature

ekme-heji.ily adds new pitches to Lilypond. The pitch names are composed of three subparts:

explanation example 1 example 2
diatonic pitch name a c
Pythagorean accidental s (for 'sharp') ff (for 'double flat')
additional commas oaa ubaocb

Therefore asoaa and cffubaocb are examples for concatenated full pitch names.

Additional commas are described by three letters:

explanation example 1 example 2
tonality o (for otonality) u (for utonality)
prime number a (for 5) c (for 11)
exponent a for +/- 1 b for +/- 2

Tonality can either be o for otonality or u for utonality (if the exponent is bigger than 0 it's an otonality, if the exponent is smaller than 0 it's an utonality).

The prime number nomenclature is a simple mapping of the alphabetical order to rising prime numbers:

  • 5 -> a
  • 7 -> b
  • 11 -> c

The exponent nomenclature is also a simple mapping of alphabetical order to rising integers:

  • 1 -> a
  • 2 -> b
  • 3 -> c

Therefore a pitch with the interval 5/4 to c would be written as eoaa (diatonic pitch name: e, comma: oaa for otonality (= o) of 5 (= a) with exponent 1 (= a)). When a pitch owns several commas they are always sorted from lower prime numbers to higher prime numbers. For instance the diatonic pitch 'a' with two syntonic commas and one undecimal commas would be written as aoaboca.

Tempered pitches are indicated with the letter t. For instance a tempered d would be dt and a tempered f-sharp would be fst.

Examples

Writing a Wilson Hexany in HEJI - Notation:

\version "2.22.0"
\language "english"

\include "ekme-heji.ily"

\new Score
<<
    \new Staff
    {
        \new Voice
        {
            \accidentalStyle "dodecaphonic"
            aoca'1
            boaaoba'
            cobaoca''
            doba''1
            fsoaaoca''1
            gsoaa''1
        }
    }
>>

wilson

Writing a twelfth tone row of tempered pitches:

\version "2.22.0"
\language "english"

\include "ekme-heji.ily"

\new Score
<<
    \new Staff
    {
        \new Voice
        {
          \relative c'
          {
            gt1
            bft
            dt
            fst
            at
            ct
            et
            gst
            bt
            cst
            dst
            ft
        }
      }
    }
>>

berg

Precision

Midi playback is precise to within +/- 0.2 cents.

Limitations

By default not all specified accidentals and accidental combinations are supported. The highest implemented prime number is 17 although the Helmholtz-Ellis JI Pitch Notation defines accidentals until 47. There are two reasons for this limitation:

  1. Lilypond takes too long to parse if all specified accidental combinations are added.
  2. The Ekmelos font only supports accidentals until prime number 31. This could be solved in future releases of Ekmelos or through using a different font.

For now, ekme-heji.ily is only available in English (English diatonic pitch names, English default accidentals like 's' for sharp and 'f' for flat).

Modifications

If you want to build your own tuning files with different nomenclature or different supported prime numbers, you can adjust the Python script which builds the tuning files. For running it, you first have to install mutwo.ekmelily. See mutwos api documentation for more information regarding the tuning file script.

ekme-heji.ily's People

Contributors

levinericzimmermann avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ekme-heji.ily's Issues

Generate names procedurally

Hi, I apologize if this is an ignorant question as I know nothing of Ekmelily and my knowledge of Lilypond scripting is very basic, but isn't it possible to generate the names on demand? You mentioned that 17-limit is the max due to slow parsing of the tuning file, presumably due to a combinatorical explosion in the possible names, but isn't it possible to instead write some Scheme that will take a string representing the interval name, decompose it and then map it to a code point?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.