def test_build_on_basis(self): tonality = Tonality.create_on_basis_tone('E', ModalityType.Major, 1) assert 'E' == tonality.basis_tone.diatonic_symbol assert 'F#' == tonality.root_tone.diatonic_symbol tonality = Tonality.create_on_basis_tone('G', ModalityType.MelodicMinor, 2) assert 'G' == tonality.basis_tone.diatonic_symbol assert 'Bb' == tonality.root_tone.diatonic_symbol
def construct_tonality(self, tone, modality_str, modal_index=0): if modality_str[0] == '!': modality_type = ModalityType(modality_str[1:]) elif modality_str in LineConstructor.MODALITY_SHORT_NAME_MAP: modality_type = LineConstructor.MODALITY_SHORT_NAME_MAP[modality_str] else: modality_type = ModalityType(modality_str) if ModalityFactory.is_registered(modality_type): return Tonality.create_on_basis_tone(tone, modality_type, modal_index) else: raise Exception('Modality \'{0}\' is not registered in ModalityFactory.'.format(modality_str))
def test_for_book(self): tonality_a = Tonality( ModalityFactory.create_modality(ModalityType.Major, 1), 'E') tonality_b = Tonality.create(ModalityType.Major, 'E', 1) tonality_c = Tonality.create_on_basis_tone('D', ModalityType.Major, 1) print('{0}: [{1}]'.format( tonality_a, ','.join(tone.diatonic_symbol for tone in tonality_a.annotation))) print('{0}: [{1}]'.format( tonality_b, ','.join(tone.diatonic_symbol for tone in tonality_b.annotation))) print('{0}: [{1}]'.format( tonality_c, ','.join(tone.diatonic_symbol for tone in tonality_c.annotation)))