diff options
author | Oli <olivier.belanger@umontreal.ca> | 2007-05-15 05:54:23 (GMT) |
---|---|---|
committer | Oli <olivier.belanger@umontreal.ca> | 2007-05-15 05:54:23 (GMT) |
commit | 7f34bf5948a29df7f68822b54c3f00a824890d05 (patch) | |
tree | 779d9d8f8c13f842ebcd22faa6f3442a8309e780 /miniTamTam | |
parent | 8185d0f72297b6922bdbe59279becc9dc2cd78d7 (diff) |
volume slider in mini switched to drum-inst balance
Diffstat (limited to 'miniTamTam')
-rw-r--r-- | miniTamTam/Fillin.py | 7 | ||||
-rw-r--r-- | miniTamTam/KeyboardStandAlone.py | 8 | ||||
-rwxr-xr-x | miniTamTam/Loop.py | 14 | ||||
-rw-r--r-- | miniTamTam/MiniSequencer.py | 7 | ||||
-rw-r--r-- | miniTamTam/miniTamTamMain.py | 43 |
5 files changed, 56 insertions, 23 deletions
diff --git a/miniTamTam/Fillin.py b/miniTamTam/Fillin.py index 0825d44..4c74d1b 100644 --- a/miniTamTam/Fillin.py +++ b/miniTamTam/Fillin.py @@ -9,7 +9,7 @@ from Util.NoteDB import Note import Config class Fillin: - def __init__( self, nbeats, tempo, instrument, reverb ): + def __init__( self, nbeats, tempo, instrument, reverb, volume ): self.notesList = [] self.barCount = 0 self.gate = 0 @@ -17,6 +17,7 @@ class Fillin: self.tempo = tempo self.instrument = instrument self.reverb = reverb + self.volume = volume self.onsets = [] self.pitchs = [] self.playBackTimeout = None @@ -45,6 +46,9 @@ class Fillin: def setReverb( self, reverb ): self.reverb = reverb + + def setVolume( self, volume ): + self.volume = volume def play( self ): if self.playBackTimeout == None: @@ -93,6 +97,7 @@ class Fillin: self.notesList= [] for x in flatten( generator(self.instrument, self.nbeats, 0.4, 0.1, self.reverb) ): if x.onset not in self.onsets or x.pitch not in self.pitchs: + x.amplitude = x.amplitude*self.volume n = Note(0, x.trackId, i, x) self.notesList.append(n) i += 1 diff --git a/miniTamTam/KeyboardStandAlone.py b/miniTamTam/KeyboardStandAlone.py index f562d02..83d4f73 100644 --- a/miniTamTam/KeyboardStandAlone.py +++ b/miniTamTam/KeyboardStandAlone.py @@ -29,7 +29,7 @@ class KeyboardStandAlone: def setReverb(self , reverb): self.reverb = reverb - def onKeyPress(self,widget,event): + def onKeyPress(self,widget,event, volume): key = event.hardware_keycode # If the key is already in the dictionnary, exit function (to avoir key repeats) if self.key_dict.has_key(key): @@ -69,7 +69,7 @@ class KeyboardStandAlone: # Create and play the note self.key_dict[key] = CSoundNote(onset = 0, pitch = pitch, - amplitude = 1, + amplitude = volume, pan = 0.5, duration = duration, trackId = track, @@ -84,7 +84,7 @@ class KeyboardStandAlone: self.recording( CSoundNote( onset = recOnset, pitch = pitch, - amplitude = 1, + amplitude = volume, pan = 0.5, duration = 100, trackId = 0, @@ -106,7 +106,7 @@ class KeyboardStandAlone: if Config.INSTRUMENTSID[ csnote.instrumentId ].csoundInstrumentId == Config.INST_TIED: csnote.duration = .5 csnote.decay = 0.7 - csnote.amplitude = 1 + #csnote.amplitude = 1 csnote.tied = False csnote.mode = 'mini' self.csnd.play(csnote, 0.3) diff --git a/miniTamTam/Loop.py b/miniTamTam/Loop.py index d18dcd3..4beee57 100755 --- a/miniTamTam/Loop.py +++ b/miniTamTam/Loop.py @@ -5,13 +5,15 @@ from Generation.Drunk import * from Util.CSoundNote import CSoundNote from Util.CSoundClient import new_csound_client from Util.NoteDB import Note +from Util.NoteDB import PARAMETER from Generation.GenerationConstants import GenerationConstants class Loop: - def __init__( self ): + def __init__( self, beat, volume ): self.notesDict = {} self.notesList = [] - self.beat = 4 + self.beat = beat + self.volume = volume self.id = 4000 self.csnd = new_csound_client() @@ -35,11 +37,17 @@ class Loop: if (Config.DEBUG > 3): print 'play loop at key: ' + str(key) self.notesDict[key] = self.notesList if (Config.DEBUG > 3): print self.notesDict + + def adjustLoopVolume(self, volume): + self.volume = volume + for k in self.notesDict.keys(): + for n in self.notesDict[k]: + self.csnd.loopUpdate(n, PARAMETER.AMPLITUDE, n.cs.amplitude*self.volume, 1) def createCsNote(self, i, instrument, reverb): onset = i[0] pitch = i[1] - gain = i[2] + gain = i[2]*self.volume duration = i[3] if Config.INSTRUMENTS[instrument].kit != None: if GenerationConstants.DRUMPITCH.has_key(pitch): diff --git a/miniTamTam/MiniSequencer.py b/miniTamTam/MiniSequencer.py index ee21761..887b4cf 100644 --- a/miniTamTam/MiniSequencer.py +++ b/miniTamTam/MiniSequencer.py @@ -7,6 +7,7 @@ import Config from Util.CSoundNote import CSoundNote from Util.CSoundClient import new_csound_client from Util.NoteDB import Note +from Util.NoteDB import PARAMETER class MiniSequencer: def __init__( self, recordButtonState ): @@ -14,6 +15,7 @@ class MiniSequencer: self.sequencer = [] self.pitchs = [] self.beat = 4 + self.volume = 0.5 self.tempo = Config.PLAYER_TEMPO self.checkOk = 0 self.tick = 0 @@ -100,6 +102,11 @@ class MiniSequencer: self.csnd.loopPlay(n,1) #add as active self.pitchs.remove( pitch ) + + def adjustSequencerVolume(self, volume): + self.volume = volume + for n in self.notesList: + self.csnd.loopUpdate(n, PARAMETER.AMPLITUDE, n.cs.amplitude*self.volume, 1) def handleClock( self ): currentTick = self.csnd.loopGetTick() diff --git a/miniTamTam/miniTamTamMain.py b/miniTamTam/miniTamTamMain.py index a90aa69..aa5f997 100644 --- a/miniTamTam/miniTamTamMain.py +++ b/miniTamTam/miniTamTamMain.py @@ -6,6 +6,7 @@ import os import random import time from types import * +from Util.NoteDB import PARAMETER import Config @@ -36,17 +37,18 @@ class miniTamTamMain(SubActivity): self.csnd = new_csound_client() self.timeout_ms = 50 - self.volume = 80 + self.instVolume = 50 + self.drumVolume = 0.5 self.instrument = 'ocarina' self.regularity = 0.75 self.beat = 4 self.reverb = 0. self.tempo = Config.PLAYER_TEMPO self.rythmInstrument = 'drum1kit' - self.drumFillin = Fillin( self.beat, self.tempo, self.rythmInstrument, self.reverb ) + self.drumFillin = Fillin( self.beat, self.tempo, self.rythmInstrument, self.reverb, self.drumVolume ) self.regenerate() self.sequencer= MiniSequencer(self.recordStateButton) - self.loop = Loop() + self.loop = Loop(self.beat, self.instVolume*0.01) self.csnd.loopSetTempo(self.tempo) self.noteList = [] time.sleep(0.001) @@ -54,7 +56,7 @@ class miniTamTamMain(SubActivity): for i in range(21): self.csnd.setTrackVolume( 100, i ) - self.csnd.setMasterVolume(self.volume) + self.csnd.setMasterVolume(150) self.sequencer.beat = self.beat self.loop.beat = self.beat self.tooltips = gtk.Tooltips() @@ -98,7 +100,7 @@ class miniTamTamMain(SubActivity): volumeSliderBox = gtk.HBox() self.volumeSliderBoxImgTop = gtk.Image() self.volumeSliderBoxImgTop.set_from_file(Config.IMAGE_ROOT + 'volume2.png') - volumeAdjustment = gtk.Adjustment(value=self.volume, lower=0, upper=100, step_incr=1, page_incr=0, page_size=0) + volumeAdjustment = gtk.Adjustment(value=self.instVolume, lower=0, upper=100, step_incr=1, page_incr=0, page_size=0) volumeSlider = ImageHScale( Config.IMAGE_ROOT + "sliderbutviolet.png", volumeAdjustment, 7 ) volumeSlider.set_inverted(False) volumeSlider.set_size_request(350,15) @@ -283,6 +285,7 @@ class miniTamTamMain(SubActivity): self.noteList= [] self.csnd.loopClear() for x in flatten( generator(self.rythmInstrument, self.beat, 0.8, self.regularity, self.reverb) ): + x.amplitude = x.amplitude * self.drumVolume noteOnsets.append(x.onset) notePitchs.append(x.pitch) n = Note(0, x.trackId, i, x) @@ -292,6 +295,10 @@ class miniTamTamMain(SubActivity): self.csnd.loopSetNumTicks( self.beat * Config.TICKS_PER_BEAT) self.drumFillin.unavailable( noteOnsets, notePitchs ) + def adjustDrumVolume(self): + for n in self.noteList: + self.csnd.loopUpdate(n[1], PARAMETER.AMPLITUDE, n[1].cs.amplitude*self.drumVolume, 1) + def handleClose(self,widget): if self.playStopButton.get_active() == True: self.playStopButton.set_active(False) @@ -335,9 +342,15 @@ class miniTamTamMain(SubActivity): self.tempoSliderBoxImgTop.set_from_file(Config.IMAGE_ROOT + 'tempo' + str(img) + '.png') def handleVolumeSlider(self, adj): - self.volume = int(adj.value) - self.csnd.setMasterVolume(self.volume) - img = int(self.scale(self.volume,0,100,0,3.9)) + self.instVolume = int(adj.value) + self.drumVolume = (100-self.instVolume)*0.01 + self.adjustDrumVolume() + self.drumFillin.setVolume(self.drumVolume) + instrumentVolume = self.instVolume*0.01 + self.loop.adjustLoopVolume(instrumentVolume) + self.sequencer.adjustSequencerVolume(instrumentVolume) + #self.csnd.setMasterVolume(self.volume) + img = int(self.scale(self.instVolume,0,100,0,3.9)) self.volumeSliderBoxImgTop.set_from_file(Config.IMAGE_ROOT + 'volume' + str(img) + '.png') def handleReverbSlider(self, adj): @@ -370,12 +383,12 @@ class miniTamTamMain(SubActivity): def handleGenerateBtn(self , widget , data=None): self.regenerate() - if (not self.playStopButton.get_active()): - self.handlePlayButton(self, widget) - self.playStopButton.set_active(True) - #this calls sends a 'clicked' event, - #which might be connected to handlePlayButton - self.playStartupSound() + if not self.playStopButton.get_active(): + self.handlePlayButton(self, widget) + self.playStopButton.set_active(True) + #this calls sends a 'clicked' event, + #which might be connected to handlePlayButton + self.playStartupSound() def enableKeyboard( self ): self.keyboardStandAlone = KeyboardStandAlone( self.sequencer.recording, self.sequencer.adjustDuration, self.csnd.loopGetTick, self.sequencer.getPlayState, self.loop ) @@ -412,7 +425,7 @@ class miniTamTamMain(SubActivity): self.playStopButton.set_active(False) else: self.playStopButton.set_active(True) - self.keyboardStandAlone.onKeyPress(widget, event) + self.keyboardStandAlone.onKeyPress(widget, event, self.instVolume*0.01) def onKeyRelease(self, widget, event): self.keyboardStandAlone.onKeyRelease(widget, event) |