diff options
author | Oli <olpc@localhost.localdomain> | 2007-02-06 00:29:04 (GMT) |
---|---|---|
committer | Oli <olpc@localhost.localdomain> | 2007-02-06 00:29:04 (GMT) |
commit | dbf0e2d924840be32f60611ae7ae8e09111a8740 (patch) | |
tree | df2891724d878845dfec00e7eadcaf79abaa39d7 /SynthLab | |
parent | bb6ba47652bbf684192d2ba0b104928abf8dcf92 (diff) |
synthlab allow polyphonic recording
Diffstat (limited to 'SynthLab')
-rw-r--r-- | SynthLab/SynthLabParametersWindow.py | 6 | ||||
-rw-r--r-- | SynthLab/SynthLabWindow.py | 19 |
2 files changed, 15 insertions, 10 deletions
diff --git a/SynthLab/SynthLabParametersWindow.py b/SynthLab/SynthLabParametersWindow.py index 0b1382b..a6a1cf7 100644 --- a/SynthLab/SynthLabParametersWindow.py +++ b/SynthLab/SynthLabParametersWindow.py @@ -108,7 +108,7 @@ class SynthLabParametersWindow( gtk.Window ): self.slider3.set_size_request(50, 150) self.sliderBox.pack_start(self.slider3, True, False) - self.p4Adjust = gtk.Adjustment(slider4Init, 0, 1, .01, .01, 0) + self.p4Adjust = gtk.Adjustment(slider4Init, 0, 2, .01, .01, 0) self.p4Adjust.connect("value-changed", self.sendTables, 4) self.slider4 = ImageVScale(Config.TAM_TAM_ROOT + '/Resources/Images/sliderbutred.png', self.p4Adjust, 7) self.slider4.connect("button-press-event", self.showParameter, 4) @@ -141,7 +141,7 @@ class SynthLabParametersWindow( gtk.Window ): midiPitch = Config.KEY_MAP[key] if midiPitch not in self.playingPitch: self.playingPitch.append( midiPitch ) - self.playNoteFunction( midiPitch ) + self.playNoteFunction( midiPitch, 0 ) def onKeyRelease( self, widget, event ): key = event.hardware_keycode @@ -180,7 +180,7 @@ class SynthLabParametersWindow( gtk.Window ): self.p1Adjust.set_all(slider1Init, slider1Min, slider1Max, slider1Step, slider1Step, 0) self.p2Adjust.set_all(slider2Init, slider2Min, slider2Max, slider2Step, slider2Step, 0) self.p3Adjust.set_all(slider3Init, slider3Min, slider3Max, slider3Step, slider3Step, 0) - self.p4Adjust.set_all(slider4Init, 0, 1, 0.01, 0.01, 0) + self.p4Adjust.set_all(slider4Init, 0, 2, 0.01, 0.01, 0) self.tooltipsUpdate() diff --git a/SynthLab/SynthLabWindow.py b/SynthLab/SynthLabWindow.py index 7ce1dc6..3e9085a 100644 --- a/SynthLab/SynthLabWindow.py +++ b/SynthLab/SynthLabWindow.py @@ -41,6 +41,7 @@ class SynthLabWindow( gtk.Window ): self.updateBounds(i) self.instanceOpen = 0 self.recordWait = 0 + self.recCount = 0 self.duration = 1.5 self.durString = '%.2f' % self.duration self.playingPitch = [] @@ -189,13 +190,13 @@ class SynthLabWindow( gtk.Window ): if midiPitch not in self.playingPitch: if self.recordWait == 0: self.playingPitch.append( midiPitch ) - self.playNote( midiPitch ) + self.playNote( midiPitch, 0 ) else: - self.csnd.inputMessage("i5204 0.02 4 " + str(self.table) ) + #self.csnd.inputMessage("i5204 0.02 4 " + str(self.table) ) self.recordWait = 0 - time.sleep(0.02) + #time.sleep(0.02) self.playingPitch.append( midiPitch ) - self.playNote( midiPitch ) + self.playNote( midiPitch, self.table ) self.waitRecording() def resetRecord( self ): @@ -204,7 +205,7 @@ class SynthLabWindow( gtk.Window ): return True def waitRecording(self): - self.wait = gobject.timeout_add((int(self.duration*1000)) , self.resetRecord ) + self.wait = gobject.timeout_add(4000 , self.resetRecord ) def onKeyRelease( self, widget, event ): key = event.hardware_keycode @@ -220,6 +221,7 @@ class SynthLabWindow( gtk.Window ): img = int((self.duration - .5) * 1.425 + 1) self.durLabel.set_from_file(Config.IMAGE_ROOT + 'dur' + str(img) + '.png') self.parameterUpdate(self.durString) + self.tooltips.set_tip(self.durationSlider, Tooltips.SOUNDDUR + ': ' + self.durString) def showParameter( self, widget, data=None ): if not self.parameterOpen: @@ -244,10 +246,12 @@ class SynthLabWindow( gtk.Window ): if self.parameterOpen: self.parameter.update(durString) - def playNote( self, midiPitch ): + def playNote( self, midiPitch, table ): cpsPitch = 261.626*pow(1.0594633, midiPitch-36) - mess = "i5203 0 " + str(self.duration) + " " + str(cpsPitch) + " " + " " .join([str(n) for n in self.synthObjectsParameters.getOutputParameters()]) + self.recCount += 1 + mess = "i5203." + str(self.recCount) + " 0 " + str(self.duration) + " " + str(cpsPitch) + " " + str(table) + " " + " " .join([str(n) for n in self.synthObjectsParameters.getOutputParameters()]) self.csnd.inputMessage( mess ) + if self.recCount >= 9: self.recCount = 0 def handleClose( self, widget, data ): if self.instanceOpen: @@ -372,6 +376,7 @@ class SynthLabWindow( gtk.Window ): for i in range(self.objectCount): if self.locations[i] == SynthLabConstants.INIT_LOCATIONS[i] \ and i != self.objectCount-1: continue + if self.bounds[i][0] < event.x < self.bounds[i][2] and self.bounds[i][1] < event.y < self.bounds[i][3]: gate = self.testGates( i, event.x-self.locations[i][0], event.y-self.locations[i][1] ) if gate: |