from pyseq import * class MidiSplit(PySeq): def init(self, sp=None): if sp: self.splitPoints=sp[:] else: self.splitPoints=[60] self.outports=[] for i in range(len(self.splitPoints)+1): self.outports.append(self.createOutPort()) self.inport=self.createInPort() def callback(self, ev): if ev.type==SND_SEQ_EVENT_NOTEON or ev.type==SND_SEQ_EVENT_NOTEOFF: note=ev.getData().note index=len([x for x in self.splitPoints if note>=x]) ev.sendNow(self, self.outports[index]) return 1 if __name__=='__main__': import sys seq=MidiSplit('MidiSplit', [int(s) for s in sys.argv[1:]]) MidiThread(seq).start() raw_input('press return to finish')