Example #1
0
 def testAddNote(self):
     MyMIDI = MIDIFile(1) # a format 1 file, so we increment the track number below
     track = 0
     channel = 0
     pitch = 100
     time = 0
     duration = 1
     volume = 100
     MyMIDI.addNote(track, channel, pitch, time, duration, volume)
     self.assertEqual(MyMIDI.tracks[1].eventList[0].evtname, "NoteOn")
     self.assertEqual(MyMIDI.tracks[1].eventList[0].pitch, pitch)
     self.assertEqual(MyMIDI.tracks[1].eventList[0].tick, MyMIDI.time_to_ticks(time))
     self.assertEqual(MyMIDI.tracks[1].eventList[0].duration, MyMIDI.time_to_ticks(duration))
     self.assertEqual(MyMIDI.tracks[1].eventList[0].volume, volume)
Example #2
0
 def testShiftTrack(self):
     track = 0
     channel = 0
     pitch = 100
     time = 1
     duration = 1
     volume = 100
     MyMIDI = MIDIFile(1)
     MyMIDI.addNote(track, channel, pitch, time, duration, volume)
     self.assertEqual(MyMIDI.tracks[1].eventList[0].evtname, "NoteOn")
     self.assertEqual(MyMIDI.tracks[1].eventList[0].pitch, pitch)
     self.assertEqual(MyMIDI.tracks[1].eventList[0].tick, MyMIDI.time_to_ticks(time))
     self.assertEqual(MyMIDI.tracks[1].eventList[0].duration, MyMIDI.time_to_ticks(duration))
     self.assertEqual(MyMIDI.tracks[1].eventList[0].volume, volume)
     MyMIDI.shiftTracks()
     self.assertEqual(MyMIDI.tracks[1].eventList[0].tick, 0)
Example #3
0
    def testDeinterleaveNotes(self):
        MyMIDI = MIDIFile(1, adjust_origin=False)
        track = 0
        channel = 0
        pitch = 100
        time1 = 0
        time2 = 1
        duration = 2
        volume = 100
        MyMIDI.addNote(track, channel, pitch, time1, duration, volume) # on at 0 off at 2
        MyMIDI.addNote(track, channel, pitch, time2, duration, volume+1) # on at 1 off at 3
        MyMIDI.close()

        # ticks have already been converted to delta ticks
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].tick, MyMIDI.time_to_ticks(time1))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].tick, MyMIDI.time_to_ticks(time2))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[2].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[2].tick, MyMIDI.time_to_ticks(time2 - time2))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[3].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[3].tick, MyMIDI.time_to_ticks(time2 - time2 + duration))
Example #4
0
    def testTimeShift(self):

        # With one track
        MyMIDI = MIDIFile(1)
        track = 0
        channel = 0
        pitch = 100
        time1 = 5
        duration = 1
        volume = 100
        MyMIDI.addNote(track, channel, pitch, time1, duration, volume)
        MyMIDI.close()
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].tick, MyMIDI.time_to_ticks(0))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].tick, MyMIDI.time_to_ticks(duration))

        # With two tracks
        track2 = 1
        MyMIDI = MIDIFile(2)
        MyMIDI.addNote(track, channel, pitch, time1, duration, volume)
        time2 = 6
        MyMIDI.addNote(track2, channel, pitch, time2, duration, volume)
        MyMIDI.close()
        # ticks have already been converted to delta ticks
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].tick, MyMIDI.time_to_ticks(0))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].tick, MyMIDI.time_to_ticks(duration))
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[0].tick, MyMIDI.time_to_ticks(0 + duration))
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[1].tick, MyMIDI.time_to_ticks(0 + duration))

        # Negative Time
        MyMIDI = MIDIFile(1)
        track = 0
        channel = 0
        pitch = 100
        time = -5
        duration = 1
        volume = 100
        MyMIDI.addNote(track, channel, pitch, time, duration, volume)
        MyMIDI.close()
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].tick, MyMIDI.time_to_ticks(0))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].tick, MyMIDI.time_to_ticks(0 + duration))

        # Negative time, two tracks

        MyMIDI = MIDIFile(2)
        track = 0
        channel = 0
        pitch = 100
        time = -1
        duration = 1
        volume = 100
        MyMIDI.addNote(track, channel, pitch, time, duration, volume)
        track2 = 1
        time2 = 0
        MyMIDI.addNote(track2, channel, pitch, time2, duration, volume)
        MyMIDI.close()
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[0].tick, MyMIDI.time_to_ticks(0))
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[1].MIDIEventList[1].tick, MyMIDI.time_to_ticks(1))
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[0].evtname, 'NoteOn')
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[0].tick, MyMIDI.time_to_ticks(1))
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[1].evtname, 'NoteOff')
        self.assertEqual(MyMIDI.tracks[2].MIDIEventList[1].tick, MyMIDI.time_to_ticks(1))