X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/21cc59e0782f77420330a2b108c6708ea2edade0..d44cf918237d05fa9e0eec3f61dce8cbb8d98151:/src/minwii/widgets/playingscreen.py?ds=sidebyside diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py index e88047d..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 @@ -323,6 +333,8 @@ class SongPlayingScreen(PlayingScreenBase) : 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) :