diff options
author | amartin <olpc@xo-00-CE-12.localdomain> | 2007-06-29 20:04:34 (GMT) |
---|---|---|
committer | amartin <olpc@xo-00-CE-12.localdomain> | 2007-06-29 20:04:34 (GMT) |
commit | fd69395099d5302cb4db19e910e292410b4ae95c (patch) | |
tree | ab75467ccff25629eab4263b21df5fc634fead19 /Util | |
parent | 601e1f48e93d7768736cbb2d54015ed2776e5845 (diff) |
load/save page props
Diffstat (limited to 'Util')
-rw-r--r-- | Util/ControlStream.py | 23 | ||||
-rw-r--r-- | Util/InstrumentPanel.py | 9 | ||||
-rw-r--r-- | Util/NoteDB.py | 28 |
3 files changed, 42 insertions, 18 deletions
diff --git a/Util/ControlStream.py b/Util/ControlStream.py index 934e2c6..bb23e1b 100644 --- a/Util/ControlStream.py +++ b/Util/ControlStream.py @@ -33,7 +33,8 @@ class TamTamOStream: self.file.write('\n') def page_add(self, pid, page): - l = [ 'page_add', str(pid), str(page.beats) ] + l = [ 'page_add', str(pid), str(page.beats), str(page.color), str(page.instruments) ] + print pid, page.instruments self.file.write( " ".join([str(i) for i in l])) self.file.write('\n') @@ -47,11 +48,6 @@ class TamTamOStream: self.file.write(" ".join([str(t) for t in vols])) self.file.write('\n') - def track_inst(self, insts): - self.file.write('track_inst ') - self.file.write(" ".join([name for name in insts])) - self.file.write('\n') - def master_vol(self, volume): self.file.write('master_vol ') self.file.write(str(volume)) @@ -75,7 +71,6 @@ class TamTamTable: 'note_add':self.note_add, 'page_add':self.page_add, 'page_set':self.page_set, - 'track_inst':self.track_inst, 'track_vol':self.track_vol, 'master_vol':self.master_vol, 'tempo':self.tempo, @@ -122,19 +117,23 @@ class TamTamTable: def note_set(self, argv): print 'note_set', argv + def page_add(self, argv): if Config.DEBUG > 3: print 'page_add', argv pid = int (argv[0]) beats = int (argv[1]) + color = int( argv[2] ) + insts = "" + for str in argv[3:]: + insts += str + print pid, insts + instruments = eval( insts ) after = self.noteDB.tune[-1] - self.pid[pid] = self.noteDB.addPage(-1, NoteDB.Page(beats), after) + self.pid[pid] = self.noteDB.addPage(-1, NoteDB.Page(beats,color,instruments), after) def page_set(self, argv): print 'page_set', argv - def track_inst(self, argv): - self.tracks_inst = [] - for i in range(len(argv)): - self.tracks_inst.append(argv[i]) + def track_vol(self, argv): self.tracks_volume = [] for i in range(len(argv)): diff --git a/Util/InstrumentPanel.py b/Util/InstrumentPanel.py index 072edcd..ef88f2f 100644 --- a/Util/InstrumentPanel.py +++ b/Util/InstrumentPanel.py @@ -359,7 +359,14 @@ class DrumPanel( gtk.EventBox ): if self.setDrum: widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event self.setDrum(data) - + + def set_activeInstrument( self, instrument, state ): + if instrument in self.instrumentList: + btn = self.drums[instrument] + btn.handler_block(btn.clickedHandler) + btn.set_active(state) + btn.handler_unblock(btn.clickedHandler) + if __name__ == "__main__": win = gtk.Window() wc = DrumPanel(None) diff --git a/Util/NoteDB.py b/Util/NoteDB.py index 014ec5e..e7f68c9 100644 --- a/Util/NoteDB.py +++ b/Util/NoteDB.py @@ -25,10 +25,17 @@ class Note: self.cs = cs class Page: - def __init__( self, beats, color = 0 ): # , tempo, insruments, color = 0 ): + def __init__( self, beats, color = 0, instruments = False ): # , tempo, insruments, color = 0 ): self.beats = beats - self.color = color self.ticks = beats*Config.TICKS_PER_BEAT + + self.color = color + + if not instruments: + self.instruments = [ Config.INSTRUMENTS["kalimba"].instrumentId for i in range(Config.NUMBER_OF_TRACKS-1) ] + [ Config.INSTRUMENTS["drum1kit"].instrumentId ] + else: + self.instruments = instruments[:] + self.nextNoteId = 0 # first note will be 1 def genId( self ): @@ -293,9 +300,20 @@ class NoteDB: #======================================================= # Track Functions - #def deleteTracks( self, pages, which ): - - #def duplicateTracks( self, pages, which, insert ): + def setInstrument( self, pages, track, instrumentId ): + print "setinstrument", pages, track, instrumentId + stream = [] + for page in pages: + self.pages[page].instruments[track] = instrumentId + notes = self.getNotesByTrack( page, track ) + sub = [] + for note in notes: + sub.append( note.id ) + sub.append( instrumentId ) + if len(sub): + stream += [ page, track, PARAMETER.INSTRUMENT, len(sub)//2 ] + sub + if len(stream): + self.updateNotes( stream + [-1] ) #======================================================= |