In [1]:
from functools import lru_cache
from ophis.tonus.interval import *
In [19]:
@lru_cache(maxsize=None, typed=False)
class QualifiedInterval:
def __init__(self, interval, octaves=0):
self.interval = interval
self.octaves = octaves
# naive implementations of methods for testing
def augmented(self, distance=1):
interval = self.interval.augmented(distance)
octaves = self.octaves
if interval < self.interval:
octaves = octaves + 1
return self.__class__(interval, octaves)
def diminished(self, distance=1):
return self.__class__(self.interval.diminished(distance), self.octaves)
def inverted(self):
return self.__class__(self.interval.inverted(), self.octaves)
def octv(self, octaves=1):
return self.__class__(self.interval, (self.octave + octaves))
def __repr__(self):
return self.__class__.__name__ + "(" + self.interval.name + ", " + str(self.octaves) + ")"
In [20]:
M9 = QualifiedInterval(M2, 1)
In [21]:
M9
Out[21]:
In [22]:
M9.augmented()
Out[22]:
In [25]:
x = QualifiedInterval(P8, 0)
x.augmented(1)
Out[25]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: