diff options
-rw-r--r-- | csound/csoundserver.py | 10 | ||||
-rw-r--r-- | csound/univorc.csd | 2 | ||||
-rwxr-xr-x | game.py | 32 | ||||
-rw-r--r-- | games/drumgit/drumgit.mson | 4 | ||||
-rw-r--r-- | model.py | 6 |
5 files changed, 43 insertions, 11 deletions
diff --git a/csound/csoundserver.py b/csound/csoundserver.py index 6e7c815..c8c799f 100644 --- a/csound/csoundserver.py +++ b/csound/csoundserver.py @@ -13,16 +13,18 @@ class CsoundServer(Thread): Thread.__init__(self) self.csound = csnd.Csound() - def start(self): + def start(self): self.perf = csnd.CsoundPerformanceThread(self.csound) uniorcpath = os.path.join( os.path.dirname(__file__), 'univorc.csd') if not os.path.exists(uniorcpath): _logger.error('univorc not found %s'%uniorcpath) else: - self.csound.Compile(uniorcpath) + if self.csound.Compile(uniorcpath) == -1: + _logger.debug('error compiling csound orchestra %s'%uniorcpath) + return 1 self.perf.Play() - _logger.debug('start csound performance %s'%uniorcpath) - + return 0 + def pause(self): self.perf.Stop() self.perf.Join() diff --git a/csound/univorc.csd b/csound/univorc.csd index e4264e9..3851ca3 100644 --- a/csound/univorc.csd +++ b/csound/univorc.csd @@ -1,6 +1,6 @@ <CsoundSynthesizer> <CsOptions> --+rtaudio=alsa -odac -m0 -d -b1024 -B4096 +-+rtaudio=alsa -odac -m0 -d -b2048 -B4096 </CsOptions> <CsInstruments> sr=22050 @@ -22,6 +22,7 @@ import random import logging import gobject import time +import gtk from sugar import profile from dbus.service import method, signal @@ -71,6 +72,24 @@ class MemorizeGame(gobject.GObject): self.messenger = None self.sentitive = True self.model = Model(os.path.dirname(__file__)) + + # create csound instance to play sound files + self.sound = 0 + try: + import csnd + self.sound = 1 + _logger.error(' [Check for module csnd] found.') + except: + _logger.error(' [Check for module csnd] not found. There will be no sound.') + + if self.sound == 1: + from csound.csoundserver import CsoundServer + self.cs = CsoundServer() + gtk.gdk.threads_init() + if self.cs.start() != 0: + _logger.error(' Error starting csound performance.') + self.sound = 0 + def load_game(self, game_name, size): if self.model.read(game_name) == 0: @@ -122,7 +141,16 @@ class MemorizeGame(gobject.GObject): if self.last_flipped <> -1 and id < (len(self.model.grid)/2): return self.model.data['running'] = 'True' - + + # play sound in any case if available + if self.sound == 1: + snd = self.model.grid[id].get('snd', None) + if snd == None: + _logger.debug('Audio: no sound in this game.') + else: + self.cs.perform('i 108 0.0 3.0 "%s" 1 0.9 0.5 0'%(snd)) + _logger.debug('Audio: play sound=%s'%snd) + # First card case if self.last_flipped == -1: self.last_flipped = id @@ -140,7 +168,7 @@ class MemorizeGame(gobject.GObject): self.emit('set-border', self.last_flipped, stroke_color, fill_color) self.increase_point(self.current_player) self.model.grid[id]['state'] = '1' - self.emit('flip-card', id) + self.emit('flip-card', id) if self.model.data['divided'] == '1': self.card_highlighted(widget, -1, False) if not signal: diff --git a/games/drumgit/drumgit.mson b/games/drumgit/drumgit.mson index 4498ae5..bd5a9a4 100644 --- a/games/drumgit/drumgit.mson +++ b/games/drumgit/drumgit.mson @@ -16,8 +16,8 @@ <pair aimg="guitar4_2.jpg" asnd="flashcomp2b.aiff" bimg="guitar4_2.jpg" bsnd="flashcomp2b.aiff" color="100" /> <pair aimg="guitar5_2.jpg" asnd="gedaempft.aiff" bimg="guitar5_2.jpg" bsnd="gedaempft.aiff" color="100" /> - <pair aimg="guitar6_2.jpg" asnd="gedaempft.aiff" bimg="guitar6_2.jpg" bsnd="gedaempft.aiff" color="100" /> - <pair aimg="guitar7_2.jpg" asnd="ungedaempft.aiff" bimg="guitar7_2.jpg" bsnd="ungedaempft.aiff" color="100" /> + <pair aimg="guitar6_2.jpg" asnd="ungedaempft.aiff" bimg="guitar6_2.jpg" bsnd="ungedaempft.aiff" color="100" /> + <pair aimg="guitar7_2.jpg" asnd="git_hit1.aiff" bimg="guitar7_2.jpg" bsnd="git_hit1.aiff" color="100" /> <pair aimg="guitar8_2.jpg" asnd="jimi4.aiff" bimg="guitar8_2.jpg" bsnd="jimi4.aiff" color="100" /> </memosono> @@ -221,7 +221,8 @@ class Model(object): if self.pairs[key].props.aimg != None: elem['img'] = os.path.join(self.data['pathimg'], self.pairs[key].props.aimg) if self.pairs[key].props.asnd != None: - elem['snd'] = os.path.join(self.data['pathsnd'], self.pairs[key].props.asnd) + if os.path.isfile(os.path.join(self.data['pathsnd'], self.pairs[key].props.asnd)): + elem['snd'] = os.path.join(self.data['pathsnd'], self.pairs[key].props.asnd) if self.pairs[key].props.achar != None: elem['char'] = self.pairs[key].props.achar elem['charalign'] = self.pairs[key].props.acharalign @@ -235,7 +236,8 @@ class Model(object): if self.pairs[key].props.bimg != None: elem['img'] = os.path.join(self.data['pathimg'], self.pairs[key].props.bimg) if self.pairs[key].props.bsnd != None: - elem['snd'] = os.path.join(self.data['pathsnd'], self.pairs[key].props.bsnd) + if os.path.isfile(os.path.join(self.data['pathsnd'], self.pairs[key].props.bsnd)): + elem['snd'] = os.path.join(self.data['pathsnd'], self.pairs[key].props.bsnd) if self.pairs[key].props.bchar != None: elem['char'] = self.pairs[key].props.bchar elem['charalign'] = self.pairs[key].props.bcharalign |