X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/8a654eb43381bf77f3bade5a228809c90217d291..94e7b3f13f4247613609d53c95d0ba59a1eee9d1:/src/minwii/widgets/playingscreen.py diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py index b1dbe80..70d9aa6 100755 --- a/src/minwii/widgets/playingscreen.py +++ b/src/minwii/widgets/playingscreen.py @@ -27,7 +27,7 @@ from column import Column class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : - def __init__(self, synth, distinctNotes=[]) : + def __init__(self, synth, distinctNotes=[], displayNotes=True) : """ distinctNotes : notes disctinctes présentes dans la chanson triées du plus grave au plus aigu. @@ -35,6 +35,7 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : super(PlayingScreenBase, self).__init__() self.synth = synth self.distinctNotes = distinctNotes + self.displayNotes = displayNotes self.keyboardLength = 0 self.keyboardRects = [] self.cursor = None @@ -77,7 +78,7 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : for i, rect in enumerate(self.keyboardRects) : hue = FIRST_HUE - hueStep * i tone = self.distinctNotes[i] - c = Column(self, i, hue, rect, tone) + c = Column(self, i, hue, rect, tone, displayNote=self.displayNotes) self.add(c, layer=BACKGROUND_LAYER) self.columns[tone.midi] = c @@ -105,9 +106,8 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : @event_handler(pygame.KEYDOWN) def handleKeyDown(self, event) : - if event.key == pygame.K_q or \ - event.unicode == u'q' or \ - pygame.K_ESCAPE: + if event.key in (pygame.K_q, pygame.K_ESCAPE) or \ + event.unicode == u'q' : self.stop() @event_handler(pygame.MOUSEBUTTONDOWN) @@ -166,14 +166,14 @@ class PlayingScreen(PlayingScreenBase) : scale = [55, 57, 59, 60, 62, 64, 65, 67, 69, 71, 72] - def __init__(self, synth) : + def __init__(self, synth, displayNotes=True) : distinctNotes = [] self.currentColumn = None for midi in self.scale : tone = Tone(midi) distinctNotes.append(tone) - super(PlayingScreen, self).__init__(synth, distinctNotes) + super(PlayingScreen, self).__init__(synth, distinctNotes, displayNotes=displayNotes) @event_handler(events.COLDOWN) def noteon(self, event) : @@ -191,8 +191,8 @@ class PlayingScreen(PlayingScreenBase) : class SongPlayingScreen(PlayingScreenBase) : - def __init__(self, synth, song, mode=PLAYING_MODES_DICT['NORMAL'], tempoTrim=0) : - super(SongPlayingScreen, self).__init__(synth, song.distinctNotes) + def __init__(self, synth, song, mode=PLAYING_MODES_DICT['NORMAL'], displayNotes=True, tempoTrim=0) : + super(SongPlayingScreen, self).__init__(synth, song.distinctNotes, displayNotes=displayNotes) self.song = song self.quarterNoteDuration = song.quarterNoteDuration self.tempoTrim = tempoTrim @@ -322,6 +322,9 @@ class SongPlayingScreen(PlayingScreenBase) : def setNoteTimeout(self) : delay = self.currentNote.duration * self.quarterNoteDuration delay = delay + delay * self.tempoTrim + delay = int(delay) + if delay < 1 : + delay = 1 # durée minimale, car 0 désactiverait le timer. pygame.time.set_timer(events.NOTEEND, delay) def tempoTrimUp(self, step=0.1) :