X-Git-Url: https://scm.cri.mines-paristech.fr/git/minwii.git/blobdiff_plain/45ff52a9acde18634e27d561470163b2c24df6a2..7517f56335128e279a36a5d9336a4d5d790b32d6:/src/app/widgets/playingscreen.py?ds=inline diff --git a/src/app/widgets/playingscreen.py b/src/app/widgets/playingscreen.py index ce4937f..9aeef24 100755 --- a/src/app/widgets/playingscreen.py +++ b/src/app/widgets/playingscreen.py @@ -32,12 +32,13 @@ from config import FONT_COLOR class _PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : - def __init__(self, distinctNotes=[]) : + def __init__(self, synth, distinctNotes=[]) : """ distinctNotes : notes disctinctes présentes dans la chanson triées du plus grave au plus aigu. """ super(_PlayingScreenBase, self).__init__() + self.synth = synth self.distinctNotes = distinctNotes self.keyboardLength = 0 self.keyboardRects = [] @@ -47,7 +48,6 @@ class _PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : self._running = False self.draw(pygame.display.get_surface()) self._initCursor() - def _initRects(self) : @@ -86,19 +86,23 @@ class _PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : self.add(c, layer=0) def _initCursor(self) : - self.cursor = WarpingCursor(blinkMode=True) + self.cursor = WarpingCursor(blinkMode=False) self.add(self.cursor, layer=2) def run(self): self._running = True clock = pygame.time.Clock() 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) + pygame.mouse.set_visible(True) + self.cursor._stopBlink() + @event_handler(pygame.KEYDOWN) def handleKeyDown(self, event) : if event.key == pygame.K_q: @@ -112,52 +116,32 @@ class _PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) : class PlayingScreen(_PlayingScreenBase) : "fenêtre de jeu pour improvisation" - scale = [55, 57, 59, 60, 62, 64, 66, 67, 69, 71, 72] + scale = [55, 57, 59, 60, 62, 64, 65, 67, 69, 71, 72] - def __init__(self) : + def __init__(self, synth) : distinctNotes = [] for midi in self.scale : tone = Tone(midi) distinctNotes.append(tone) - super(PlayingScreen, self).__init__(distinctNotes) - - #cracra code - soundFont = '/Users/pinbe/dev/minwii/fluid-soundfont-3.1/FluidR3_GM.sf2' - bank = preset = 0 - - self.fs = fs = fluidsynth.Synth() - fs.start() - self.fsid = fsid = fs.sfload(soundFont) - fs.program_select(0, fsid, bank, preset) - - def __del__(self) : - self.fs.delete() - + super(PlayingScreen, self).__init__(synth, distinctNotes) + @event_handler(events.NOTEON) def noteon(self, evt) : tone = evt.tone - self.fs.noteon(0, tone.midi, 64) + self.synth.noteon(0, tone.midi, 64) @event_handler(events.NOTEOFF) def noteoff(self, evt) : tone = evt.tone - self.fs.noteoff(0, tone.midi) + self.synth.noteoff(0, tone.midi) - class SongPlayingScreen(_PlayingScreenBase) : def __init__(self, song) : super(SongPlayingScreen, self).__init__(song.distinctNotes) self.song = song - -class SongPlayingScreenTest(_PlayingScreenBase) : - def __init__(self) : - class C:pass - o = C() - o.midi=1 - super(SongPlayingScreenTest, self).__init__([o]) class Column(pygame.sprite.DirtySprite, EventHandlerMixin) :