X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/blobdiff_plain/2acf10a88b2307eeb78f74b612586dd079c1b7bf..e26832c9e7be68fc16059f7a2d3c2478afbcfa91:/src/minwii/loganalyse.py diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index a5f8be7..d7e136f 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -10,6 +10,7 @@ from minwii.logfilereader import LogFileReader from pprint import pprint from minwii.musicxml import musicXml2Song from statlib import stats +from datetime import timedelta DEFAULT_STATS = ('geometricmean', 'harmonicmean', @@ -71,10 +72,15 @@ class LogFileAnalyser(LogFileReader) : meth = getattr(self, name) results.append((meth.__doc__, meth())) except : - pass + raise return results + def _toTimeDelta(self, milliseconds) : + duration = milliseconds / 1000. + duration = int(round(duration, 0)) + return str(timedelta(seconds=duration)) + def playingDuration(self) : 'Temps de jeu' #retourne la durée écoulée entre le premier et de dernier message @@ -82,10 +88,11 @@ class LogFileAnalyser(LogFileReader) : last = self.getLastEventTicks() first = self.getFirstEventTicks() - return last - first + return self._toTimeDelta(last - first) + def songDuration(self) : - 'Durée de la chanson' + 'Durée de référence de la chanson' #retourne la durée de référence de la chanson #en prenant en compte le tempo présent dans la transcription #et en effectuant toutes les répétitions des couplets / refrains. @@ -95,7 +102,8 @@ class LogFileAnalyser(LogFileReader) : duration = 0 for note, verseIndex in song.iterNotes() : duration = duration + note.duration - return duration * song.quarterNoteDuration + duration = duration * song.quarterNoteDuration # en milisecondes + return self._toTimeDelta(duration) @statsresults def noteEndNoteOnLatency(self) : @@ -136,7 +144,7 @@ class LogFileAnalyser(LogFileReader) : for note, verseIndex in song.iterNotes() : songNoteCpt = songNoteCpt + 1 - return int(round(self.noteOnCount() / float(songNoteCpt) * 100, 0)) + return round(self.noteOnCount() / float(songNoteCpt) * 100, 1) def missCount(self) : "Nombre d'erreurs"