X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/e84b436a6e4043910573b2effe3d65f0a6f1e0b0..1355364de08e9b941c6fb93cd95ff0df6703dc21:/src/minwii/loganalyse.py diff --git a/src/minwii/loganalyse.py b/src/minwii/loganalyse.py index 1772849..551af7f 100755 --- a/src/minwii/loganalyse.py +++ b/src/minwii/loganalyse.py @@ -40,7 +40,8 @@ class LogFileAnalyser(LogFileReader) : POSSIBLE_ANALYSES = {'BEGINNER' : ('songDuration', 'playingDuration', - 'noteEndNoteOnLatency')} + 'noteEndNoteOnLatency', + 'noteOnCount')} def analyse(self) : mode = self.getMode() @@ -55,15 +56,22 @@ class LogFileAnalyser(LogFileReader) : pprint(results) def playingDuration(self) : + """ retourne la durée écoulée entre le premier et de dernier message + de type événement : correspond à la durée d'interprétation. + """ last = self.getLastEventTicks() first = self.getFirstEventTicks() return last - first def songDuration(self) : + """ 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. + """ songFile = self.getSongFile() song = musicXml2Song(songFile) duration = 0 - for note, verseIndex in song.iterNotes(indefinitely=False) : + for note, verseIndex in song.iterNotes() : duration = duration + note.duration return duration * song.quarterNoteDuration @@ -81,6 +89,20 @@ class LogFileAnalyser(LogFileReader) : return latencies + def noteOnCount(self) : + "retourne le nombre d'événements NOTEON" + + eIter = self.getEventsIterator() + cpt = 0 + + for ticks, eventName, message in eIter : + if eventName == 'NOTEON' : + cpt = cpt + 1 + + return cpt + + +