def prime(self): """ Return a PCSet that represents the given object in prime form, taking into account its canonical TTO's (set these with .canon(T, I, M)). """ from sator.pcset import PCSet n, m = self.prime_operation return PCSet(self.copy(utils.transpose_multiply(self.pitches, n, m)))
def _transpose_multiply(self, sub_n=0, sub_m=0): if not sub_m: sub_m = self._default_m result = [pc % self._mod for pc in \ utils.transpose_multiply(self.pcs, sub_n, sub_m)] return self.copy(result)
def transpose_multiply(a, n, m=5): if a.__class__ == PSet: raise InvalidTTO("Pitch sets can not be operated on with TnMm") return a.copy(utils.transpose_multiply(a.pcs, n, m))