X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/2d2048b94fc903b6102b5b5126419d57605d130a..8a654eb43381bf77f3bade5a228809c90217d291:/src/minwii/widgets/playingscreen.py diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py index 9296646..b1dbe80 100755 --- a/src/minwii/widgets/playingscreen.py +++ b/src/minwii/widgets/playingscreen.py @@ -64,7 +64,7 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : rect = pygame.Rect(upperLeftCorner, (columnWidth, dispHeight)) rects.append(rect) - # la dernière colonne a la largeur du reste + # la dernière colonne à la largeur du reste upperLeftCorner = ((i+1) * columnWidth, 0) rect = pygame.Rect(upperLeftCorner, (dispWidth - (self.keyboardLength - 1) * columnWidth , dispHeight)) rects.append(rect) @@ -191,10 +191,11 @@ class PlayingScreen(PlayingScreenBase) : class SongPlayingScreen(PlayingScreenBase) : - def __init__(self, synth, song, mode=PLAYING_MODES_DICT['NORMAL']) : + def __init__(self, synth, song, mode=PLAYING_MODES_DICT['NORMAL'], tempoTrim=0) : super(SongPlayingScreen, self).__init__(synth, song.distinctNotes) self.song = song self.quarterNoteDuration = song.quarterNoteDuration + self.tempoTrim = tempoTrim self.currentColumn = None self.noteIterator = self.song.iterNotes() self.displayNext() @@ -229,10 +230,7 @@ class SongPlayingScreen(PlayingScreenBase) : col = event.column if col.state and not self.currentNotePlayed : self.playnote(col, event.pos) - SongPlayingScreen.setNoteTimeout( - int(self.currentNote.duration * \ - self.quarterNoteDuration) - ) + self.setNoteTimeout() self.currentNotePlayed = True def handleEasyColumnOver(self, event) : @@ -241,10 +239,7 @@ class SongPlayingScreen(PlayingScreenBase) : self.cursor.pressed and \ not self.currentNotePlayed : self.playnote(col, event.pos) - SongPlayingScreen.setNoteTimeout( - int(self.currentNote.duration * \ - self.quarterNoteDuration) - ) + self.setNoteTimeout() self.currentNotePlayed = True @@ -267,10 +262,7 @@ class SongPlayingScreen(PlayingScreenBase) : if col.state and \ not self.currentNotePlayed : self.playnote(col, event.pos) - SongPlayingScreen.setNoteTimeout( - int(self.currentNote.duration * \ - self.quarterNoteDuration) - ) + self.setNoteTimeout() self.currentNotePlayed = True @@ -327,10 +319,17 @@ class SongPlayingScreen(PlayingScreenBase) : self.synth.noteoff(0, self.currentNote.midi) self.displayNext() - @staticmethod - def setNoteTimeout(delay) : + def setNoteTimeout(self) : + delay = self.currentNote.duration * self.quarterNoteDuration + delay = delay + delay * self.tempoTrim pygame.time.set_timer(events.NOTEEND, delay) + def tempoTrimUp(self, step=0.1) : + self.tempoTrim = round(self.tempoTrim - step, 1) + + def tempoTrimDown(self, step=0.1) : + self.tempoTrim = round(self.tempoTrim + step, 1) + def stop(self) : pygame.time.set_timer(events.NOTEEND, 0) super(SongPlayingScreen, self).stop()