Exemplo n.º 1
0
    def test_simple_interval(self):
        int_interval = Interval(5, 9)

        assert int_interval.contains(7)
        assert int_interval.contains(6)

        assert Interval.intersects(int_interval, Interval(7, 10))
        assert int_interval.intersection(Interval(7, 10)) == Interval(
            7, 9).intersection(int_interval)
Exemplo n.º 2
0
    def sub_hct(self, sub_track_interval=None):
        """
        Take a sub_track of this hct.
        :param sub_track_interval: NmericInterval.  If none, the entire hct.
        :return:
        """
        sub_track_interval = NumericInterval(Fraction(0), self.duration.duration) if sub_track_interval is None else \
            sub_track_interval

        new_track = HarmonicContextTrack()
        for hc in self.hc_list():
            hc_interval = NumericInterval(
                hc.position.position,
                hc.position.position + hc.duration.duration)
            hc_intersect = hc_interval.intersection(sub_track_interval)
            if hc_intersect is not None:
                new_hc = HarmonicContext(hc.tonality, hc.chord,
                                         Duration(hc_intersect.length()),
                                         Position(hc_intersect.lower))
                new_track.append(new_hc)

        return new_track