diff options
Diffstat (limited to 'TamTamSynthLab.activity/common/Util/ControlStream.py')
-rw-r--r-- | TamTamSynthLab.activity/common/Util/ControlStream.py | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/TamTamSynthLab.activity/common/Util/ControlStream.py b/TamTamSynthLab.activity/common/Util/ControlStream.py deleted file mode 100644 index eea3150..0000000 --- a/TamTamSynthLab.activity/common/Util/ControlStream.py +++ /dev/null @@ -1,254 +0,0 @@ -import sys -import types -import time - -import common.Config as Config - -import os - -from common.Util import NoteDB -from common.Util.CSoundNote import CSoundNote -from common.Util.CSoundClient import new_csound_client - -import common.Util.InstrumentDB as InstrumentDB - -try: - from Jam import Block -except: - pass # we're not in Jam mode - -class TamTamOStream: - def __init__(self, file): - self.file = file - self.instrumentDB = InstrumentDB.getRef() - - def note_add(self, note): - l = ['note_add', note.id, note.page, note.track, - note.cs.onset, - note.cs.pitch, - note.cs.amplitude, - note.cs.pan, - note.cs.duration, - note.cs.trackId, - note.cs.instrumentId, - note.cs.attack, - note.cs.decay, - note.cs.reverbSend, - note.cs.filterType, - note.cs.filterCutoff, - int(note.cs.tied), - note.cs.mode] - - self.file.write( " ".join([str(i) for i in l])) - self.file.write('\n') - - def page_add(self, pid, page): - l = [ 'page_add', str(pid), str(page.beats), str(page.color), str( [ self.instrumentDB.getInstrument(i).name for i in page.instruments ] ) ] - self.file.write( " ".join([str(i) for i in l])) - self.file.write('\n') - - def track_vol(self, vols): - self.file.write('track_vol ') - self.file.write(" ".join([str(t) for t in vols])) - self.file.write('\n') - - def master_vol(self, volume): - self.file.write('master_vol ') - self.file.write(str(volume)) - self.file.write('\n') - - def tempo(self, tempo): - self.file.write('tempo ') - self.file.write(str(tempo)) - self.file.write('\n') - - def block_add( self, typeStr, active, centerX, centerY, child, data ): - if typeStr == "Drum" or typeStr == "Instrument": - realId = data["id"] # don't overwrite the block's data - data["id"] = self.instrumentDB.getInstrument( data["id"] ).name - l = [ "block_add", typeStr, str(active), str(centerX), str(centerY), str(child), str(data) ] - self.file.write( " ".join([str(i) for i in l])) - self.file.write('\n') - if typeStr == "Drum" or typeStr == "Instrument": - data["id"] = realId - - def desktop_store( self, filename, id ): - self.file.write( "desktop_store %d\n" % id ) - try: - file = open( filename, "r" ) - for line in file: - self.file.write( line ) - file.close() - except: - if Config.DEBUG > 3: print "ERROR:: desktop_store could not open file: " + filename - self.file.write( "desktop_store END\n" ) - - def desktop_set( self, id ): - self.file.write( "desktop_set %d\n" % id ) - - def sync_beats( self, beats ): - self.file.write( "sync_beats %d\n" % beats ) - -class TamTamTable: - - def __init__(self, noteDB = None, jam = None ): - self.noteDB = noteDB - self.jam = jam - self.csnd = new_csound_client() - self.pid = {} #stream_pid : local_pid - self.instrumentDB = InstrumentDB.getRef() - - def parseTable(self): - return { - 'note_set':self.note_set, - 'note_add':self.note_add, - 'page_add':self.page_add, - 'page_set':self.page_set, - 'track_vol':self.track_vol, - 'master_vol':self.master_vol, - 'tempo':self.tempo, - 'block_add':self.block_add, - 'desktop_store':self.desktop_store, - 'desktop_set':self.desktop_set, - 'sync_beats':self.sync_beats, - 'sleep':self.sleep, - 'quit':self.quit} - - def parseFile(self, ifile): - table = self.parseTable() - self.file = ifile - for l in self.file: - #print "---", l - cmdlist = l.split() - if len(cmdlist) > 0: - if cmdlist[0] not in table: - print 'ERROR: skipping command %s not found in parse table' % cmdlist[0] - else: - table[cmdlist[0]](cmdlist[1:]) - - def note_add(self, argv): - if Config.DEBUG > 3: print 'note_add', argv - - nid = int(argv[0]) - page = self.pid[int(argv[1])] - track = int(argv[2]) - instId = self.noteDB.getPage( page ).instruments[ track ] - cs = CSoundNote( - int(argv[3]), - int(argv[4]), - float(argv[5]), - float(argv[6]), - float(argv[7]), - int(argv[8]), - instId, - float(argv[10]), - float(argv[11]), - float(argv[12]), - float(argv[13]), - float(argv[14]), - bool(argv[15]), - argv[16]) - - self.noteDB.addNote( -1, page, track, cs ) - - 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 - instrumentNames = eval( insts ) - instruments = [ self.instrumentDB.getInstrumentByName( i ).instrumentId for i in instrumentNames ] - for id in instruments: - i = self.instrumentDB.getInstrument( id ) - if i.kit == None: - self.csnd.load_instrument(i.name) - else: - self.csnd.load_drumkit(i.name) - if len( self.noteDB.tune ): - after = self.noteDB.tune[-1] - else: - after = False - self.pid[pid] = self.noteDB.addPage(-1, NoteDB.Page(beats,color,instruments), after) - - def page_set(self, argv): - print 'page_set', argv - - def track_vol(self, argv): - self.tracks_volume = [] - for i in range(len(argv)): - self.tracks_volume.append(float(argv[i])) - - def master_vol(self, argv): - self.masterVolume = eval( argv[0] ) - - def tempo(self, argv): - self.tempo = eval( argv[0] ) - - def block_add( self, argv ): - blockClass = Block.StrToClass[argv[0]] - active = eval( argv[1] ) - x = int( argv[2] ) - y = int( argv[3] ) - child = eval( argv[4] ) - data = "" - for str in argv[5:]: - data += str - data = eval( data ) - - if blockClass == Block.Drum: - data["page"] = self.pid[ data["page"] ] - data["id"] = self.instrumentDB.getInstrumentByName( data["id"] ).instrumentId - elif blockClass == Block.Instrument: - data["id"] = self.instrumentDB.getInstrumentByName( data["id"] ).instrumentId - elif blockClass == Block.Loop: - data["id"] = self.pid[ data["id"] ] - self.jam.updateLoopImage( data["id"] ) - - if child: - block = blockClass( self.jam.getDesktop(), data ) - self.lastBlock.addChild( block ) - else: - block = self.jam.getDesktop().addBlock( blockClass, data, ( x, y ) ) - - block.setPlaced( True ) - - if blockClass == Block.Instrument and active: - self.jam.getDesktop().activateInstrument( block ) - - self.lastBlock = block - - def desktop_store( self, argv ): - filename = self.jam.getDesktopScratchFile( int( argv[0] ) ) - #try: - if os.path.isfile( filename ): - os.remove( filename ) - - file = open( filename, "w" ) - for line in self.file: - if line == "desktop_store END\n": - break - file.write( line ) - file.close - #except: - # if Config.DEBUG > 3: print "ERROR:: desktop_store could not open file: " + filename - - def desktop_set( self, argv ): - self.jam.setDesktop( int( argv[0] ), True ) - - def sync_beats( self, argv ): - self.jam.setSyncBeats( int( argv[0] ) ) - - def sleep(self, argv): - t = float(argv[0]) - print 'sleeping for %i seconds' % t - time.sleep(t) - def quit(self, argv): - print 'quitting...' - sys.exit(0) |