X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/5034abc0164f6c09cb53291d2fe3e71c33cc4cf9..975ed3f44e237886978f0063f2907baa8eaf46c1:/src/minwii/widgets/playingscreen.py diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py index 9519053..90a6d2a 100755 --- a/src/minwii/widgets/playingscreen.py +++ b/src/minwii/widgets/playingscreen.py @@ -9,6 +9,8 @@ $URL$ import pygame import types +import kinect.pygamedisplay as kinect + import minwii.events as events from minwii.log import eventLogger from minwii.eventutils import event_handler, EventDispatcher, EventHandlerMixin @@ -18,6 +20,7 @@ from minwii.config import FIRST_HUE from minwii.config import MIDI_VELOCITY_RANGE from minwii.config import MIDI_PAN_RANGE from minwii.config import MIDI_VELOCITY_WRONG_NOTE_ATTN +from minwii.config import SCREEN_RESOLUTION from minwii.globals import BACKGROUND_LAYER from minwii.globals import CURSOR_LAYER from minwii.globals import PLAYING_MODES_DICT @@ -43,8 +46,10 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : self.columns = {} self._initColumns() self._running = False - self.draw(pygame.display.get_surface()) - self._initCursor() + self.kinectRgb = kinect.RGBSprite(alpha=128, size=SCREEN_RESOLUTION) + self.add(self.kinectRgb, layer=CURSOR_LAYER) + self._initCursor() + def _initRects(self) : """ création des espaces réservés pour @@ -93,10 +98,15 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : pygame.display.flip() pygame.mouse.set_visible(False) while self._running : - EventDispatcher.dispatchEvents() - dirty = self.draw(pygame.display.get_surface()) - pygame.display.update(dirty) - clock.tick(FRAMERATE) + try : + EventDispatcher.dispatchEvents() + self.kinectRgb.update() + dirty = self.draw(pygame.display.get_surface()) + pygame.display.update(dirty) + clock.tick(FRAMERATE) + except KeyboardInterrupt : + self.stop() + raise def stop(self) : self._running = False @@ -106,9 +116,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) @@ -323,6 +332,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) :