# -*- coding: utf-8 -*- import os import common.Util.InstrumentDB as InstrumentDB from sugar.activity.activity import get_bundle_path from sugar import env QUICKLOAD = os.path.isfile("QUICKLOAD") # skip loading inessential comenents to speed things up SugarMode = True if os.path.isfile("DEBUG"): f = open("DEBUG") l = f.read(10) f.close() if len(l): DEBUG = int( l ) else: DEBUG = 99 else: DEBUG = 0 print "Debug Level %d" % (DEBUG) TAM_TAM_ROOT = get_bundle_path() print 'INFO: loaded TAMTAM_ROOT=%s' % TAM_TAM_ROOT #PATHS if os.path.isdir("/usr/share/tamtam/Sounds"): SOUNDS_DIR = "/usr/share/tamtam/Sounds" LIB_DIR = "/usr/share/tamtam" else: SOUNDS_DIR = "/usr/share/activities/TamTamEdit.activity/common/Resources/Sounds" LIB_DIR = "/usr/share/activities/TamTamEdit.activity/common/Resources" FILES_DIR = TAM_TAM_ROOT + "/common/Resources" TUNE_DIR='/' SYNTH_DIR='/' if SugarMode == True: PREF_DIR = env.get_profile_path() + '/tamtam' TUNE_DIR=env.get_profile_path() + '/tamtam/tunes' SYNTH_DIR=env.get_profile_path() + '/tamtam/synthlab' SNDS_DIR=env.get_profile_path() + '/tamtam/snds' SCRATCH_DIR = PREF_DIR + "/.scratch/" else: PREF_DIR = os.getenv('HOME') + '/.tamtam' TUNE_DIR= os.getenv('HOME') + '/.tamtam/tunes' SYNTH_DIR= os.getenv('HOME') + '/.tamtam/synthlab' SNDS_DIR= os.getenv('HOME') + '/.tamtam/snds' SCRATCH_DIR = PREF_DIR + "/.scratch/" #PLUGIN PLUGIN_DEBUG = PREF_DIR + "/clooper.log" PLUGIN_VERBOSE = 0 PLUGIN_UNIVORC = TAM_TAM_ROOT + "/common/Resources/tamtamorc.csd" PLUGIN_KSMPS = 64 PLUGIN_RATE = 16000 #PLUGIN_KSMPS = 64 #PLUGIN_RATE = 22050 ## PLUGIN ALSA PARAMETERS: ## for macbook pro #PLUGIN_PERIOD = 1024 #PLUGIN_NPERIODS = 4 ## for XO with root #PLUGIN_PERIOD = 256 #PLUGIN_NPERIODS = 2 ## for XO as normal user PLUGIN_PERIOD = 256 #512 PLUGIN_NPERIODS = 2 ############## ## SOUNDS ############## KIT_ELEMENT = 24 * [0] for i in range(0,13): KIT_ELEMENT += 2 * [i] KIT_ELEMENT = tuple(KIT_ELEMENT) class Instrument: def __init__( self, name, instrumentId, csoundInstrumentId, instrumentRegister, soundClass, category, loopStart, loopEnd, crossDur, ampScale = 1, kit = None ): self.name = name self.instrumentId = instrumentId self.csoundInstrumentId = csoundInstrumentId self.instrumentRegister = instrumentRegister self.soundClass = soundClass self.category = category self.loopStart = loopStart self.loopEnd = loopEnd self.crossDur = crossDur self.ampScale = ampScale self.kit = kit #print (self.name, self.instrumentId, self.csoundInstrumentId, self.instrumentRegister, self.soundClass, self.category, self.loopStart, self.loopEnd, self.crossDur) LOW, MID, HIGH, PUNCH = range( 4 ) # Sounds categories: musicInst, animals, drum, people, electronic, concret, mic #INSTRUMENTS ( csound table, csound instrument, register, instrumentClass, category ) INSTRUMENT_TABLE_OFFSET = 5000 INST_FREE = 5000 INST_TIED = 5001 INST_SIMP = 5011 INST_PERC = 5021 CATEGORIES = ['all','animals','concret','keyboard','people','percussions','strings','winds', 'mysounds'] instrumentDB = InstrumentDB.getRef() _nextInstrumentId = [0] INSTRUMENTS = {} def _addInstrument( name, csoundInstrumentId, instrumentRegister, soundClass, category, loopStart, loopEnd, crossDur, ampScale = 1, kit = None ): if not QUICKLOAD or name[0:4] == "drum" or name in ["flute", "kalimba"]: # quick load INSTRUMENTS[name] = Instrument( name, _nextInstrumentId[0], csoundInstrumentId, instrumentRegister, soundClass, category, loopStart, loopEnd, crossDur, ampScale, kit ) instrumentDB.addInstrumentFromArgs( name, name, instrumentRegister, loopStart, loopEnd, crossDur, name, LIB_DIR+"/Images/"+name+".png", [ category ] ) _nextInstrumentId[0] += 1 _addInstrument( "mic1", INST_TIED, MID, 'melo', 'mysounds', .01, 1.99, .01, 1 ) _addInstrument( "mic2", INST_TIED, MID, 'melo', 'mysounds', .01, 1.99, .01, 1 ) _addInstrument( "mic3", INST_TIED, MID, 'melo', 'mysounds', .01, 1.99, .01, 1 ) _addInstrument( "mic4", INST_TIED, MID, 'melo', 'mysounds', .01, 1.99, .01, 1 ) _addInstrument( "lab1", INST_SIMP, MID, 'melo', 'mysounds', 0, 0, 0, 1 ) _addInstrument( "lab2", INST_SIMP, MID, 'melo', 'mysounds', 0, 0, 0, 1 ) _addInstrument( "lab3", INST_SIMP, MID, 'melo', 'mysounds', 0, 0, 0, 1 ) _addInstrument( "lab4", INST_SIMP, MID, 'melo', 'mysounds', 0, 0, 0, 1 ) _addInstrument( "lab5", INST_SIMP, MID, 'melo', 'mysounds', 0, 0, 0, 1 ) _addInstrument( "lab6", INST_SIMP, MID, 'melo', 'mysounds', 0, 0, 0, 1 ) _addInstrument( "ounk", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "gam", INST_TIED, HIGH, 'melo', 'percussions', .69388, .7536, .02922, 1 ) _addInstrument( "guit", INST_TIED, MID, 'melo', 'strings', .08592, .75126, .33571, 1 ) _addInstrument( "koto", INST_TIED, HIGH, 'melo', 'strings', .56523, .70075, .05954, 1 ) _addInstrument( "clarinette", INST_TIED, MID, 'melo', 'winds', .57905, .73319, .04934, 1 ) _addInstrument( "flute", INST_TIED, MID, 'melo', 'winds', .47169, .53693, .02481, 1 ) _addInstrument( "drum1hatpedal", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1hatshoulder", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1hardride", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1ridebell", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1snare", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1snaresidestick", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1crash", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1splash", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1tom", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1floortom", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1) _addInstrument( "drum1chine", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum1kick", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "piano", INST_TIED, MID, 'melo', 'keyboard', 0.8883, 1.420524, .13575, 1 ) _addInstrument( "dog", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "duck", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "drum2darbukadoom", INST_SIMP, LOW, 'drum', 'percussions', 0, 0 ,0, 1 ) _addInstrument( "drum2darbukapied", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2darbukapiedsoft", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2hatflanger", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2darbukatak", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2darbukafinger", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2darbukaroll", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2darbukaslap", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2hatpied", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2tambourinepied", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2hatpied2", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum2tambourinepiedsoft", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3cowbell", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3cowbelltip", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1) _addInstrument( "drum3cup", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3djembelow", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3djembemid", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3djembesidestick", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3djembeslap", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3djembestickmid", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3metalstand", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3pedalperc", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3rainstick", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3tambourinehigh", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum3tambourinelow", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "harmonica", INST_TIED, MID, 'melo', 'winds', .1531, .19188, .01792, 1 ) _addInstrument( "alarm", INST_TIED, MID, 'melo', 'concret', 1.37555859375, 2.0286015625, .0675, 1 ) _addInstrument( "bird", INST_TIED, MID, 'melo', 'animals', .1, 1, .05, 1 ) _addInstrument( "cat", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "duck2", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "bottle", INST_TIED, MID, 'melo', 'concret', .20532, .41064, .05292, 1 ) _addInstrument( "clang", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "ow", INST_SIMP, MID, 'melo', 'people', 0, 0, 0, 1 ) _addInstrument( "sheep", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "water", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "zap", INST_TIED, MID, 'melo', 'keyboard', .299, .7323, .09895, 1 ) _addInstrument( "trumpet", INST_TIED, MID, 'melo', 'winds', .39934, .45537, .02729, 1) _addInstrument( "bubbles", INST_TIED, MID, "melo", 'concret', 0.02, 1.177, 0.02, 1) _addInstrument( "marimba", INST_TIED, MID, "melo", 'percussions', .26545, .33098, .03087, 1) _addInstrument( "triangle", INST_TIED, MID, "melo", 'percussions', 1.21002, 1.31805, .01268, 1) _addInstrument( "laugh", INST_SIMP, MID, 'melo', 'people', 0, 0, 0, 1 ) _addInstrument( "voix", INST_TIED, MID, 'melo', 'people', .89608, .96092, .02343, 1 ) _addInstrument( "cling", INST_TIED, MID, 'melo', 'keyboard', .09096, .7878, .18026, 1 ) _addInstrument( "byke", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "door", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "basse", INST_TIED, MID, 'melo', 'strings', 0.50470875, 0.833315, 0.09375, 1 ) _addInstrument( "acguit", INST_TIED, MID, 'melo', 'strings', 1.4037, 1.84235625, 0.2, 1 ) _addInstrument( "diceinst", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "didjeridu", INST_TIED, LOW, 'melo', 'winds', .55669, 1.73704, .09178, 4. ) _addInstrument( "harmonium", INST_TIED, MID, 'melo', 'keyboard', .04674, .41073, .18384, 1 ) _addInstrument( "horse", INST_SIMP, MID, 'melo', 'animals', 0, 0, 0, 1 ) _addInstrument( "kalimba", INST_TIED, MID, 'melo', 'percussions', .20751, .30161, .04658, 1 ) _addInstrument( "mando", INST_TIED, MID, 'melo', 'strings', 0.316548, 0.532008, 0.02875, 1 ) _addInstrument( "ocarina", INST_TIED, MID, 'melo', 'winds', .06612, .19033, .01776, 1 ) _addInstrument( "rhodes", INST_TIED, MID, 'melo', 'keyboard', 0.58100625, 0.821625, 0.067, 1 ) _addInstrument( "saxo", INST_TIED, MID, 'melo', 'winds', .53722, .6583, .05264, 1 ) _addInstrument( "shenai", INST_TIED, MID, 'melo', 'winds', .29003, .33072, .00634, 1 ) _addInstrument( "sitar", INST_TIED, MID, 'melo', 'strings', .63187, .67882, .01654, 1 ) _addInstrument( "tuba", INST_TIED, LOW, 'melo', 'winds', .51063, .58384, .035, 1 ) _addInstrument( "violin", INST_TIED, MID, 'melo', 'strings', .105, .30656, .028, 1 ) _addInstrument( "guidice1", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice2", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice3", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice4", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice5", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice6", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice7", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice8", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice9", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guidice10", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "drum4afrofeet", INST_SIMP, LOW, 'drum', 'percussions', 0, 0 ,0, 1 ) _addInstrument( "drum4fingersn", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4mutecuic", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4stompbass", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tambouri", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr707clap", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr707open", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr808closed", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr808sn", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr909bass", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr909kick", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum4tr909sn", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5timablesslap", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5congagraveouvert", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5timablesaiguslap", INST_SIMP, LOW, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5congagraveferme", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5guiroretour", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5vibraslap", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5congaaiguouvert", INST_SIMP, MID, 'drum', 'percussions', 0, 0 ,0, 1 ) _addInstrument( "drum5quicamedium", INST_SIMP, PUNCH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5quicaaigu", INST_SIMP, MID, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5agogograve", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5bongoaiguouvert", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5agogoaigu", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "drum5bongograveouvert", INST_SIMP, HIGH, 'drum', 'percussions', 0, 0, 0, 1 ) _addInstrument( "camera", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "car", INST_TIED, MID, 'melo', 'concret', .67, 1.05761, .01, 1 ) _addInstrument( "cello", INST_TIED, MID, 'melo', 'strings', 0.4761, 0.92244375, 0.19125, .5 ) _addInstrument( "chimes", INST_TIED, MID, 'melo', 'percussions', .09, 2.97633, .01, 1 ) _addInstrument( "crash", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "guit2", INST_TIED, MID, 'melo', 'strings', .33, 1.1583, .02, 1 ) _addInstrument( "plane", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) _addInstrument( "slap", INST_SIMP, MID, 'melo', 'concret', 0, 0, 0, 1 ) try: ifile = open(PREF_DIR + '/sounds_settings', 'r') for line in ifile.readlines(): list = line.split() _addInstrument(list[0], int(list[1]), int(list[2]), list[3], list[4], float(list[5]), float(list[6]), float(list[7])) except: pass DRUM1KIT = { 24 : INSTRUMENTS["drum1kick"], 26 : INSTRUMENTS["drum1floortom"], 28 : INSTRUMENTS["drum1tom"], 30 : INSTRUMENTS["drum1chine"], 32 : INSTRUMENTS["drum1splash"], 34 : INSTRUMENTS["drum1crash"], 36 : INSTRUMENTS["drum1snaresidestick"], 38 : INSTRUMENTS["drum1snaresidestick"], 40 : INSTRUMENTS["drum1snare"], 42 : INSTRUMENTS["drum1ridebell"], 44 : INSTRUMENTS["drum1hardride"], 46 : INSTRUMENTS["drum1hatshoulder"], 48 : INSTRUMENTS["drum1hatpedal"] } DRUM2KIT = { 24 : INSTRUMENTS["drum2darbukadoom"], 26 : INSTRUMENTS["drum2darbukapied"], 28 : INSTRUMENTS["drum2darbukapiedsoft"], 30 : INSTRUMENTS["drum2hatflanger"], 32 : INSTRUMENTS["drum2darbukatak"], 34 : INSTRUMENTS["drum2darbukatak"], 36 : INSTRUMENTS["drum2darbukafinger"], 38 : INSTRUMENTS["drum2darbukaroll"], 40 : INSTRUMENTS["drum2darbukaslap"], 42 : INSTRUMENTS["drum2hatpied"], 44 : INSTRUMENTS["drum2tambourinepied"], 46 : INSTRUMENTS["drum2hatpied2"], 48 : INSTRUMENTS["drum2tambourinepiedsoft"] } DRUM3KIT = { 24 : INSTRUMENTS["drum3djembelow"], 26 : INSTRUMENTS["drum3pedalperc"], 28 : INSTRUMENTS["drum3djembeslap"], 30 : INSTRUMENTS["drum3tambourinehigh"], 32 : INSTRUMENTS["drum3tambourinelow"], 34 : INSTRUMENTS["drum3rainstick"], 36 : INSTRUMENTS["drum3djembemid"], 38 : INSTRUMENTS["drum3djembesidestick"], 40 : INSTRUMENTS["drum3djembestickmid"], 42 : INSTRUMENTS["drum3cowbell"], 44 : INSTRUMENTS["drum3cowbelltip"], 46 : INSTRUMENTS["drum3cup"], 48 : INSTRUMENTS["drum3metalstand"] } DRUM4KIT = { 24 : INSTRUMENTS["drum4afrofeet"], 26 : INSTRUMENTS["drum4tr909kick"], 28 : INSTRUMENTS["drum4tr909bass"], 30 : INSTRUMENTS["drum4stompbass"], 32 : INSTRUMENTS["drum4tr707open"], 34 : INSTRUMENTS["drum4mutecuic"], 36 : INSTRUMENTS["drum4tr808sn"], 38 : INSTRUMENTS["drum4tr707clap"], 40 : INSTRUMENTS["drum4tr909sn"], 42 : INSTRUMENTS["drum4tambouri"], 44 : INSTRUMENTS["drum4fingersn"], 46 : INSTRUMENTS["drum4fingersn"], 48 : INSTRUMENTS["drum4tr808closed"] } DRUM5KIT = { 24 : INSTRUMENTS["drum5timablesslap"], 26 : INSTRUMENTS["drum5timablesaiguslap"], 28 : INSTRUMENTS["drum5congagraveouvert"], 30 : INSTRUMENTS["drum5quicamedium"], 32 : INSTRUMENTS["drum5guiroretour"], 34 : INSTRUMENTS["drum5vibraslap"], 36 : INSTRUMENTS["drum5congagraveferme"], 38 : INSTRUMENTS["drum5quicaaigu"], 40 : INSTRUMENTS["drum5congaaiguouvert"], 42 : INSTRUMENTS["drum5agogoaigu"], 44 : INSTRUMENTS["drum5bongograveouvert"], 46 : INSTRUMENTS["drum5agogograve"], 48 : INSTRUMENTS["drum5bongoaiguouvert"] } _addInstrument( "drum1kit", 0, 0, 0, "percussions", 0, 0, 0, 1, DRUM1KIT ) _addInstrument( "drum2kit", 0, 0, 0, "percussions", 0, 0, 0, 1, DRUM2KIT ) _addInstrument( "drum3kit", 0, 0, 0, "percussions", 0, 0, 0, 1, DRUM3KIT ) _addInstrument( "drum4kit", 0, 0, 0, "percussions", 0, 0, 0, 1, DRUM4KIT ) _addInstrument( "drum5kit", 0, 0, 0, "percussions", 0, 0, 0, 1, DRUM5KIT ) INSTRUMENTSID = {} for i in INSTRUMENTS: INSTRUMENTSID[INSTRUMENTS[i].instrumentId] = INSTRUMENTS[i] #DRUMKITS = ['drum1kit', 'drum2kit', 'drum3kit', 'drum4kit'] #DRUMSINSTRUMENTSDICT = [DRUM1KIT, DRUM2KIT, DRUM3KIT, DRUM4KIT] RECORDABLE_INSTRUMENTS = set( [ "mic1", "mic2", "mic3", "mic4" ] ) RECORDABLE_INSTRUMENT_CSOUND_IDS = { "mic1" : 7, "mic2" : 8, "mic3" : 9, "mic4" : 10 } #CSOUND COMMANDS CSOUND_LOAD_INSTRUMENT = 'f%d 0 0 -1 "%s" 0 0 0' CSOUND_MIC_RECORD = 'i5201 0 5 %d' CSOUND_UNLOAD_TABLES = 'i%d 0 0.1 %d' % (INST_FREE, len(INSTRUMENTS)) CSOUND_NOTE_OFF = 'i %s.%s .2 0.01 1. 0. 0. 0.5 %d 0 0 0 0' %('%d','%d',INSTRUMENT_TABLE_OFFSET) CSOUND_LOAD_LS_INSTRUMENT = 'f4999 0 0 -1 \"%s\" 0 0 0' CSOUND_PLAY_LS_NOTE = 'i %i 0 -1' CSOUND_STOP_LS_NOTE = 'i 5022 0 0.5' #CSOUND COMMANDS - DEPRECATED LOAD_INSTRUMENT_COMMAND = \ "perf.InputMessage('f%d 0 0 -1 \"%s\" 0 0 0')\n" PLAY_NOTE_COMMAND = \ "perf.InputMessage('i %d.%d %f %f %f %f %f %f %d %f %f %d %f %f %f %f')\n" #TODO: add the extra three params to COMMAND_MINUS_DELAY, and instrument 5777 in univorc.csd PLAY_NOTE_COMMAND_MINUS_DELAY = \ "perf.InputMessage('i 5777 0.0 0.001 %d.%d %s %f %f %f %f %f %d %f %f %d %f')\n" PLAY_NOTE_OFF_COMMAND = \ "perf.InputMessage('i %s.%s .2 0.01 1. 0. 0. 0.5 %d 0 0 0 0')\n" \ % ('%d', '%d', INSTRUMENT_TABLE_OFFSET ) MIC_RECORDING_COMMAND = \ "perf.InputMessage('i5201 0 5 %d')\n" UNLOAD_TABLES_COMMAND = \ "perf.InputMessage('i%d 0 0.1 %d')\n" % (INST_FREE, len(INSTRUMENTS)) ################# ## GUI CONSTANTS ################# LANGUAGE = 'En' if os.path.isdir("/usr/share/tamtam/Images"): IMAGE_ROOT = '/usr/share/tamtam/Images/' else: IMAGE_ROOT = "/usr/share/activities/TamTamEdit.activity/common/Resources/Images/" MAIN_WINDOW_PADDING = 5 BG_COLOR = '#404040' FG_COLOR = '#818286' NOTE_HEIGHT = 9 # pixels NOTE_IMAGE_PADDING = 6 NOTE_IMAGE_PADDING_MUL2 = NOTE_IMAGE_PADDING*2 NOTE_IMAGE_TAIL = 1059 NOTE_IMAGE_ENDLENGTH = 12 HIT_HEIGHT = 13 # pixels HIT_IMAGE_PADDING = 6 HIT_IMAGE_PADDING_MUL2 = HIT_IMAGE_PADDING*2 TRACK_SPACING = 4 TRACK_SPACING_DIV2 = TRACK_SPACING//2 TRACK_COLORS = [ ( "#00290B", "#00E847" ), \ ( "#3F0200", "#E72500" ), \ ( "#002642", "#0090EA" ), \ ( "#313D00", "#F9EF00" ), \ ( "#17083B", "#4A00ED" ) ] #TRACK_COLORS = [ ( "#00591B", "#00E847" ), \ # ( "#6F1200", "#E72500" ), \ # ( "#004682", "#0090EA" ), \ # ( "#716D00", "#F9EF00" ), \ # ( "#37187B", "#4A00ED" ) ] BEAT_COLOR = "#999999" BEAT_LINE_SIZE = 2 PLAYHEAD_COLOR = "#666666" PLAYHEAD_SIZE = 2 PLAYHEAD_SIZE_DIV2 = PLAYHEAD_SIZE/2.0 MARQUEE_COLOR = "#FFFFFF" MARQUEE_SIZE = 2 PAGE_BORDER_SIZE = 2 PAGE_SELECTED_BORDER_SIZE = 5 PAGE_WIDTH = 100 PAGE_HEIGHT = 25 PAGE_THUMBNAIL_WIDTH = 92 PAGE_THUMBNAIL_WIDTH_DIV2 = PAGE_THUMBNAIL_WIDTH/2 PAGE_THUMBNAIL_HEIGHT = 65 THUMBNAIL_TRACK_RECT = [ ( 2, 4, 83, 10 ), \ ( 2, 14, 83, 10 ), \ ( 2, 24, 83, 10 ), \ ( 2, 34, 83, 10 ), \ ( 2, 44, 83, 13 ) ] THUMBNAIL_DRAG_COLOR = "#000000" THUMBNAIL_TRACK_COLOR = "#FF0000" THUMBNAIL_SELECTED_COLOR = "#2266FF" THUMBNAIL_DISPLAYED_COLOR = "#CC1133" TOOLBAR_BCK_COLOR = '#404040' WHITE_COLOR = '#FFFFFF' ### miniTamTam/SYNTHLAB SPECIFIC ### INST_BCK_COLOR = '#999999' PANEL_BCK_COLOR = '#CCCCCC' PANEL_COLOR = '#CCCCCC' SL_LINE_COLOR = "#666666" SL_HIGHLIGHT_COLOR = "#FFFFFF" SL_OVER_WIRE_COLOR = "#FFFFFF" SL_OVER_GATE_COLOR = "#00FF18" SL_OVER_GATE_REJECT_COLOR = "#B30000" PANEL_RADIUS = 10 PANEL_SPACING = 2 ###Instrument Panel### CATEGORY_BCK_COLOR = '#222222' INSTRUMENT_GRID_COLOR = '#CCCCCC' ###Welcome Screen Specific### WS_PANEL_COLOR = '#404040' WS_BCK_COLOR = '#CCCCCC' # hardware keycodes for mod keys MOD_LSHIFT = 50 MOD_RSHIFT = 62 MOD_LCTRL = 37 MOD_RCTRL = 109 MOD_LALT = 64 MOD_RALT = 113 ######## ## Things that don't belong! ####### class _ModKeys: def __init__( self ): self.shiftDown = False self.ctrlDown = False self.altDown = False def keyPress( self, code ): if code == MOD_LSHIFT or code == MOD_RSHIFT: self.shiftDown = True elif code == MOD_LCTRL or code == MOD_RCTRL: self.ctrlDown = True elif code == MOD_LALT or code == MOD_RALT: self.altDown = True def keyRelease( self, code ): if code == MOD_LSHIFT or code == MOD_RSHIFT: self.shiftDown = False elif code == MOD_LCTRL or code == MOD_RCTRL: self.ctrlDown = False elif code == MOD_LALT or code == MOD_RALT: self.altDown = False ModKeys = _ModKeys() ############ ## EDIT DEFAULTS ############ #DEFAULTS PLAYER_TEMPO = 100 PLAYER_TEMPO_LOWER = 30 PLAYER_TEMPO_UPPER = 160 DEFAULT_VOLUME = 50 #NUMERICAL CONSTANTS NUMBER_OF_POSSIBLE_PITCHES = 25 MINIMUM_PITCH = 24 MAXIMUM_PITCH = MINIMUM_PITCH + NUMBER_OF_POSSIBLE_PITCHES - 1 NUMBER_OF_POSSIBLE_PITCHES_DRUM = 13 PITCH_STEP_DRUM = 2 MINIMUM_PITCH_DRUM = 24 MAXIMUM_PITCH_DRUM = MINIMUM_PITCH_DRUM + PITCH_STEP_DRUM*(NUMBER_OF_POSSIBLE_PITCHES_DRUM - 1) MINIMUM_NOTE_DURATION = 1 # ticks MS_PER_MINUTE = 60000.0 TICKS_PER_BEAT = 12 TICKS_PER_BEAT_DIV2 = TICKS_PER_BEAT/2 MAXIMUM_BEATS = 12 # maximum beats per page NUMBER_OF_TRACKS = 5 NUMBER_OF_PAGES = 2 MINIMUM_AMPLITUDE = 0 MAXIMUM_AMPLITUDE = 1 DEFAULT_GRID = 3 DEFAULT_GRID_DIV2 = DEFAULT_GRID / 2.0 #################### ## ToolTips #################### LANGUAGE = 'en' exec 'from Resources.tooltips_%s import Tooltips' % LANGUAGE #################### ## KeyMapping #################### LOOP_KEYS = [17, 18, 19, 20, 21, 32, 33, 34, 35, 45, 46, 47, 48, 51, 60, 61] # Key = Hardware Keycode Value = Note KEY_MAP_PIANO = {24:36, #Q 25:38, #W 26:40, #E 27:41, #R 28:43, #T 29:45, #Y 30:47, #U 31:48, #I 11:37, #2 12:39, #3 14:42, #5 15:44, #6 16:46, #7 39:25, #S 40:27, #D 42:30, #G 43:32, #H 44:34, #J 46:37, #L 52:24, #Z 53:26, #X 54:28, #C 55:29, #V 56:31, #B 57:33, #N 58:35, #M 59:36} #, KEY_MAP_NOTPIANO = {24:24, #Q 25:25, #W 26:26, #E 27:27, #R 28:28, #T 29:29, #Y 30:30, #U 31:31, #I 32:32, #O 33:33, #P 38:34, #A 39:35, #S 40:36, #D 41:37, #F 42:38, #G 43:39, #H 44:40, #J 45:41, #K 46:42, #L 52:43, #Z 53:44, #X 54:45, #C 55:46, #V 56:47, #B 57:48} #N KEY_MAP = KEY_MAP_PIANO