Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Util/ControlStream.py
diff options
context:
space:
mode:
authorJames <james@mackie.(none)>2007-03-20 20:13:44 (GMT)
committer James <james@mackie.(none)>2007-03-20 20:13:44 (GMT)
commit7c42950444a423c95be9f578715f9a9ebf133266 (patch)
tree0a179fd3565101834e5b9a392f8d8b8b38fc75ff /Util/ControlStream.py
parent631d817f5491db467f6184ec49fa34e235e82d8d (diff)
init
Diffstat (limited to 'Util/ControlStream.py')
-rw-r--r--Util/ControlStream.py135
1 files changed, 135 insertions, 0 deletions
diff --git a/Util/ControlStream.py b/Util/ControlStream.py
new file mode 100644
index 0000000..bb4acf4
--- /dev/null
+++ b/Util/ControlStream.py
@@ -0,0 +1,135 @@
+import sys
+import types
+import time
+
+import Config
+
+from Util import NoteDB
+from Util.CSoundNote import CSoundNote
+from Util.CSoundClient import new_csound_client
+
+class TamTamOStream:
+ def __init__(self, file):
+ self.file = file
+
+ 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) ]
+ self.file.write( " ".join([str(i) for i in l]))
+ self.file.write('\n')
+
+ def tune_set(self, tune):
+ self.file.write('tune_set ')
+ self.file.write(" ".join([str(t) for t in tune]))
+ self.file.write('\n')
+
+class TamTamTable:
+
+ def __init__(self, noteDB):
+ self.noteDB = noteDB
+ self.csnd = new_csound_client()
+ self.pid = {}
+
+ 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_inst':self.track_inst,
+ 'track_vol':self.track_vol,
+ 'tune_set':self.tune_set,
+ 'sleep':self.sleep,
+ 'quit':self.quit}
+
+ def parseFile(self, ifile):
+ table = self.parseTable()
+ while True:
+ l = ifile.readline()
+ if l == '\n': break
+ if l == '': break
+ 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])
+ cs = CSoundNote(
+ int(argv[3]),
+ int(argv[4]),
+ float(argv[5]),
+ float(argv[6]),
+ float(argv[7]),
+ int(argv[8]),
+ int(argv[9]),
+ float(argv[10]),
+ float(argv[11]),
+ float(argv[12]),
+ float(argv[13]),
+ float(argv[14]),
+ bool(argv[15]),
+ argv[16])
+
+ self.noteDB.addNote(nid, 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])
+ after = self.noteDB.tune[-1]
+ self.pid[pid] = self.noteDB.addPage(pid, NoteDB.Page(beats), after)
+
+ def page_set(self, argv):
+ print 'page_set', argv
+ def track_inst(self, argv):
+ print 'track_inst not implemented yet'
+ def track_vol(self, argv):
+ print 'track_vol not implemented yet'
+ def tune_set(self, argv):
+ if Config.DEBUG > 3: print 'tune_set', argv
+
+ if Config.DEBUG > 3: print 'ERROR: tune_set is not handled properly by mainwindow yet... skipping\n'
+ return
+
+ self.noteDB.tune = [int(i) for i in argv]
+ pids = self.noteDB.pages.keys()
+ pids_to_del = [pid for pid in self.noteDB.pages.keys()
+ if pid not in self.noteDB.tune]
+ self.noteDB.deletePages( pids_to_del )
+
+ 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)
+