Esempio n. 1
0
    def create_primary_templates(tonal_function):
        domain_tones = tonal_function.domain_tonality.annotation[:len(
            tonal_function.domain_tonality.annotation) - 1]
        range_tones = tonal_function.range_tonality.annotation[:len(
            tonal_function.range_tonality.annotation) - 1]

        tonal_order_template = list()
        tonal_interval_map = dict()
        for t in domain_tones:
            tonal_order_template.append(
                range_tones.index(tonal_function[t]) if tonal_function[t] in
                range_tones else None)
            key_pure_dist = Interval.calculate_pure_distance(
                domain_tones[0], t)

            if tonal_function[t] is not None:
                value_pure_distance = Interval.calculate_pure_distance(
                    range_tones[0], tonal_function[t])
            else:
                value_pure_distance = None
            tonal_interval_map[key_pure_dist] = value_pure_distance

        return tonal_order_template, tonal_interval_map
Esempio n. 2
0
    def create_extension_interval_template(tonal_function):
        domain_tones = tonal_function.domain_tonality.annotation[:len(
            tonal_function.domain_tonality.annotation) - 1]
        range_tones = tonal_function.range_tonality.annotation[:len(
            tonal_function.range_tonality.annotation) - 1]

        extension_interval_map = dict()
        ext_map = tonal_function.extension_map
        if ext_map is None:
            return extension_interval_map

        for t in tonal_function.map.keys():
            if t not in domain_tones:
                key_pure_dist = Interval.calculate_pure_distance(
                    domain_tones[0], t)

                if tonal_function[t] is not None:
                    value_pure_distance = Interval.calculate_pure_distance(
                        range_tones[0], tonal_function[t])
                else:
                    value_pure_distance = None
                extension_interval_map[key_pure_dist] = value_pure_distance

        return extension_interval_map
Esempio n. 3
0
    def test_pure_distances(self):
        dd, cc = Interval.calculate_pure_distance(DiatonicToneCache.get_tone('E'),
                                                  DiatonicToneCache.get_tone('C'))
        assert dd == 5
        assert cc == 8

        dd, cc = Interval.calculate_pure_distance(DiatonicToneCache.get_tone('Ab'),
                                                  DiatonicToneCache.get_tone('B'))
        assert dd == 1
        assert cc == 3

        dd, cc = Interval.calculate_pure_distance(DiatonicToneCache.get_tone('C'),
                                                  DiatonicToneCache.get_tone('B'))
        assert dd == 6
        assert cc == 11

        dd, cc = Interval.calculate_pure_distance(DiatonicToneCache.get_tone('B'),
                                                  DiatonicToneCache.get_tone('C'))
        assert dd == 1
        assert cc == 1

        dd, cc = Interval.calculate_pure_distance(DiatonicToneCache.get_tone('Ebb'),
                                                  DiatonicToneCache.get_tone('A#'))
        assert dd == 3
        assert cc == 8

        dd, cc = Interval.calculate_pure_distance(DiatonicToneCache.get_tone('A#'),
                                                  DiatonicToneCache.get_tone('Ebb'))
        assert dd == 4
        assert cc == 4

        end_tone = Interval.end_tone_from_pure_distance(DiatonicToneCache.get_tone('C'), 4, 6)
        assert 'Gb' == DiatonicTone.to_upper(end_tone.diatonic_symbol)

        end_tone = Interval.end_tone_from_pure_distance(DiatonicToneCache.get_tone('G'), 2, 5)
        assert 'B#' == DiatonicTone.to_upper(end_tone.diatonic_symbol)

        end_tone = Interval.end_tone_from_pure_distance(DiatonicToneCache.get_tone('Gb'), 4, 6, False)
        assert 'C' == DiatonicTone.to_upper(end_tone.diatonic_symbol)

        end_tone = Interval.end_tone_from_pure_distance(DiatonicToneCache.get_tone('B#'), 2, 5, False)
        assert 'G' == DiatonicTone.to_upper(end_tone.diatonic_symbol)