Fascinating. I'm working on many adjacent pieces myself - my name for this whole initiative is music-i18n because I see it as the equivalent of adding software layers to support world languages and locales - in this case musical ones.
I am especially interested to hear your plans / thoughts about the following:
- Supporting non-ET tunings
- Supporting tetrachords and other scale building blocks (like Arabic ajnas)
1. Just Intonation and non-linear temperaments are on the roadmap, but there are a couple of design problems I still have to figure out, mainly how to have a consistent definition of interval objects in regards to transposition if the distances between notes are uneven. It works nicely, if one uses multi-dimensional tunings, e.g. in a 5-Limit tuning with 3 dimensions every interval obtained from two notes can be applied to any other note as a measure of transposition distance, but once you reduce it to one dimension you can have two notes which form an interval that can not be applied to every note without reaching a note that is outside the temperament.
2. Tetrachords are already supported and can be easily defined using the scale object. There is no quartertone notation yet, but if you are happy with Up/Down Notation you can analyze arabic ajnas by using EDOTuning(24) as the base. Currently there is no pitch/note sequence object, so downward scale movement in maqams can not be properly defined, but if you are interested only in the harmonic qualities, scales should do.
3. MusicXML sadly does not have good support for non-12-EDO tunings. You can define quartertone accidentals by providing floats (like 0.5) as accidental values, but this gets increasingly difficult if you want to do anything other than 24-EDO. I looked into the MEI format as it supports at least turkish makam accidentals, but a more generalized semantic definition for arbitrary EDOs seems to be out of reach for the foreseeable future. One could however think of supporting MEI for a couple of tunings (like 24- or 53-EDO)
4. MIDI is also somewhat difficult. There is the MPE specification which allows individual note bending, however it is not supported by any python library as far as I can tell. One could try to hack something with channel pitch bends, but it would be limited to playing 16 notes at the same time.
I am still looking for contributors, so if you are interested in these things, feel free to contact me ;)
Oh, neat :) This looks really cool. In one of the upcoming versions of xenharmlib I am planning to add hooks for visualization plugins, so structures can be rendered in JupyterLab. Maybe you would be interested in contributing, however it will take some time before JI is supported.
Yes, I do. For the actual score composition I used Ableton, but xenharmlib can export SCL files to define microtonal scales, which then can be imported in Ableton (a lot of other DAWs and VSTs support this format too).
For the most part however I use xenharmlib for theoretical aspects of music. I got interested in the "31 Equal Divisions per Octave" tuning a couple years ago, because of its psychoaccustic potentials, but thinking about chords, modes, notation in 31-EDO made my head hurt, so I built the library to help me think and answer my questions.
Fascinating. I'm working on many adjacent pieces myself - my name for this whole initiative is music-i18n because I see it as the equivalent of adding software layers to support world languages and locales - in this case musical ones.
I am especially interested to hear your plans / thoughts about the following:
- Supporting non-ET tunings
- Supporting tetrachords and other scale building blocks (like Arabic ajnas)
- Importing/exporting MusicXML
- Exporting to MIDI
Thanks!
Hi! I'll try to answer in order:
1. Just Intonation and non-linear temperaments are on the roadmap, but there are a couple of design problems I still have to figure out, mainly how to have a consistent definition of interval objects in regards to transposition if the distances between notes are uneven. It works nicely, if one uses multi-dimensional tunings, e.g. in a 5-Limit tuning with 3 dimensions every interval obtained from two notes can be applied to any other note as a measure of transposition distance, but once you reduce it to one dimension you can have two notes which form an interval that can not be applied to every note without reaching a note that is outside the temperament.
2. Tetrachords are already supported and can be easily defined using the scale object. There is no quartertone notation yet, but if you are happy with Up/Down Notation you can analyze arabic ajnas by using EDOTuning(24) as the base. Currently there is no pitch/note sequence object, so downward scale movement in maqams can not be properly defined, but if you are interested only in the harmonic qualities, scales should do.
3. MusicXML sadly does not have good support for non-12-EDO tunings. You can define quartertone accidentals by providing floats (like 0.5) as accidental values, but this gets increasingly difficult if you want to do anything other than 24-EDO. I looked into the MEI format as it supports at least turkish makam accidentals, but a more generalized semantic definition for arbitrary EDOs seems to be out of reach for the foreseeable future. One could however think of supporting MEI for a couple of tunings (like 24- or 53-EDO)
4. MIDI is also somewhat difficult. There is the MPE specification which allows individual note bending, however it is not supported by any python library as far as I can tell. One could try to hack something with channel pitch bends, but it would be limited to playing 16 notes at the same time.
I am still looking for contributors, so if you are interested in these things, feel free to contact me ;)
A bit tangential, but I recently made a xenharmonic-related library too - focused more on the visual/harmonic space side:
https://github.com/bntre/cs-rationals/blob/master/RationalsE...
Demo piece: https://www.youtube.com/watch?v=y_x4vtS_I7w
Oh, neat :) This looks really cool. In one of the upcoming versions of xenharmlib I am planning to add hooks for visualization plugins, so structures can be rendered in JupyterLab. Maybe you would be interested in contributing, however it will take some time before JI is supported.
Is there a good resource to learn basic music theory?
Like learn what the meaning of A B C and other letters mean?
And how the come together to make actual music?
I often used this for reference: https://musictheory.pugetsound.edu/mt21c/MusicTheory.html
My actual question: do you use xenharmlib for composing?
I assume this is your album: https://fabianvallon.bandcamp.com/album/a-different-path-for...
Was xenharmlib used in it, or some other software?
Yes, I do. For the actual score composition I used Ableton, but xenharmlib can export SCL files to define microtonal scales, which then can be imported in Ableton (a lot of other DAWs and VSTs support this format too).
For the most part however I use xenharmlib for theoretical aspects of music. I got interested in the "31 Equal Divisions per Octave" tuning a couple years ago, because of its psychoaccustic potentials, but thinking about chords, modes, notation in 31-EDO made my head hurt, so I built the library to help me think and answer my questions.