'Transpose chords in this ChordProgression.
Args:
transpose_amount: The number of half steps to transpose this
ChordProgression. Positive values transpose up. Negative values
transpose down.
Raises:
ChordSymbolException: If a chord (other than "no chord") fails to be
interpreted by the `chord_symbols_lib` module.'

def transpose(self, transpose_amount):

    for i in range(len(self._events)):
        if (self._events[i] != NO_CHORD):
            self._events[i] = chord_symbols_lib.transpose_chord_symbol(self._events[i], (transpose_amount % NOTES_PER_OCTAVE))
