diff options
author | Oli <olivier.belanger@umontreal.ca> | 2007-10-20 17:25:17 (GMT) |
---|---|---|
committer | Oli <olivier.belanger@umontreal.ca> | 2007-10-20 17:25:17 (GMT) |
commit | cd62e6af4d8f4dda887f1aac15abb13128a7f447 (patch) | |
tree | 13fc523fa1f9d1555c7d235e3bf6c5a8bcfbaf25 | |
parent | 138653b35fe9ed1ccc651fd988fac4b14e83f71a (diff) |
removed csound table's load from startup
-rw-r--r-- | TamTamEdit.activity/Edit/MainWindow.py | 26 | ||||
-rw-r--r-- | TamTamJam.activity/Jam/JamMain.py | 1 | ||||
-rw-r--r-- | TamTamJam.activity/Jam/Picker.py | 4 | ||||
-rw-r--r-- | TamTamJam.activity/Jam/Popup.py | 18 | ||||
-rw-r--r-- | TamTamMini.activity/Mini/InstrumentPanel.py | 1 | ||||
-rw-r--r-- | TamTamMini.activity/Mini/miniTamTamMain.py | 3 | ||||
-rwxr-xr-x | TamTamSynthLab.activity/SynthLab/SynthLabConstants.py | 4 | ||||
-rw-r--r-- | TamTamSynthLab.activity/SynthLab/SynthLabMain.py | 25 | ||||
-rw-r--r-- | common/Util/Block.py | 2 | ||||
-rw-r--r-- | common/Util/CSoundClient.py | 19 | ||||
-rw-r--r-- | common/Util/ControlStream.py | 15 |
11 files changed, 80 insertions, 38 deletions
diff --git a/TamTamEdit.activity/Edit/MainWindow.py b/TamTamEdit.activity/Edit/MainWindow.py index 772257e..73f52a4 100644 --- a/TamTamEdit.activity/Edit/MainWindow.py +++ b/TamTamEdit.activity/Edit/MainWindow.py @@ -58,8 +58,7 @@ class MainWindow( gtk.EventBox ): self.scale = GenerationConstants.DEFAULT_SCALE # META ALGO: [section, variation or not, nPages] A B A C - # TODO: Different parameters sets for each tracks - self.tuneForm = [[0, False, 4], [1, False, 4], [0, True, 2], [2, False, 2]] + self.tuneForm = [[0, False, 2], [1, False, 4], [0, True, 2], [2, False, 2]] def init_data( ): TP.ProfileBegin("init_data") @@ -77,6 +76,13 @@ class MainWindow( gtk.EventBox ): self.instrumentDB.instNamed["kalimba"], self.instrumentDB.instNamed["drum2kit"] ] self.trackInstrument = self.trackInstrumentDefault[:] + + for i in self.trackInstrument: + if i.kit == None: + self.csnd.load_instrument(i.name) + else: + self.csnd.load_drumkit(i.name) + if len(self.trackInstrument) != Config.NUMBER_OF_TRACKS: raise 'error' self.drumIndex = Config.NUMBER_OF_TRACKS - 1 @@ -413,6 +419,12 @@ class MainWindow( gtk.EventBox ): orch = self.newOrchestra() + for i in orch: + if i.kit == None: + self.csnd.load_instrument(i.name) + else: + self.csnd.load_drumkit(i.name) + instrumentsIds = [] for inst in orch: instrumentsIds.append(inst.instrumentId) @@ -797,6 +809,10 @@ class MainWindow( gtk.EventBox ): else: self.trackInstrument2[id] = instrument + if instrument.kit == None: + self.csnd.load_instrument(instrument.name) + else: + self.csnd.load_drumkit(instrument.name) if primary: # TODO handle secondary instruments properly if (Config.DEBUG > 3): print "handleInstrumentChanged", id, instrument.name, primary @@ -2160,8 +2176,9 @@ class instrumentPalette( Popup ): def handleInstrumentChange(self, widget): if not self.skip: instrument = widget.props.value - self.edit.playInstrumentNote(instrument) self.edit.donePickInstrument(instrument) + time.sleep(0.05) + self.edit.playInstrumentNote(instrument) self.popdown(True) def handleCategoryChange(self, widget): @@ -2263,8 +2280,9 @@ class drumPalette( Popup ): def handleInstrumentChange(self, widget): if not self.skip: drum = widget.props.value - self.edit.playInstrumentNote(drum) self.edit.donePickDrum(drum) + time.sleep(0.05) + self.edit.playInstrumentNote(drum) self.popdown(True) diff --git a/TamTamJam.activity/Jam/JamMain.py b/TamTamJam.activity/Jam/JamMain.py index dbd7f8b..9eb89fd 100644 --- a/TamTamJam.activity/Jam/JamMain.py +++ b/TamTamJam.activity/Jam/JamMain.py @@ -440,6 +440,7 @@ class JamMain(gtk.EventBox): "pan": pan, "reverb": reverb } + def pushInstrument( self, instrument ): self.instrumentStack.append( self.instrument ) self.instrument = instrument diff --git a/TamTamJam.activity/Jam/Picker.py b/TamTamJam.activity/Jam/Picker.py index 731e85b..1d627e8 100644 --- a/TamTamJam.activity/Jam/Picker.py +++ b/TamTamJam.activity/Jam/Picker.py @@ -8,6 +8,7 @@ import os import random #TEMP import sets +from common.Util.CSoundClient import new_csound_client import common.Config as Config from gettext import gettext as _ @@ -163,6 +164,7 @@ class Instrument( Picker ): def __init__( self, owner, filter = ( "All" ) ): Picker.__init__( self, owner, filter ) + self.csnd = new_csound_client() self.type = Instrument self.instrumentDB = InstrumentDB.getRef() @@ -174,6 +176,8 @@ class Instrument( Picker ): # match data structure of Block.Instrument data = { "name": _(self.instrumentDB.instId[id].name), "id": id } + + self.csnd.load_instrument(self.instrumentDB.instId[id].name) win = gtk.gdk.get_default_root_window() width = Block.Instrument.WIDTH diff --git a/TamTamJam.activity/Jam/Popup.py b/TamTamJam.activity/Jam/Popup.py index 9268870..7c90977 100644 --- a/TamTamJam.activity/Jam/Popup.py +++ b/TamTamJam.activity/Jam/Popup.py @@ -119,7 +119,7 @@ class Instrument( Popup ): self.GUI["volumeLabel"].set_size_request( 100, -1 ) self.GUI["volumeLabel"].set_alignment( 0.0, 0.5 ) self.GUI["volumeBox"].pack_start( self.GUI["volumeLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["volumeAdjustment"] = gtk.Adjustment( 0.5, 0.0, 1.0, 0.1, 0.1, 0 ) + self.GUI["volumeAdjustment"] = gtk.Adjustment( 0.5, 0.0, 1.0, 0.01, 0.01, 0 ) self.GUI["volumeAdjustment"].connect( 'value-changed', self.handleVolume ) self.GUI["volumeSlider"] = gtk.HScale( adjustment = self.GUI["volumeAdjustment"] ) self.GUI["volumeSlider"].set_size_request( 250, -1 ) @@ -136,7 +136,7 @@ class Instrument( Popup ): self.GUI["panLabel"].set_size_request( 100, -1 ) self.GUI["panLabel"].set_alignment( 0.0, 0.5 ) self.GUI["panBox"].pack_start( self.GUI["panLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["panAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.1, 0.1, 0 ) + self.GUI["panAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 ) self.GUI["panAdjustment"].connect( 'value-changed', self.handlePan ) self.GUI["panSlider"] = gtk.HScale( adjustment = self.GUI["panAdjustment"] ) self.GUI["panSlider"].set_size_request( 250, -1 ) @@ -153,7 +153,7 @@ class Instrument( Popup ): self.GUI["reverbLabel"].set_size_request( 100, -1 ) self.GUI["reverbLabel"].set_alignment( 0.0, 0.5 ) self.GUI["reverbBox"].pack_start( self.GUI["reverbLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["reverbAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.1, 0.1, 0 ) + self.GUI["reverbAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 ) self.GUI["reverbAdjustment"].connect( 'value-changed', self.handleReverb ) self.GUI["reverbSlider"] = gtk.HScale( adjustment = self.GUI["reverbAdjustment"] ) self.GUI["reverbSlider"].set_size_request( 250, -1 ) @@ -224,7 +224,7 @@ class Drum( Popup ): self.GUI["volumeLabel"].set_size_request( 130, -1 ) self.GUI["volumeLabel"].set_alignment( 0.0, 0.5 ) self.GUI["volumeBox"].pack_start( self.GUI["volumeLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["volumeAdjustment"] = gtk.Adjustment( 0.5, 0.0, 1.0, 0.1, 0.1, 0 ) + self.GUI["volumeAdjustment"] = gtk.Adjustment( 0.5, 0.0, 1.0, 0.01, 0.01, 0 ) self.GUI["volumeAdjustment"].connect( 'value-changed', self.handleVolume ) self.GUI["volumeSlider"] = gtk.HScale( adjustment = self.GUI["volumeAdjustment"] ) self.GUI["volumeSlider"].set_size_request( 250, -1 ) @@ -241,7 +241,7 @@ class Drum( Popup ): self.GUI["reverbLabel"].set_size_request( 130, -1 ) self.GUI["reverbLabel"].set_alignment( 0.0, 0.5 ) self.GUI["reverbBox"].pack_start( self.GUI["reverbLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["reverbAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.1, 0.1, 0 ) + self.GUI["reverbAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 ) self.GUI["reverbAdjustment"].connect( 'value-changed', self.handleReverb ) self.GUI["reverbSlider"] = gtk.HScale( adjustment = self.GUI["reverbAdjustment"] ) self.GUI["reverbSlider"].set_size_request( 250, -1 ) @@ -279,7 +279,7 @@ class Drum( Popup ): self.GUI["regularityLabel"].set_size_request( 130, -1 ) self.GUI["regularityLabel"].set_alignment( 0.0, 0.5 ) self.GUI["regularityBox"].pack_start( self.GUI["regularityLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["regularityAdjustment"] = gtk.Adjustment( 0.8, 0.0, 1.0, 0.1, 0.1, 0 ) + self.GUI["regularityAdjustment"] = gtk.Adjustment( 0.8, 0.0, 1.0, 0.01, 0.01, 0 ) self.GUI["regularityAdjustment"].connect( 'value-changed', self.handleRegularity ) self.GUI["regularitySlider"] = gtk.HScale( adjustment = self.GUI["regularityAdjustment"] ) self.GUI["regularitySlider"].set_size_request( 250, -1 ) @@ -386,7 +386,7 @@ class Loop( Popup ): self.GUI["regularityLabel"].set_size_request( 130, -1 ) self.GUI["regularityLabel"].set_alignment( 0.0, 0.5 ) self.GUI["regularityBox"].pack_start( self.GUI["regularityLabel"], False, padding = style.DEFAULT_PADDING ) - self.GUI["regularityAdjustment"] = gtk.Adjustment( 0.8, 0.0, 1.0, 0.1, 0.1, 0 ) + self.GUI["regularityAdjustment"] = gtk.Adjustment( 0.8, 0.0, 1.0, 0.01, 0.01, 0 ) self.GUI["regularityAdjustment"].connect( 'value-changed', self.handleRegularity ) self.GUI["regularitySlider"] = gtk.HScale( adjustment = self.GUI["regularityAdjustment"] ) self.GUI["regularitySlider"].set_size_request( 250, -1 ) @@ -834,7 +834,7 @@ class Loop( Popup ): self.owner.popInstrument() self.owner.setKeyboardListener( None ) self.owner.setPaused( False ) - + def recordNote( self, pitch ): page = self.block.getData("id") ticks = self.owner.noteDB.getPage(page).ticks @@ -888,7 +888,7 @@ class Loop( Popup ): note = self.noteDB.getNote( self.curPage, 0, self.recordingNote ) if tick > note.cs.onset: - self.recordingNotePassed = True + self.recordingNotePassed = True if self.recordingNotePassed and tick < note.cs.onset: tick = self.noteDB.getPage( self.curPage ).ticks diff --git a/TamTamMini.activity/Mini/InstrumentPanel.py b/TamTamMini.activity/Mini/InstrumentPanel.py index b28e969..a35b774 100644 --- a/TamTamMini.activity/Mini/InstrumentPanel.py +++ b/TamTamMini.activity/Mini/InstrumentPanel.py @@ -301,6 +301,7 @@ class InstrumentPanel( gtk.EventBox ): if self.setInstrument: widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event self.setInstrument(instrument) + time.sleep(0.05) if self.playInstrument: self.playInstrument(instrument) if self.enterMode: pass #Close the window diff --git a/TamTamMini.activity/Mini/miniTamTamMain.py b/TamTamMini.activity/Mini/miniTamTamMain.py index c410a86..ed92955 100644 --- a/TamTamMini.activity/Mini/miniTamTamMain.py +++ b/TamTamMini.activity/Mini/miniTamTamMain.py @@ -62,6 +62,7 @@ class miniTamTamMain(gtk.EventBox): self.beatDuration = 60.0/self.tempo self.ticksPerSecond = Config.TICKS_PER_BEAT*self.tempo/60.0 self.rythmInstrument = 'drum1kit' + self.csnd.load_drumkit(self.rythmInstrument) self.muteInst = False self.drumFillin = Fillin( self.beat, self.tempo, self.rythmInstrument, self.reverb, self.drumVolume ) self.sequencer= MiniSequencer(self.recordStateButton, self.recordOverSensitivity) @@ -566,6 +567,7 @@ class miniTamTamMain(gtk.EventBox): #data is drum1kit, drum2kit, or drum3kit #print 'HANDLE: Generate Button' self.rythmInstrument = data + self.csnd.load_drumkit(data) instrumentId = self.instrumentDB.instNamed[data].instrumentId for (o,n) in self.noteList : self.csnd.loopUpdate(n, NoteDB.PARAMETER.INSTRUMENT, instrumentId, -1) @@ -587,6 +589,7 @@ class miniTamTamMain(gtk.EventBox): def setInstrument( self , instrument ): self.instrument = instrument self.keyboardStandAlone.setInstrument(instrument) + self.csnd.load_instrument(instrument) def playInstrumentNote(self , instrument, secs_per_tick = 0.025): if not self.muteInst: diff --git a/TamTamSynthLab.activity/SynthLab/SynthLabConstants.py b/TamTamSynthLab.activity/SynthLab/SynthLabConstants.py index 77ead26..0fcda29 100755 --- a/TamTamSynthLab.activity/SynthLab/SynthLabConstants.py +++ b/TamTamSynthLab.activity/SynthLab/SynthLabConstants.py @@ -73,18 +73,14 @@ class SynthLabConstants: 'chorus': [.5, 1., 5., .5, 0, 3, 0, 10, 0, 30, 0, 1, FLOAT, FLOAT, FLOAT]} CONTROL_TYPES = ['lfo', 'rand', 'adsr', 'trackpadX', 'trackpadY'] - #CONTROL_TYPES_SEL = [type + 'sel' for type in CONTROL_TYPES] CONTROL_TYPES_PLUS = [type + '+' for type in CONTROL_TYPES] SOURCE_TYPES = ['fm', 'buzz', 'vco', 'pluck', 'noise', 'sample', 'voice', 'grain', 'addSynth', 'mic'] - #SOURCE_TYPES_SEL = [type + 'sel' for type in SOURCE_TYPES] SOURCE_TYPES_PLUS = [type + '+' for type in SOURCE_TYPES] FX_TYPES = ['wguide', 'distort','filter', 'ring', 'reverb', 'harmon', 'eq4band', 'chorus'] - #FX_TYPES_SEL = [type + 'sel' for type in FX_TYPES] FX_TYPES_PLUS = [type + '+' for type in FX_TYPES] OUTPUT_TYPE = ['adsr'] OUTPUT_TYPE_SEL = ['adsrsel'] CHOOSE_TYPE = [CONTROL_TYPES, SOURCE_TYPES, FX_TYPES, OUTPUT_TYPE] - #CHOOSE_TYPE2 = [CONTROL_TYPES_SEL, SOURCE_TYPES_SEL, FX_TYPES_SEL, OUTPUT_TYPE_SEL] CHOOSE_TYPE_PLUS = [CONTROL_TYPES_PLUS, SOURCE_TYPES_PLUS, FX_TYPES_PLUS] # SynthLab Tooltips diff --git a/TamTamSynthLab.activity/SynthLab/SynthLabMain.py b/TamTamSynthLab.activity/SynthLab/SynthLabMain.py index 4aeb60a..b6476d5 100644 --- a/TamTamSynthLab.activity/SynthLab/SynthLabMain.py +++ b/TamTamSynthLab.activity/SynthLab/SynthLabMain.py @@ -1146,6 +1146,19 @@ class SynthLabMain(gtk.EventBox): mess = "f5504 0 32768 -1 " + "\"%s\" 0 0 0" % snd self.csnd.inputMessage( mess ) time.sleep(.005) + if lastTable[4] == 6: + snd = self.sample_names[int(sourceParametersTable[1])] + self.csnd.load_instrument(snd) + if lastTable[5] == 6: + snd = self.sample_names[int(sourceParametersTable[5])] + self.csnd.load_instrument(snd) + if lastTable[6] == 6: + snd = self.sample_names[int(sourceParametersTable[9])] + self.csnd.load_instrument(snd) + if lastTable[7] == 6: + snd = self.sample_names[int(sourceParametersTable[13])] + self.csnd.load_instrument(snd) + time.sleep(.005) def recordSound( self, widget, data ): if widget.get_active() == True: @@ -1418,14 +1431,4 @@ class SynthLabMain(gtk.EventBox): f = shelve.open( Config.TAM_TAM_ROOT + '/common/Resources/SynthFiles/' + preset, 'r') self.loadState(f) f.close() - self.handleSaveTemp() - - def initRadioButton( self, labelList, methodCallback, box ): - for i in range( len( labelList ) ): - label = labelList[i] - if i == 0: - button = ImageRadioButton( group = None, mainImg_path = Config.IMAGE_ROOT + label + '.png', altImg_path = Config.IMAGE_ROOT + label + 'sel.png' ) - else: - button = ImageRadioButton( group = button, mainImg_path = Config.IMAGE_ROOT + label + '.png', altImg_path = Config.IMAGE_ROOT + label + 'sel.png' ) - button.connect( "toggled", methodCallback, i ) - box.pack_start( button, True, True ) + self.handleSaveTemp()
\ No newline at end of file diff --git a/common/Util/Block.py b/common/Util/Block.py index 45f942a..e6a7bf4 100644 --- a/common/Util/Block.py +++ b/common/Util/Block.py @@ -14,7 +14,7 @@ from common.Util.NoteDB import PARAMETER # All the graphics resources are loaded in Desktop and referenced here as necessary #::: -class Block(): +class Block: WIDTH = 100 HEIGHT = 100 diff --git a/common/Util/CSoundClient.py b/common/Util/CSoundClient.py index c2ca4ff..b3729d8 100644 --- a/common/Util/CSoundClient.py +++ b/common/Util/CSoundClient.py @@ -14,6 +14,7 @@ from common.Util.Clooper.aclient import * from common.Util import NoteDB import common.Util.InstrumentDB as InstrumentDB +loadedInstruments = [] _note_template = array.array('f', [0] * 19 ) def _new_note_array(): @@ -98,6 +99,22 @@ class _CSoundClientPlugin: instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[ instrumentSoundFile ].instrumentId sc_inputMessage( Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName) ) + def load_instrument(self, inst): + if not inst in loadedInstruments: + fileName = Config.SOUNDS_DIR + "/" + inst + instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[ inst ].instrumentId + sc_inputMessage( Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName) ) + loadedInstruments.append(inst) + + def load_drumkit(self, kit): + if not kit in loadedInstruments: + for i in self.instrumentDB.instNamed[kit].kit.values(): + fileName = Config.SOUNDS_DIR + "/" + i + instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[ i ].instrumentId + sc_inputMessage( Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName) ) + loadedInstruments.append(i) + loadedInstruments.append(kit) + def connect( self, init = True ): def reconnect(): if sc_start(self.periods_per_buffer) : @@ -355,6 +372,6 @@ def new_csound_client(): _Client = _CSoundClientPlugin() _Client.connect(True) _Client.setMasterVolume(100.0) - _Client.load_instruments() + #_Client.load_instruments() time.sleep(0.2) return _Client diff --git a/common/Util/ControlStream.py b/common/Util/ControlStream.py index 4eeabc1..ae62c61 100644 --- a/common/Util/ControlStream.py +++ b/common/Util/ControlStream.py @@ -17,7 +17,7 @@ class TamTamOStream: self.file = file def note_add(self, note): - l = ['note_add', note.id, note.page, note.track, + l = ['note_add', note.id, note.page, note.track, note.cs.onset, note.cs.pitch, note.cs.amplitude, @@ -120,7 +120,7 @@ class TamTamTable: nid = int(argv[0]) page = self.pid[int(argv[1])] track = int(argv[2]) - cs = CSoundNote( + cs = CSoundNote( int(argv[3]), int(argv[4]), float(argv[5]), @@ -149,7 +149,7 @@ class TamTamTable: insts = "" for str in argv[3:]: insts += str - print pid, insts + #print pid, insts instruments = eval( insts ) if len( self.noteDB.tune ): after = self.noteDB.tune[-1] @@ -189,11 +189,11 @@ class TamTamTable: self.jam.updateLoopImage( data["id"] ) if child: - block = blockClass( self.jam.getDesktop(), data ) - self.lastBlock.addChild( block ) + 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: @@ -206,7 +206,7 @@ class TamTamTable: #try: if os.path.isfile( filename ): os.remove( filename ) - + file = open( filename, "w" ) for line in self.file: if line == "desktop_store END\n": @@ -229,4 +229,3 @@ class TamTamTable: def quit(self, argv): print 'quitting...' sys.exit(0) - |