示例#1
0
    def SaveTrack(self, mid, ch):
        track = MidiTrack()
        track.type = 1
        mid.tracks.append(track)

        for i in range(self.num_steps):

            if (self.rests[i] == 1):
                delta_time = delta_time + self.ppq[i]
            else:
                delta_time = 0.0

            if (self.repeats[i] > 0):
                for j in range(self.repeats[i]):
                    if (self.rests[i] == 1):
                        delta_time = delta_time + self.ppq[i]
                    else:
                        track.append(
                            Message('note_on',
                                    note=self.notes[i],
                                    channel=ch,
                                    velocity=100,
                                    time=1))
                        track.append(
                            Message('note_off',
                                    note=self.notes[i],
                                    channel=ch,
                                    velocity=127,
                                    time=int(delta_time + self.ppq[i] - 1)))

                if (rests[i] == 1):
                    track.append(
                        Message('note_off',
                                note=self.notes[i],
                                channel=ch,
                                velocity=127,
                                time=int(delta_time)))
            else:
                track.append(
                    Message('note_on',
                            note=self.notes[i],
                            channel=ch,
                            velocity=100,
                            time=1))
                track.append(
                    Message('note_off',
                            note=self.notes[i],
                            channel=ch,
                            velocity=127,
                            time=int(self.ppq[i] - 1)))