]> CRI, Mines Paris - PSL - minwii.git/commitdiff
Impression d'un événement SONGEND à la fin de la chanson.
authorpin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Thu, 8 Jul 2010 14:31:50 +0000 (14:31 +0000)
committerpin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Thu, 8 Jul 2010 14:31:50 +0000 (14:31 +0000)
git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@280 fe552daf-6dbe-4428-90eb-1537e0879342

src/minwii/event_pprinters.py
src/minwii/events.py
src/minwii/musicxml.py
src/minwii/widgets/playingscreen.py

index bc5834de55a3367084f16860ece4ca54ad65b7a3..c8b270a7d42caf90b08adf3c3d508e3375c1f02e 100755 (executable)
@@ -18,6 +18,9 @@ def log_NOTEOFF(e):
     
 def log_NOTEEND(e):
     return ''
+
+def log_SONGEND(e) :
+    return ''
         
 def log_COLSTATECHANGE(e):
     col = e.column
index a67a416cbe8816b69d1b2cbe8eae678567bb7801..877be751f63a24fd4a3b09f24ced09837e1f2dfa 100755 (executable)
@@ -7,13 +7,16 @@ events = ['NOTEON',
           'COLDOWN',
           'COLUP',
           'COLOVER',
-          'COLSTATECHANGE']
+          'COLSTATECHANGE',
+          'SONGEND']
 
 eventNames = {}
 self = modules[__name__]
 
 for i, name in enumerate(events) :
     eventType = pygame.USEREVENT + 1 + i
+    if eventType >= pygame.NUMEVENTS :
+        eventType = eventType + 1
     eventNames[eventType] = name
     setattr(self, name, eventType)
 
index ff819e15fcc751624efe34d8d20cce839935af39..8bc25089cc651a0334207ba72d7b9c982ea42f99 100755 (executable)
@@ -140,13 +140,9 @@ class Part(object) :
                     break
         
     
-    def iterNotes(self, indefinitely=True) :
+    def iterNotes(self) :
         "exécution de la chanson avec l'alternance couplets / refrains"
-        if indefinitely == False :
-            iterable = self.verses
-        else :
-            iterable = cycle(self.verses)
-        for verse in iterable :
+        for verse in self.verses :
             if self.songStartsWithChorus :
                 for note in self.chorus :
                     yield note, 0
index 0e179dd160d795ca89fad6bd22074288519bd3f2..adb6981c18bc9f36053b6567b7f4868d68ee82f0 100755 (executable)
@@ -10,6 +10,7 @@ import pygame
 import types
 
 import minwii.events as events
+from minwii.log import eventLogger
 from minwii.eventutils import event_handler, EventDispatcher, EventHandlerMixin
 from minwii.musicxml import Tone
 from minwii.config import FRAMERATE
@@ -292,11 +293,17 @@ class SongPlayingScreen(PlayingScreenBase) :
     def displayNext(self, event=None) :
         if self.currentColumn:
             self.currentColumn.update(False)
-        note, verseIndex = self.noteIterator.next()
+        try :
+            note, verseIndex = self.noteIterator.next()
+        except StopIteration :
+            self.noteIterator = self.song.iterNotes()
+            note, verseIndex = self.noteIterator.next()
+            eventLogger.info(pygame.event.Event(events.SONGEND))
         try :
             syllabus = note.lyrics[verseIndex].syllabus()
         except IndexError :
             syllabus = u'…'
+        
         column = self.columns[note.midi]
         column.update(True, syllabus)
         self.currentColumn = column