Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/miniTamTam
diff options
context:
space:
mode:
authorOli <olivier.belanger@umontreal.ca>2007-05-15 05:54:23 (GMT)
committer Oli <olivier.belanger@umontreal.ca>2007-05-15 05:54:23 (GMT)
commit7f34bf5948a29df7f68822b54c3f00a824890d05 (patch)
tree779d9d8f8c13f842ebcd22faa6f3442a8309e780 /miniTamTam
parent8185d0f72297b6922bdbe59279becc9dc2cd78d7 (diff)
volume slider in mini switched to drum-inst balance
Diffstat (limited to 'miniTamTam')
-rw-r--r--miniTamTam/Fillin.py7
-rw-r--r--miniTamTam/KeyboardStandAlone.py8
-rwxr-xr-xminiTamTam/Loop.py14
-rw-r--r--miniTamTam/MiniSequencer.py7
-rw-r--r--miniTamTam/miniTamTamMain.py43
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)