Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TamTamSynthLab.activity/common/Util/ControlStream.py
diff options
context:
space:
mode:
Diffstat (limited to 'TamTamSynthLab.activity/common/Util/ControlStream.py')
-rw-r--r--TamTamSynthLab.activity/common/Util/ControlStream.py254
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)