Miscellany
public text v1 · immutable def tick(self):
#print "tick", self.offset
if self.stop == 1 or self.pause == 1:
return False
mapIndex = 0
if self._tracks.numSolo() > 0:
#print "using solo list"
t = self._tracks.soloList()
else:
t = self._tracks._tracks
#nTracks = self.midFile.numTracks()
for k, trackInfo in t.iteritems():
track = self.midFile.track(k)
if track.hasNormalEvent():
mapIndex += 1
sublist = track.events[track.startEventIndex:]
if self.selectedTrack == k:
self.count += 1
if self.count > 20:
p = float(self.offset) / float(track._maxTime)
self.scoreLocationCallback(p)
self.count = 0
for e in sublist:
#print "e.offset=", e.offset
if self.offset > e.offset:
if not trackInfo.mute:
if e.type == 0x09 and e.vel > 0: # note on
#print "note on", e.note
self.noteOn(e.channel, e.note, e.vel)
self.notes[e.note] = e.channel + 1
if k == self.selectedTrack:
self.notifyNoteOn(e.note)
elif e.type == 0x08 or (e.type == 0x09 and e.vel == 0): # note off
#print "note off", e.note
self.noteOff(e.channel, e.note, e.vel)
self.notes[e.note] = 0
if k == self.selectedTrack:
self.notifyNoteOff(e.note)
elif e.type == 0x0c: # program change
self.setProgramForChannel(e.program, e.channel)
track.startEventIndex += 1
else:
break
self.offset += self.stepSize * self.tempoScale * self.timeScale
return True