diff options
author | Oli <olivier.belanger@umontreal.ca> | 2007-06-28 17:31:03 (GMT) |
---|---|---|
committer | Oli <olivier.belanger@umontreal.ca> | 2007-06-28 17:31:03 (GMT) |
commit | 91141480fe401a9abc4cd994a90fd8bc21980e8c (patch) | |
tree | 1a068f8094f5bf67a383c9f6e3a484403b9384ab /Edit | |
parent | 7ef90d5655514c2c3f1177ba58d90da8451aad36 (diff) |
keyboard recording and brush tool changes
Diffstat (limited to 'Edit')
-rw-r--r-- | Edit/MainWindow.py | 14 | ||||
-rw-r--r-- | Edit/TrackInterface.py | 22 |
2 files changed, 30 insertions, 6 deletions
diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py index b75f3a8..248f9af 100644 --- a/Edit/MainWindow.py +++ b/Edit/MainWindow.py @@ -256,7 +256,7 @@ class MainWindow( SubActivity ): #self.GUI["2XYSliderYAdjustment"] = gtk.Adjustment( 650, 500, 1000, 1, 1, 1 ) #self.GUI["2XYSlider"] = XYSlider( self.GUI["2XYSliderFixed"], self.GUI["2XYSliderButton"], self.GUI["2XYSliderXAdjustment"], self.GUI["2XYSliderYAdjustment"], True, True ) #self.GUI["2rightPanel"].pack_start( self.GUI["2XYSlider"], False, False, 0 ) - self.trackInterface = TrackInterface( self.noteDB, self ) + self.trackInterface = TrackInterface( self.noteDB, self, self.getScale ) self.noteDB.addListener( self.trackInterface, TrackInterfaceParasite, True ) self.trackInterface.set_size_request( -1, 713 ) self.GUI["2rightPanel"].pack_start( self.trackInterface, False, False, 0 ) @@ -810,6 +810,9 @@ class MainWindow( SubActivity ): #else: # recordButton.hide() + def getScale(self): + return self.generationPanel.scale + def handleVolume( self, widget ): self._data["volume"] = round( widget.get_value() ) self.csnd.setMasterVolume(self._data["volume"]) @@ -1632,7 +1635,8 @@ class MainWindow( SubActivity ): return self.noteDB.updateNote( n.page, n.track, n.id, PARAMETER.DURATION, adjustedDuration) if onsetQuantized >= n.cs.onset and (onsetQuantized+2) <= (n.cs.onset + n.cs.duration): - return + self.noteDB.deleteNote(n.page, n.track, n.id) + #return csnote = CSoundNote(onset = 0, pitch = pitch, @@ -1693,7 +1697,8 @@ class MainWindow( SubActivity ): for n in self.noteDB.getNotesByTrack( csId[0], csId[1] ): if csId[3] < n.cs.onset and (csId[3] + newDuration) >= n.cs.onset: - newDuration = n.cs.onset - csId[3] + self.noteDB.deleteNote(n.page, n.track, n.id) + #newDuration = n.cs.onset - csId[3] break self.noteDB.updateNote( csId[0], csId[1], csId[2], PARAMETER.DURATION, newDuration) @@ -1711,7 +1716,8 @@ class MainWindow( SubActivity ): for n in self.noteDB.getNotesByTrack( self.csId[0], self.csId[1] ): if self.csId[3] < n.cs.onset and (self.csId[3] + newDuration) > n.cs.onset: - newDuration = n.cs.onset - self.csId[3] + self.noteDB.deleteNote(n.page, n.track, n.id) + #newDuration = n.cs.onset - self.csId[3] break self.noteDB.updateNote( self.csId[0], self.csId[1], self.csId[2], PARAMETER.DURATION, newDuration) diff --git a/Edit/TrackInterface.py b/Edit/TrackInterface.py index 5475d55..76231a9 100644 --- a/Edit/TrackInterface.py +++ b/Edit/TrackInterface.py @@ -12,7 +12,7 @@ from Edit.MainWindow import CONTEXT from Util.NoteDB import PARAMETER from Util.CSoundNote import CSoundNote - +from Generation.GenerationConstants import GenerationConstants from Util.Profiler import TP class SELECTNOTES: @@ -42,11 +42,12 @@ class TrackInterfaceParasite: class TrackInterface( gtk.EventBox ): - def __init__( self, noteDB, owner ): + def __init__( self, noteDB, owner, getScaleFunction ): gtk.EventBox.__init__( self ) self.noteDB = noteDB self.owner = owner + self.getScale = getScaleFunction self.drawingArea = gtk.DrawingArea() self.drawingAreaDirty = False # are we waiting to draw? @@ -390,6 +391,7 @@ class TrackInterface( gtk.EventBox ): TP.ProfileEnd( "TI::handleButtonPress" ) return elif self.interfaceMode == INTERFACEMODE.PAINT: + self.scale = self.getScale() self.painting = True self.paintTrack = i self.GRID = 3. @@ -409,6 +411,15 @@ class TrackInterface( gtk.EventBox ): pitch = 48 else: pitch = pitch + + minDiff = 100 + for pit in GenerationConstants.SCALES[self.scale]: + diff = abs(pitch-(pit+36)) + if diff < minDiff: + minDiff = diff + nearestPit = pit + pitch = nearestPit+36 + onset = self.pixelsToTicksFloor( self.curBeats, self.clickLoc[0] - self.trackRect[i].x ) onset = self.GRID * int(onset / self.GRID + 0.5) self.pLastPos = onset @@ -511,6 +522,13 @@ class TrackInterface( gtk.EventBox ): pitch = 48 else: pitch = pitch + minDiff = 100 + for pit in GenerationConstants.SCALES[self.scale]: + diff = abs(pitch-(pit+36)) + if diff < minDiff: + minDiff = diff + nearestPit = pit + pitch = nearestPit+36 onset = gridPos if i != self.drumIndex: |