Exemplo n.º 1
0
    def parse(self, fname, **kwargs):
        hdlr= MidiToScore(print_warnings=self.print_warnings)
        midi_in = MidiInFile(hdlr, fname)
        midi_in.read()
        res= hdlr.score
        for instrument, notes in res.notes_per_instrument.iteritems():
            # to_insert :: [(index, note)]
            notes.sort(key=lambda x:x.start)
            to_insert=[]
            prev_next_iter= izip(notes, islice(notes, 1, len(notes)))
            for i, (prev, next) in enumerate(prev_next_iter):
                # es que hubo un silencio
                if prev.start + prev.duration+1 < next.start:
                    start= prev.start+prev.duration
                    duration= next.start - start
                    n= Silence(start, duration) 
                    # el metodo insert inserta *antes* del indice que le pasaste la nota
                    to_insert.append((i+1, n))

            for i in xrange(len(to_insert)-1, -1, -1):
                pos, note= to_insert[i]
                notes.insert(pos, note)

            #if notes[0].start > 0:
            #    notes.insert(0, Silence(0, notes[0].start))


        # si todos los intrumentos empiezan tarde, muevo todo para atras
        offset= min(res.notes_per_instrument.itervalues(), key=lambda x:x[0].start)[0].start
        return res                
Exemplo n.º 2
0
from midistuff.writers.to_score import MidiToScore
from midistuff.readers.MidiInFile import MidiInFile
from sys import argv

infile=argv[1]
if len(argv) > 2:
    outfile= argv[2]
else:
    outfile= 'pepe.mid'

#midi_in = midi.MidiInFile.MidiInFile(midi.MidiToText.MidiToText(), infile)
hdlr= MidiToScore()
midi_in = MidiInFile(hdlr, infile)
midi_in.read()
hdlr.score.to_midi(outfile)
Exemplo n.º 3
0
from sys import argv
test_file = argv[1]

# do parsing
from midistuff.readers.MidiInFile import MidiInFile
from midistuff.writers.MidiToText import MidiToText # the event handler
midiIn = MidiInFile(MidiToText(), test_file)
midiIn.read()