def __init__(self, infoFileName, songTrackName, noteFileName): self.info = SongInfo(infoFileName) #self.track = Track() self._playing = False self.start = 0.0 self.noteFileName = noteFileName self.bpm = None self.period = 0 self.delay = self.info.getDelay() # load the tracks if songTrackName: self.music = Audio.Music(songTrackName) # load the notes if noteFileName: midiIn = midi.MidiInFile(MidiReader(self), noteFileName) midiIn.read()
def getDifficulties(self): # Tutorials only have the medium difficulty if self.tutorial: return [difficulties[MEDIUM_DIFFICULTY]] if self._difficulties is not None: return self._difficulties # See which difficulties are available try: noteFileName = os.path.join(os.path.dirname(self.fileName), "notes.mid") info = MidiInfoReader() midiIn = midi.MidiInFile(info, noteFileName) try: midiIn.read() except MidiInfoReader.Done: pass info.difficulties.sort(lambda a, b: cmp(b.id, a.id)) self._difficulties = info.difficulties except: self._difficulties = difficulties.values() return self._difficulties
try: if guitarTrackName: self.guitarTrack = Audio.StreamingSound(self.engine, self.engine.audio.getChannel(1), guitarTrackName) except Exception, e: Log.warn("Unable to load guitar track: %s" % e) try: if rhythmTrackName: self.rhythmTrack = Audio.StreamingSound(self.engine, self.engine.audio.getChannel(2), rhythmTrackName) except Exception, e: Log.warn("Unable to load rhythm track: %s" % e) # load the notes if noteFileName: midiIn = midi.MidiInFile(MidiReader(self), noteFileName) midiIn.read() # load the script if scriptFileName and os.path.isfile(scriptFileName): scriptReader = ScriptReader(self, open(scriptFileName)) scriptReader.read() # update all note tracks for track in self.tracks: track.update() def getHash(self): h = sha.new() f = open(self.noteFileName, "rb") bs = 1024