def __init__(self, root, bass_note=None): self._root = pitches.parse(root) if bass_note is None: self.bass_note = self._root else: self.bass_note = pitches.parse(bass_note)
def test_note_above(self): chord = chords.MajorChord(MIDI_VALUES['C1']) above = chord.note_above(MIDI_VALUES['E1']) above_with_note_object = chord.note_above( pitches.parse(MIDI_VALUES['E1'])) self.assertEqual(MIDI_VALUES['G1'], above) self.assertEqual(MIDI_VALUES['G1'], above_with_note_object)
def __contains__(self, note): parsed = None if isinstance(note, pitches.Pitch): parsed = note elif isinstance(note, int): parsed = pitches.parse(note) if parsed.species() == self.__seven.species(): return True return Chord.__contains__(self, parsed)
def test_species(self): c = 24 note_c = pitches.parse('C') species_c = 'C' octave_c = 'C2' correct = 'C' self.assertEqual(pitches.species(c), correct) self.assertEqual(pitches.species(note_c), correct) self.assertEqual(pitches.species(species_c), correct) self.assertEqual(pitches.species(octave_c), correct)
def note_above(self, note): """ Basically just a wrapper for the private method to make up for improper API usage :param note: midi value, text value, or Note object :return: """ if isinstance(note, pitches.Pitch): return self.__note_above(note.midi()) elif isinstance(note, int): return self.__note_above(note) elif isinstance(note, str): return self.__note_above(pitches.parse(note).midi())
def __contains__(self, note): parsed = None if isinstance(note, pitches.Pitch): parsed = note elif isinstance(note, int): parsed = pitches.parse(note) if parsed.species() == self._root.species(): return True if parsed.species() == self.three().species(): return True if parsed.species() == self.five().species(): return True return False
def __init__(self, root_note, bass_note=None): self.__five = pitches.parse(pitches.parse(root_note).midi() + 6) self.__seven = pitches.parse(pitches.parse(root_note).midi() + 9) MinorChord.__init__(self, root_note, bass_note) self._all_octaves = self._compute_octaves()
def __init__(self, root_note, bass_note=None): Chord.__init__(self, root_note, bass_note) self.__three = pitches.parse(self._root.midi() + 3) self.__five = pitches.parse(self._root.midi() + 7) self._all_octaves = self._compute_octaves()
def seven(self): return pitches.parse(self.one().midi() + 11)
def __init__(self, root_note): _KeySignature.__init__(self) self.root_chord = chords.MinorChord(pitches.parse(root_note))
def flat_seven(self): return pitches.parse(self.one().midi() + 10)
def six(self): return pitches.parse(self.one().midi() + 9)
def flat_six(self): return pitches.parse(self.one().midi() + 8)
def four(self): return pitches.parse(self.one().midi() + 5)
def two(self): return pitches.parse(self.one().midi() + 2)