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
def schedule(self): return fold(NoteScheduler, self.specialized().ast)
def schedule(self): return fold(NoteScheduler, self.ast)