X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/21025650d4d91bd0e1848bf1a78208301180e604..0bb53427dd76e9e9863362dd3c9b2d205b4f8043:/src/app/widgets/playingscreen.py diff --git a/src/app/widgets/playingscreen.py b/src/app/widgets/playingscreen.py index 223f4e5..f699a56 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 = [] @@ -85,19 +86,21 @@ 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) @@ -115,38 +118,24 @@ class PlayingScreen(_PlayingScreenBase) : "fenêtre de jeu pour improvisation" 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) : - print 'PlayingScreen.__del__' - 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) :