Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Util
diff options
context:
space:
mode:
authoramartin <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)
commitfd69395099d5302cb4db19e910e292410b4ae95c (patch)
treeab75467ccff25629eab4263b21df5fc634fead19 /Util
parent601e1f48e93d7768736cbb2d54015ed2776e5845 (diff)
load/save page props
Diffstat (limited to 'Util')
-rw-r--r--Util/ControlStream.py23
-rw-r--r--Util/InstrumentPanel.py9
-rw-r--r--Util/NoteDB.py28
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] )
#=======================================================