diff options
author | Oli <olivier.belanger@umontreal.ca> | 2007-07-19 00:39:46 (GMT) |
---|---|---|
committer | Oli <olivier.belanger@umontreal.ca> | 2007-07-19 00:39:46 (GMT) |
commit | 36b024ff659878920fe1378bbb81820dc0ab4b13 (patch) | |
tree | 84e34cac0cadb6d976fa0f59a09be2470b747773 /miniTamTam | |
parent | 2f077d6fe08a46cd583287e1985f79f116329bcc (diff) | |
parent | 1f3bff4d4b565bc655bd26f30e3d7df363c97b99 (diff) |
Merge branch 'master' of git+ssh://olipet@dev.laptop.org/git/projects/tamtam
Diffstat (limited to 'miniTamTam')
-rw-r--r-- | miniTamTam/KeyboardStandAlone.py | 10 | ||||
-rw-r--r-- | miniTamTam/miniTamTamMain.py | 46 |
2 files changed, 37 insertions, 19 deletions
diff --git a/miniTamTam/KeyboardStandAlone.py b/miniTamTam/KeyboardStandAlone.py index a5f7c49..fcbca15 100644 --- a/miniTamTam/KeyboardStandAlone.py +++ b/miniTamTam/KeyboardStandAlone.py @@ -11,7 +11,7 @@ from Util import Instrument KEY_MAP_PIANO = Config.KEY_MAP_PIANO -log = file('/home/olpc/log.tamtam','w') +#log = file('/home/olpc/log.tamtam','w') class KeyboardStandAlone: def __init__( self, recordingFunction, adjustDurationFunction, getCurrentTick, getPlayState, loop ): @@ -91,12 +91,12 @@ class KeyboardStandAlone: mode = 'mini')) instrumentName = self.instrument - print >>log, 'instrumentName:', instrumentName + #print >>log, 'instrumentName:', instrumentName pitch = KEY_MAP_PIANO[key] - if instrumentName in Instrument.DRUM : - print >>log, 'kit_element: ', Config.KIT_ELEMENT[pitch] - playkey(36,100, Instrument.DRUM[instrumentName][ Config.KIT_ELEMENT[pitch] ] ) + if instrumentName in Instrument.KIT: + #print >>log, 'kit_element: ', Config.KIT_ELEMENT[pitch] + playkey(36,100, Instrument.KIT[instrumentName][ Config.KIT_ELEMENT[pitch] ] ) else: if event.state == gtk.gdk.MOD1_MASK: diff --git a/miniTamTam/miniTamTamMain.py b/miniTamTam/miniTamTamMain.py index 056e7e4..0c43ae9 100644 --- a/miniTamTam/miniTamTamMain.py +++ b/miniTamTam/miniTamTamMain.py @@ -68,7 +68,7 @@ class miniTamTamMain(SubActivity): self.loop = Loop(self.beat, sqrt( self.instVolume*0.01 )) self.csnd.loopSetTempo(self.tempo) self.noteList = [] - time.sleep(0.001) + time.sleep(0.001) # why? self.trackpad = Trackpad( self ) for i in range(21): self.csnd.setTrackVolume( 100, i ) @@ -109,6 +109,7 @@ class miniTamTamMain(SubActivity): self.synthLabWindow = None + self.beatPickup = True #self.regenerate() @@ -249,17 +250,19 @@ class miniTamTamMain(SubActivity): beatSliderBox.pack_start(self.beatSliderBoxImgTop, False, padding=10) beatSliderBox.pack_start(self.beatSlider, True, 20) self.tooltips.set_tip(self.beatSlider,Tooltips.BEAT) + + self.delayedTempo = 0 # used to store tempo updates while the slider is active + self.tempoSliderActive = False tempoSliderBox = gtk.VBox() self.tempoSliderBoxImgTop = gtk.Image() self.tempoSliderBoxImgTop.set_from_file(Config.IMAGE_ROOT + 'tempo5.png') self.tempoAdjustment = gtk.Adjustment(value=self.tempo, lower=Config.PLAYER_TEMPO_LOWER, upper=Config.PLAYER_TEMPO_UPPER, step_incr=1, page_incr=1, page_size=1) - #tempoSlider = ImageVScale( Config.IMAGE_ROOT + "sliderbutvert.png", self.tempoAdjustment, 5) - tempoSlider = gtk.VScale( self.tempoAdjustment) - #TEMP + tempoSlider = ImageVScale( Config.IMAGE_ROOT + "sliderbutvert.png", self.tempoAdjustment, 5) tempoSlider.set_inverted(True) tempoSlider.set_size_request(15,320) self.tempoAdjustmentHandler = self.tempoAdjustment.connect("value_changed" , self.handleTempoSliderChange) + tempoSlider.connect("button-press-event", self.handleTempoSliderPress) tempoSlider.connect("button-release-event", self.handleTempoSliderRelease) tempoSliderBox.pack_start(self.tempoSliderBoxImgTop, False, padding=10) tempoSliderBox.pack_start(tempoSlider, True) @@ -491,21 +494,31 @@ class miniTamTamMain(SubActivity): self.regenerate() self.beatPickup = True + def handleTempoSliderPress(self, widget, event): + self.tempoSliderActive = True + def handleTempoSliderRelease(self, widget, event): - #self.tempo = int(widget.get_adjustment().value) - #self.csnd.loopSetTempo(self.tempo) - #self.sequencer.tempo = widget.get_adjustment().value - #self.drumFillin.setTempo(self.tempo) - pass + self.tempoSliderActive = False + if self.network.isPeer() and self.delayedTempo != 0: + if self.tempo != self.delayedTempo: + print "applying delayed tempo", self.delayedTempo + self.tempoAdjustment.handler_block( self.tempoAdjustmentHandler ) + print "a" + self.tempoAdjustment.set_value( self.delayedTempo ) + print "b" + self._updateTempo( self.delayedTempo ) + self.tempoAdjustment.handler_unblock( self.tempoAdjustmentHandler ) + self.delayedTempo = 0 + self.sendSyncQuery() def handleTempoSliderChange(self,adj): print "handleTempoSliderChange" if self.network.isPeer(): self.requestTempoChange(int(adj.value)) else: - self._updateTempo( int(adj.value), True ) + self._updateTempo( int(adj.value) ) - def _updateTempo( self, val, propagate = False ): + def _updateTempo( self, val ): if self.network.isHost(): t = time.time() @@ -767,11 +780,14 @@ class miniTamTamMain(SubActivity): def processHT_TEMPO_UPDATE( self, sock, message, data ): print "got tempo update" self.unpacker.reset(data) - self.tempoAdjustment.handler_block( self.tempoAdjustmentHandler ) val = self.unpacker.unpack_int() + if self.tempoSliderActive: + print "delaying update", val + self.delayedTempo = val + return + self.tempoAdjustment.handler_block( self.tempoAdjustmentHandler ) print "a" self.tempoAdjustment.set_value( val ) - time.sleep(0.01) print "b" self._updateTempo( val ) self.tempoAdjustment.handler_unblock( self.tempoAdjustmentHandler ) @@ -791,11 +807,13 @@ class miniTamTamMain(SubActivity): print "done" def processPR_REQUEST_TEMPO_CHANGE( self, sock, message, data ): + if self.tempoSliderActive: + print "got tempo change request, but ignoring" + return self.unpacker.reset(data) val = self.unpacker.unpack_int() print "got tempo change", val self.tempoAdjustment.set_value( val ) - time.sleep(0.01) print "done" #----------------------------------------------------------------------- |