From 3ca1024e0b7269001dcec071939aeb114f75318b Mon Sep 17 00:00:00 2001 From: Oli Date: Fri, 03 Aug 2007 20:53:57 +0000 Subject: SynthLab debug... --- (limited to 'SynthLab') diff --git a/SynthLab/SynthLabConstants.py b/SynthLab/SynthLabConstants.py index ef09661..5598ffc 100755 --- a/SynthLab/SynthLabConstants.py +++ b/SynthLab/SynthLabConstants.py @@ -99,18 +99,21 @@ class SynthLabConstants: WAVEFORM = _('Waveform') LFO_WAVEFORMS = [_('Sine'), _('Triangle'), _('Bi-Square'), _('Uni-Square'), _('Sawtooth'), _('Sawtooth-down')] OFFSET = _('Offset') + LFO_INFO = _('A low frequency oscillation (LFO) is a signal usually below 20 Hz which creates a pulsating rythm rather than a audible tone.') RANDOM = _('Random') MIN = _('Minimum') MAX = _('Maximum') FREQ = FREQ SEED = _('Seed') + RANDOM_INFO = _('A random number generator is a computational device designed to generate a sequence of numbers that lack any pattern.') ADSR = _('Envelope') ATTACK = _('Attack') DECAY = _('Decay') SUSTAIN = _('Sustain') RELEASE = _('Release') + ADSR_INFO = _('') TRACKPADX = _('Trackpad X') MIN = MIN @@ -118,6 +121,7 @@ class SynthLabConstants: SCALING = _('Scaling') SCALING_TYPES = [_('Lin'), _('Log')] POLL = _('Poll time') + TRACKPADX_INFO = _('') TRACKPADY = _('Trackpad Y') MIN = MIN @@ -125,6 +129,7 @@ class SynthLabConstants: SCALING = SCALING SCALING_TYPES = SCALING_TYPES POLL = POLL + TRACKPADY_INFO = _('') #Source FM = _('FM') @@ -132,12 +137,14 @@ class SynthLabConstants: MOD = _('Modulator Frequency') INDEX = _('Index') GAIN = _('Gain') + FM_INFO = _('') BUZZ = _('Buzz') FREQ = FREQ NHARM = _('Number of harmonics') FSLOPE = _('Filter Slope') GAIN = GAIN + BUZZ_INFO = _('') VCO = _('VCO') FREQ = FREQ @@ -145,12 +152,14 @@ class SynthLabConstants: VCO_WAVEFORMS = [_('Sawtooth'), _('Square'), _('Triangle')] FSLOPE = FSLOPE GAIN = GAIN + VCO_INFO = _('') PLUCK = _('Pluck') FREQ = FREQ LFILTER = _('Lowpass Filter') VIBRATO = _('Vibrato') GAIN = GAIN + PLUCK_INFO = _('') NOISE = _('Noise') NOISETYPE = _('Type') @@ -158,6 +167,7 @@ class SynthLabConstants: FREQ = FREQ BANDWITH = _('Bandwith') GAIN = GAIN + NOISE_INFO = _('') SAMPLE = _('Sound Sample') FREQ = FREQ @@ -165,6 +175,7 @@ class SynthLabConstants: SAMPLE_NAMES = _('Sample name') LFILTER = LFILTER GAIN = GAIN + SAMPLE_INFO = _('') VOICE = _('Voice') FREQ = FREQ @@ -172,18 +183,21 @@ class SynthLabConstants: VOWEL_TYPES = ['i', 'e', 'ee', 'a', 'u', 'o1', 'o2', 'oa', 'oe'] VIBRATO = VIBRATO GAIN = GAIN + VOICE_INFO = _('') GRAIN = _('Grain') FREQ = FREQ SAMPLEN = SAMPLEN INDEX = _('Index') GAIN = GAIN + GRAIN_INFO = _('') ADDSYNTH = _('Additive Synthesis') FREQ = FREQ SPREAD = _('Spread') WAVE = _('Waveform') GAIN = GAIN + ADDSYNTH_INFO = _('') #Effects DELAY = _('Delay') @@ -191,12 +205,14 @@ class SynthLabConstants: LFILTER = LFILTER FEEDBACK = _('Feedback') GAIN = GAIN + DELAY_INFO = _('') DIST = _('Distortion') FREQ = FREQ RESON = _('Resonance') DISTL = _('Distotion Level') GAIN = GAIN + DIST_INFO = _('') FILTER = _('Filter') FREQ = FREQ @@ -204,6 +220,7 @@ class SynthLabConstants: FTYPE = _('Type') FILTER_TYPES = [_('Lowpass'), _('Highpass'), _('Bandpass')] GAIN = GAIN + FILTER_INFO = _('') RINGMOD = _('Ring Modulator') FREQ = FREQ @@ -211,54 +228,59 @@ class SynthLabConstants: WAVEFORM = WAVEFORM LFO_WAVEFORMS = LFO_WAVEFORMS GAIN = GAIN + RINGMOD_INFO = _('') REVERB = _('Reverb') REVERBD = _('Length') REVERBF = _('Lowpass Filter') REVERBL = _('Reverb Level') GAIN = GAIN + REVERB_INFO = _('') HARMON = _('Harmonizer') FREQ = FREQ DRYDELAY = _('Dry delay') MIX = MIX GAIN = GAIN + HARMON_INFO = _('') EQ4BAND = _('Equalizer 4 bands') FREQ1 = _('Band one gain') FREQ2 = _('Band two gain') FREQ3 = _('Band three gain') FREQ4 = _('Band four gain') + EQ4BAND_INFO = _('') CHORUS = _('Chorus') LFODEPTH = _('LFO Depth') LFOFREQ = _('LFO Frequency') DELAY = _('Delay') FEEDBACK = FEEDBACK + CHORUS_INFO = _('A chorus effect is a condition in the way people perceive similar sounds coming from multiple sources.') SYNTHTYPES = [[LFO, RANDOM, ADSR, TRACKPADX, TRACKPADY], [FM, BUZZ, VCO, PLUCK, NOISE, SAMPLE, VOICE, GRAIN, ADDSYNTH], [DELAY, DIST, FILTER, RINGMOD, REVERB, HARMON, EQ4BAND, CHORUS], [ADSR]] - SYNTHPARA = { _('lfo'): [AMP, FREQ, WAVEFORM, OFFSET], - _('rand'): [MIN, MAX, FREQ, SEED], - _('adsr'): [ATTACK, DECAY, SUSTAIN, RELEASE], - _('trackpadX'): [MIN, MAX, SCALING, POLL], - _('trackpadY'): [MIN, MAX, SCALING, POLL], - _('fm'): [CAR, MOD, INDEX, GAIN], - _('buzz'): [FREQ, NHARM, FSLOPE, GAIN], - _('vco'): [FREQ, WAVEFORM, FSLOPE, GAIN], - _('pluck'): [FREQ, LFILTER, VIBRATO, GAIN], - _('noise'): [NOISETYPE, FREQ, BANDWITH, GAIN], - _('sample'): [FREQ, SAMPLEN, LFILTER, GAIN], - _('voice'): [FREQ, VOWEL, VIBRATO, GAIN], - _('grain'): [FREQ, SAMPLEN, INDEX, GAIN], - _('addSynth'): [FREQ, SPREAD, WAVE, GAIN], - _('wguide'): [FREQ, LFILTER, FEEDBACK, GAIN], - _('distort'): [FREQ, RESON, DISTL, GAIN], - _('filter'): [FREQ, FSLOPE, FTYPE, GAIN], - _('ring'): [FREQ, MIX, WAVEFORM, GAIN], - _('reverb'): [REVERBD, REVERBF, REVERBL, GAIN], - _('harmon'): [FREQ, DRYDELAY, MIX, GAIN], - _('eq4band'): [FREQ1, FREQ2, FREQ3, FREQ4], - _('chorus'): [LFODEPTH, LFOFREQ, DELAY, FEEDBACK]} + SYNTHPARA = { _('lfo'): [AMP, FREQ, WAVEFORM, OFFSET, LFO_INFO], + _('rand'): [MIN, MAX, FREQ, SEED, RANDOM_INFO], + _('adsr'): [ATTACK, DECAY, SUSTAIN, RELEASE, ADSR_INFO], + _('trackpadX'): [MIN, MAX, SCALING, POLL, TRACKPADX_INFO], + _('trackpadY'): [MIN, MAX, SCALING, POLL, TRACKPADY_INFO], + _('fm'): [CAR, MOD, INDEX, GAIN, FM_INFO], + _('buzz'): [FREQ, NHARM, FSLOPE, GAIN, BUZZ_INFO], + _('vco'): [FREQ, WAVEFORM, FSLOPE, GAIN, VCO_INFO], + _('pluck'): [FREQ, LFILTER, VIBRATO, GAIN, PLUCK_INFO], + _('noise'): [NOISETYPE, FREQ, BANDWITH, GAIN, NOISE_INFO], + _('sample'): [FREQ, SAMPLEN, LFILTER, GAIN, SAMPLE_INFO], + _('voice'): [FREQ, VOWEL, VIBRATO, GAIN, VOICE_INFO], + _('grain'): [FREQ, SAMPLEN, INDEX, GAIN, GRAIN_INFO], + _('addSynth'): [FREQ, SPREAD, WAVE, GAIN, ADDSYNTH_INFO], + _('wguide'): [FREQ, LFILTER, FEEDBACK, GAIN, DELAY_INFO], + _('distort'): [FREQ, RESON, DISTL, GAIN, DIST_INFO], + _('filter'): [FREQ, FSLOPE, FTYPE, GAIN, FILTER_INFO], + _('ring'): [FREQ, MIX, WAVEFORM, GAIN, RINGMOD_INFO], + _('reverb'): [REVERBD, REVERBF, REVERBL, GAIN, REVERB_INFO], + _('harmon'): [FREQ, DRYDELAY, MIX, GAIN, HARMON_INFO], + _('eq4band'): [FREQ1, FREQ2, FREQ3, FREQ4, EQ4BAND_INFO], + _('chorus'): [LFODEPTH, LFOFREQ, DELAY, FEEDBACK, CHORUS_INFO]} diff --git a/SynthLab/SynthLabWindow.py b/SynthLab/SynthLabWindow.py index eaf8fd6..b031405 100644 --- a/SynthLab/SynthLabWindow.py +++ b/SynthLab/SynthLabWindow.py @@ -49,6 +49,7 @@ class SynthLabWindow(SubActivity): self.instanceOpen = 0 self.recordWait = 0 self.recCount = 0 + self.new = True self.duration = 2 self.viewType = '' self.viewParam = '' @@ -122,7 +123,7 @@ class SynthLabWindow(SubActivity): menuBox = gtk.HBox() self.objComboBox = BigComboBox() - self.objComboBox.append_item(0, 'adsr', Config.TAM_TAM_ROOT + '/icons/adsr-menu.svg') + self.objComboBox.append_item(0, 'Envelope', Config.TAM_TAM_ROOT + '/icons/adsr-menu.svg') self.objComboBox.set_active(0) self.objComboBox.connect('changed', self.changeObject) comboMenu = ToolComboBox(self.objComboBox) @@ -131,10 +132,9 @@ class SynthLabWindow(SubActivity): slidersBox = gtk.HBox() - #fake values - self.instanceID = 12 # object number - self.objectType = self.instanceID / 4 #(control, source, fx, output) - self.choosenType = 0 # self.synthObjectsParameters.types[self.instanceID] module as an index + self.instanceID = 12 # object number + self.objectType = self.instanceID / 4 #(control, source, fx, output) + self.choosenType = 0 # self.synthObjectsParameters.types[self.instanceID] module as an index selectedType = SynthLabConstants.CHOOSE_TYPE[self.objectType][self.choosenType] #module as a string slider1Min = SynthLabConstants.TYPES[selectedType][4] @@ -294,6 +294,7 @@ class SynthLabWindow(SubActivity): def select(self, i): if i == self.instanceID: return + self.new = False if self.instanceID > 0: self.invalidate_rect( self.bounds[self.instanceID][0], self.bounds[self.instanceID][1]-2, SynthLabConstants.PIC_SIZE, SynthLabConstants.PIC_SIZE_HIGHLIGHT ) self.instanceID = i @@ -301,8 +302,8 @@ class SynthLabWindow(SubActivity): if self.instanceID / 4 != self.objectType: self.objectType = self.instanceID / 4 self.objComboBox.remove_all() - for obj in SynthLabConstants.CHOOSE_TYPE[self.objectType]: - self.objComboBox.append_item(SynthLabConstants.CHOOSE_TYPE[self.objectType].index(obj), obj, Config.TAM_TAM_ROOT + '/icons/' + obj + '-menu.svg') + for i in range(len(SynthLabConstants.CHOOSE_TYPE[self.objectType])): + self.objComboBox.append_item(i, SynthLabConstants.SYNTHTYPES[self.objectType][i], Config.TAM_TAM_ROOT + '/icons/' + SynthLabConstants.CHOOSE_TYPE[self.objectType][i] + '-menu.svg') oldChoosen = self.choosenType if self.instanceID != 12: @@ -310,10 +311,6 @@ class SynthLabWindow(SubActivity): else: self.choosenType = 0 self.objComboBox.set_active(self.choosenType) - #if self.choosenType != oldChoosen: - self.changeObject(self.objComboBox) - #else: - self.updateViewer() #Not sure about this self.slider1.grab_focus() self.sendTables(self.slider1, 1) @@ -323,17 +320,19 @@ class SynthLabWindow(SubActivity): self.resize() if self.instanceID != 12: self.synthObjectsParameters.setType(self.instanceID, self.choosenType) - self.writeTables( self.synthObjectsParameters.types, + if self.new: + self.writeTables( self.synthObjectsParameters.types, self.synthObjectsParameters.controlsParameters, self.synthObjectsParameters.sourcesParameters, self.synthObjectsParameters.fxsParameters ) - self.updateViewer() + #self.updateViewer() def updateViewer(self): self.viewType = SynthLabConstants.SYNTHTYPES[self.objectType][self.choosenType] selectedType = SynthLabConstants.CHOOSE_TYPE[self.objectType][self.choosenType] + info = SynthLabConstants.SYNTHPARA[selectedType][4] self.viewParam = SynthLabConstants.SYNTHPARA[selectedType][self.curSlider-1] + ': ' + self.recallSliderValue(self.curSlider) - self.infoText = self.viewType + '\n\n' + self.viewParam + self.infoText = self.viewType + ': ' + info + '\n\n' + self.viewParam self.textBuf.set_text(self.infoText) def recallSliderValue( self, num ): @@ -368,12 +367,18 @@ class SynthLabWindow(SubActivity): def resize( self ): selectedType = SynthLabConstants.CHOOSE_TYPE[self.objectType][self.choosenType] - parametersTable = self.synthObjectsParameters.choiceParamsSet[self.objectType] - tablePos = (self.instanceID % 4)*4 - slider1Init = parametersTable[tablePos] - slider2Init = parametersTable[tablePos+1] - slider3Init = parametersTable[tablePos+2] - slider4Init = parametersTable[tablePos+3] + if self.new: + slider1Init = SynthLabConstants.TYPES[selectedType][0] + slider2Init = SynthLabConstants.TYPES[selectedType][1] + slider3Init = SynthLabConstants.TYPES[selectedType][2] + slider4Init = SynthLabConstants.TYPES[selectedType][3] + else: + parametersTable = self.synthObjectsParameters.choiceParamsSet[self.objectType] + tablePos = (self.instanceID % 4)*4 + slider1Init = parametersTable[tablePos] + slider2Init = parametersTable[tablePos+1] + slider3Init = parametersTable[tablePos+2] + slider4Init = parametersTable[tablePos+3] slider1Min = SynthLabConstants.TYPES[selectedType][4] slider1Max = SynthLabConstants.TYPES[selectedType][5] @@ -400,6 +405,8 @@ class SynthLabWindow(SubActivity): self.slider2.set_digits(slider2Snap) self.slider3.set_digits(slider3Snap) + self.new = True + def sendTables( self, widget, data ): self.curSlider = data self.slider1Val = self.p1Adjust.value @@ -703,7 +710,6 @@ class SynthLabWindow(SubActivity): # pass in obj = None to clear def highlightGate( self, obj, gate = None, reject = False ): - print obj, gate if obj == None: self.parameterUpdate('') if self.overGateObj != obj or self.overGate != gate or self.overGateReject != reject: @@ -720,7 +726,7 @@ class SynthLabWindow(SubActivity): self.invalidate_rect( self.overGateLoc[0], self.overGateLoc[1], self.overGateSize, self.overGateSize ) if True: #obj != 12: if gate[0] == 0: - _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + ': output' + _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + _(': controller output') elif gate[0] == 1: choosen = SynthLabConstants.CHOOSE_TYPE[obj/4][self.typesTable[obj]] _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + ': ' + SynthLabConstants.SYNTHPARA[choosen][gate[1]] @@ -729,12 +735,12 @@ class SynthLabWindow(SubActivity): exec 'self.slider%s.grab_focus()' % str(gateNum) exec 'self.sendTables(self.slider%s, %d)' % (str(gateNum), gateNum) elif gate[0] == 2: - _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + ': sound output' + _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + _(': sound output') elif gate[0] == 3: if obj != 12: - _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + ': sound input' + _str = SynthLabConstants.SYNTHTYPES[obj/4][self.typesTable[obj]] + _(': sound input') else: - _str = 'Send sound to the speakers' + _str = _('Send sound to the speakers') self.parameterUpdate( _str ) def startDragObject( self, i ): @@ -1053,13 +1059,13 @@ class SynthLabWindow(SubActivity): def writeTables( self, typesTable, controlParametersTable, sourceParametersTable, fxParametersTable ): mess = 'f5200 0 16 -2 ' + " ".join([str(n) for n in controlParametersTable]) self.csnd.inputMessage( mess ) - time.sleep(0.005) + time.sleep(0.001) mess = "f5201 0 16 -2 " + " " .join([str(n) for n in sourceParametersTable]) self.csnd.inputMessage( mess ) - time.sleep(.005) + time.sleep(.001) mess = "f5202 0 16 -2 " + " " .join([str(n) for n in fxParametersTable]) self.csnd.inputMessage( mess ) - time.sleep(.005) + time.sleep(.001) self.typesTable = typesTable lastTable = [0]*12 for i in range(12): @@ -1067,7 +1073,7 @@ class SynthLabWindow(SubActivity): lastTable[i] = (typesTable[i]+1) mess = "f5203 0 16 -2 " + " " .join([str(n) for n in lastTable]) + " 0 0 0 0" self.csnd.inputMessage( mess ) - time.sleep(.005) + time.sleep(.001) if lastTable[4] == 8: snd = Config.SOUNDS_DIR + '/' + self.sample_names[int(sourceParametersTable[1])] mess = "f5501 0 32768 -1 " + "\"%s\" 0 0 0" % snd -- cgit v0.9.1