Example #1
0
    def split(self):
        """
        Split this melody into harmonies.

        The melody should be harmonized somewhat already.

        Attempts are made to put as much work into the top of the melody as
        possible.

        Returned melodies are high-to-low.
        """

        voices = fold(ChordCounter, self.music)

        rv = []
        for voice in range(voices):
            melody = Melody(HarmonySplitter(voice).visit(self.music),
                    self.tpb)
            melody.pan = self.pan
            melody.volume = self.volume
            rv.append(melody)
        return rv
Example #2
0
 def schedule(self):
     return fold(NoteScheduler, self.specialized().ast)
Example #3
0
 def schedule(self):
     return fold(NoteScheduler, self.ast)