X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/blobdiff_plain/35997bc815c869fcee2b1f158e3d28a6a3553c4e..2d2048b94fc903b6102b5b5126419d57605d130a:/src/minwii/widgets/playingscreen.py diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py index ca6a1e3..9296646 100755 --- a/src/minwii/widgets/playingscreen.py +++ b/src/minwii/widgets/playingscreen.py @@ -59,11 +59,16 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : columnWidth = int(round(float(dispWidth) / self.keyboardLength)) rects = [] - for i in range(self.keyboardLength) : + for i in range(self.keyboardLength - 1) : upperLeftCorner = (i*columnWidth, 0) rect = pygame.Rect(upperLeftCorner, (columnWidth, dispHeight)) rects.append(rect) + # la dernière colonne a la largeur du reste + upperLeftCorner = ((i+1) * columnWidth, 0) + rect = pygame.Rect(upperLeftCorner, (dispWidth - (self.keyboardLength - 1) * columnWidth , dispHeight)) + rects.append(rect) + self.keyboardRects = rects def _initColumns(self) : @@ -163,22 +168,26 @@ class PlayingScreen(PlayingScreenBase) : def __init__(self, synth) : distinctNotes = [] + self.currentColumn = None for midi in self.scale : tone = Tone(midi) distinctNotes.append(tone) super(PlayingScreen, self).__init__(synth, distinctNotes) - @event_handler(events.NOTEON) - def noteon(self, evt) : - tone = evt.tone - self.synth.noteon(0, tone.midi, 96) - - @event_handler(events.NOTEOFF) - def noteoff(self, evt) : - tone = evt.tone - self.synth.noteoff(0, tone.midi) + @event_handler(events.COLDOWN) + def noteon(self, event) : + col = event.column + col.update(True) + self.currentColumn = col + self.playnote(col, event.pos) + @event_handler(events.COLUP) + def noteoff(self, event) : + if self.currentColumn : + self.currentColumn.update(False) + self.synth.noteoff(0, self.currentColumn.tone.midi) + class SongPlayingScreen(PlayingScreenBase) :