mutwo.ekmelily_converters¶
Object |
Documentation |
---|---|
Representation of an Ekmelily accidental. |
|
Build Ekmelily tuning files from Ekmelily accidentals. |
|
Build Ekmelily tuning files for Helmholtz-Ellis JI Pitch Notation. |
- class EkmelilyAccidental(accidental_name, accidental_glyph_tuple, deviation_in_cents, available_diatonic_pitch_index_tuple=None)[source]¶
Bases:
object
Representation of an Ekmelily accidental.
- Parameters:
accidental_name (str) – The name of the accidental that follows after the diatonic pitch name (e.g. ‘s’ or ‘qf’)
accidental_glyph_tuple (tuple[str, ...]) – The name of accidental glyphs that should appear before the notehead. For a list of available glyphs, check the documentation of Ekmelos. Furthermore one can find mappings from mutwo data to Ekmelos glyph names in
PRIME_AND_EXPONENT_AND_TRADITIONAL_ACCIDENTAL_TO_ACCIDENTAL_GLYPH_DICT
andTEMPERED_ACCIDENTAL_TO_ACCIDENTAL_GLYPH_DICT
.deviation_in_cents (float) – How many cents shall an altered pitch differ from its diatonic / natural counterpart.
available_diatonic_pitch_index_tuple (Optional[tuple[int, ...]], optional) – Sometimes one may want to define accidentals which are only available for certain diatonic music_parameters. For this case, one can use this argument and specify all diatonic music_parameters which should know this accidental. If this argument keeps undefined, the accidental will be added to all seven diatonic music_parameters.
Example:
>>> from mutwo import ekmelily_converters >>> natural = ekmelily_converters.EkmelilyAccidental('', ("#xE261",), 0) >>> sharp = ekmelily_converters.EkmelilyAccidental('s', ("#xE262",), 100) >>> flat = ekmelily_converters.EkmelilyAccidental('f', ("#xE260",), -100)
Public Data Attributes:
available_diatonic_pitch_index_tuple
accidental_name
accidental_glyph_tuple
deviation_in_cents
- accidental_glyph_tuple: tuple[str, ...]¶
- accidental_name: str¶
- available_diatonic_pitch_index_tuple: Optional[tuple[int, ...]] = None¶
- deviation_in_cents: float¶
- class EkmelilyTuningFileConverter(path, ekmelily_accidental_sequence, global_scale=None)[source]¶
Bases:
Converter
Build Ekmelily tuning files from Ekmelily accidentals.
- Parameters:
path (str) – Path where the new Ekmelily tuning file shall be written. The suffix ‘.ily’ is recommended, but not necessary.
ekmelily_accidental_sequence (Sequence[EkmelilyAccidental]) – A sequence which contains all
EkmelilyAccidental
that shall be written to the tuning file,global_scale (tuple[fractions.Fraction, ...], optional) – From the Lilypond documentation: “This determines the tuning of music_parameters with no accidentals or key signatures. The first pitch is c. Alterations are calculated relative to this scale. The number of music_parameters in this scale determines the number of scale steps that make up an octave. Usually the 7-note major scale.”
Example:
>>> from mutwo import ekmelily_converters >>> natural = ekmelily_converters.EkmelilyAccidental('', ("#xE261",), 0) >>> sharp = ekmelily_converters.EkmelilyAccidental('s', ("#xE262",), 100) >>> flat = ekmelily_converters.EkmelilyAccidental('f', ("#xE260",), -100) >>> eigth_tone_sharp = ekmelily_converters.EkmelilyAccidental('es', ("#xE2C7",), 25) >>> eigth_tone_flat = ekmelily_converters.EkmelilyAccidental('ef', ("#xE2C2",), -25) >>> converter = ekmelily_converters.EkmelilyTuningFileConverter( >>> 'ekme-test.ily', (natural, sharp, flat, eigth_tone_sharp, eigth_tone_flat) >>> ) >>> converter.convert()
Public Methods:
convert
()Render tuning file to
path
.Inherited from
MutwoObject
copy
()Return a deep copy of mutwo object.
- class HEJIEkmelilyTuningFileConverter(path=None, prime_to_highest_allowed_exponent=None, reference_pitch='c', prime_to_heji_accidental_name=None, otonality_indicator=None, utonality_indicator=None, exponent_to_exponent_indicator=None, tempered_pitch_indicator=None, set_microtonal_tuning=True)[source]¶
Bases:
EkmelilyTuningFileConverter
Build Ekmelily tuning files for Helmholtz-Ellis JI Pitch Notation.
- Parameters:
path (str) – Path where the new Ekmelily tuning file shall be written. The suffix ‘.ily’ is recommended, but not necessary.
prime_to_highest_allowed_exponent (dict[int, int], optional) – Mapping of prime number to highest exponent that should occur. Take care not to add higher exponents than the HEJI Notation supports. See
DEFAULT_PRIME_TO_HIGHEST_ALLOWED_EXPONENT_DICT
for the default mapping.reference_pitch (str, optional) – The reference pitch (1/1). Should be a diatonic pitch name (see
DIATONIC_PITCH_CLASS_CONTAINER
) in English nomenclature. For any other reference pitch than ‘c’, Lilyponds midi rendering for music_parameters with the diatonic pitch ‘c’ will be slightly out of tune (because the first value of global_scale always have to be 0).prime_to_heji_accidental_name (dict[int, str], optional) – Mapping of a prime number to a string which indicates the respective prime number in the resulting accidental name. See
DEFAULT_PRIME_TO_HEJI_ACCIDENTAL_NAME_DICT
for the default mapping.otonality_indicator (str, optional) – String which indicates that the respective prime alteration is otonal. See
DEFAULT_OTONALITY_INDICATOR
for the default value.utonality_indicator (str, optional) – String which indicates that the respective prime alteration is utonal. See
DEFAULT_UTONALITY_INDICATOR
for the default value.exponent_to_exponent_indicator (Callable[[int], str], optional) – Function to convert the exponent of a prime number to string which indicates the respective exponent. See
DEFAULT_EXPONENT_TO_EXPONENT_INDICATOR()
for the default function.tempered_pitch_indicator (str, optional) – String which indicates that the respective accidental is tempered (12 EDO). See
DEFAULT_TEMPERED_PITCH_INDICATOR
for the default value.set_microtonal_tuning (bool) – If set to
False
the converter won’t apply any microtonal pitches. In this case all chromatic pitches will return normal 12EDO pitches. Default toTrue
.
Public Methods:
Inherited from
EkmelilyTuningFileConverter
convert
()Render tuning file to
path
.Inherited from
MutwoObject
copy
()Return a deep copy of mutwo object.
mutwo.ekmelily_converters.configurations¶
Configure default behaviour of mutwo.ekmelily_converters
- DEFAULT_EXPONENT_TO_EXPONENT_INDICATOR(exponent)¶
Default function for
HEJIEkmelilyTuningFileConverter
argument exponent_to_exponent_indicator.
- DEFAULT_GLOBAL_SCALE = (Fraction(0, 1), Fraction(1, 1), Fraction(2, 1), Fraction(5, 2), Fraction(7, 2), Fraction(9, 2), Fraction(11, 2))¶
Default value for
EkmelilyTuningFileConverter
argument global_scale.
- DEFAULT_OTONALITY_INDICATOR = 'o'¶
Default value for
HEJIEkmelilyTuningFileConverter
argument otonality_indicator.
- DEFAULT_PRIME_TO_HEJI_ACCIDENTAL_NAME_DICT = {5: 'a', 7: 'b', 11: 'c', 13: 'd', 17: 'e', 19: 'f', 23: 'g'}¶
Default mapping for
HEJIEkmelilyTuningFileConverter
argument prime_to_heji_accidental_name.
- DEFAULT_PRIME_TO_HIGHEST_ALLOWED_EXPONENT_DICT = {5: 3, 7: 2, 11: 1, 13: 1, 17: 1}¶
Default value for
HEJIEkmelilyTuningFileConverter
argument prime_to_highest_allowed_exponent.
- DEFAULT_TEMPERED_PITCH_INDICATOR = 't'¶
Default value for
HEJIEkmelilyTuningFileConverter
argument tempered_pitch_indicator.
- DEFAULT_UTONALITY_INDICATOR = 'u'¶
Default value for
HEJIEkmelilyTuningFileConverter
argument utonality_indicator.
mutwo.ekmelily_converters.constants¶
Constants to be used for and with mutwo.ekmelily_converters
.
- DIFFERENCE_BETWEEN_PYTHAGOREAN_AND_TEMPERED_FIFTH = 1.955000865387433¶
The difference in cents between a just fifth (3/2) and a 12-EDO fifth. This constant is used in
HEJIEkmelilyTuningFileConverter
.
- PRIME_AND_EXPONENT_AND_TRADITIONAL_ACCIDENTAL_TO_ACCIDENTAL_GLYPH_DICT = {(None, None, ''): '#xE261', (None, None, 's'): '#xE262', (None, None, 'ss'): '#xE263', (None, None, 'f'): '#xE260', (None, None, 'ff'): '#xE264', (5, 1, ''): '#xE2C2', (5, 2, ''): '#xE2CC', (5, 3, ''): '#xE2D6', (5, -1, ''): '#xE2C7', (5, -2, ''): '#xE2D1', (5, -3, ''): '#xE2DB', (5, 1, 's'): '#xE2C3', (5, 2, 's'): '#xE2CD', (5, 3, 's'): '#xE2D7', (5, -1, 's'): '#xE2C8', (5, -2, 's'): '#xE2D2', (5, -3, 's'): '#xE2DC', (5, 1, 'ss'): '#xE2C4', (5, 2, 'ss'): '#xE2CE', (5, 3, 'ss'): '#xE2D8', (5, -1, 'ss'): '#xE2C9', (5, -2, 'ss'): '#xE2D3', (5, -3, 'ss'): '#xE2DD', (5, 1, 'f'): '#xE2C1', (5, 2, 'f'): '#xE2CB', (5, 3, 'f'): '#xE2D5', (5, -1, 'f'): '#xE2C6', (5, -2, 'f'): '#xE2D0', (5, -3, 'f'): '#xE2DA', (5, 1, 'ff'): '#xE2C0', (5, 2, 'ff'): '#xE2CA', (5, 3, 'ff'): '#xE2D4', (5, -1, 'ff'): '#xE2C5', (5, -2, 'ff'): '#xE2CF', (5, -3, 'ff'): '#xE2D9', (7, 1, None): '#xE2DE', (7, 2, None): '#xE2E0', (7, -1, None): '#xE2DF', (7, -2, None): '#xE2E1', (11, 1, None): '#xE2E3', (11, -1, None): '#xE2E2', (13, 1, None): '#xE2E4', (13, -1, None): '#xE2E5', (17, 1, None): '#xE2E6', (17, -1, None): '#xE2E7', (19, 1, None): '#xE2E9', (19, -1, None): '#xE2E8', (23, 1, None): '#xE2EA', (23, -1, None): '#xE2EB'}¶
Mapping of prime, exponent and pythagorean accidental to accidental glyph name in Ekmelos.
- PYTHAGOREAN_ACCIDENTAL_CENT_DEVIATION_SIZE = 113.69¶
Step in cents for one pythagorean accidental (# or b).
- PYTHAGOREAN_ACCIDENTAL_TO_CENT_DEVIATION_DICT = {'': 0, 'f': -113.69, 'ff': -227.38, 's': 113.69, 'ss': 227.38}¶
Step in cents mapping for each pythagorean accidental (# or b).
- TEMPERED_ACCIDENTAL_TO_ACCIDENTAL_GLYPH_DICT = {'': '#xE2F2', 'f': '#xE2F1', 'ff': '#xE2F0', 'qf': '#xE2F5', 'qs': '#xE2F6', 's': '#xE2F3', 'ss': '#xE2F4'}¶
Mapping of tempered accidental name to glyph name in Ekmelos.
- TEMPERED_ACCIDENTAL_TO_CENT_DEVIATION_DICT = {'': 0, 'f': -100, 'ff': -200, 'qf': -50, 'qs': 50, 's': 100, 'ss': 200}¶
Mapping of tempered accidental name to cent deviation.