Ajout description midi des instruments et sélection au niveau de fluidsynth.
[minwii.git] / src / app / minwii.py
index 3757df1..7901c9c 100755 (executable)
@@ -6,30 +6,43 @@ $Id$
 $URL$
 """
 
+import pygame
 from pgu.gui import Desktop
 from pgu.gui import QUIT
 from widgets.home import Home
-from widgets.playingscreen import _PlayingScreenBase, SongPlayingScreenTest
-import time
+from widgets.playingscreen import SongPlayingScreen, PlayingScreen
+from widgets.instrumentselector import InstrumentSelector
+from synth import Synth
+from eventutils import EventDispatcher
+from musicxml import musicXml2Song
+from config import SONG_FILE_PATH
 
-class MinWii(Desktop):
+class MinWii(object):
     
     def __init__(self) :
-        Desktop.__init__(self)
-        
-        # home = Home()
-        # home.connect(QUIT, self.quit)
-        # self.run(home)
-        
-        # class C:pass
-        # o = C()
-        # o.midi=1
-        # playingScreen = _PlayingScreenBase([o])
-        
-        import pygame
-        playingScreen = SongPlayingScreenTest()
-        #playingScreen.draw(pygame.display.get_surface())
-        playingScreen.run()
-        
-        #pygame.display.flip()
-        #time.sleep(2)
+        app = Desktop()
+        synth = Synth()
+
+        while True :
+            home = Home(songPath=SONG_FILE_PATH)
+            home.connect(QUIT, app.quit)
+            app.run(home)
+            app.close(home)
+            returnValue = home.returnValue
+            if not returnValue :
+                break
+            
+            selector = InstrumentSelector()
+            selector.run()
+            selector.stop()
+            pygame.event.clear()
+            EventDispatcher.reset()
+            instrumentDescription = selector.selectedInstrument
+            
+            song = musicXml2Song(home.songFile, printNotes=True)
+            bank, preset = instrumentDescription['bank'], instrumentDescription['preset']
+            synth.program_select(0, bank, preset)
+            playingScreen = SongPlayingScreen(synth, song)
+            playingScreen.run()
+            pygame.event.clear()
+            EventDispatcher.reset()