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-04-10 03:20:28 (GMT)
committer Oli <olivier.belanger@umontreal.ca>2007-04-10 03:20:28 (GMT)
commit04c4ab72b20e66fab9a8740ea470ffe325207dec (patch)
treed71c35bbbba9e9b7035923dda31ad9988dd3ea7b /miniTamTam
parent47581650269a602745cdcde8df787f7470bddf8a (diff)
new: loops in miniTamTam
Diffstat (limited to 'miniTamTam')
-rw-r--r--miniTamTam/KeyboardStandAlone.py21
-rw-r--r--miniTamTam/miniTamTamMain.py7
2 files changed, 23 insertions, 5 deletions
diff --git a/miniTamTam/KeyboardStandAlone.py b/miniTamTam/KeyboardStandAlone.py
index a44d1a7..b0ba5d1 100644
--- a/miniTamTam/KeyboardStandAlone.py
+++ b/miniTamTam/KeyboardStandAlone.py
@@ -3,7 +3,6 @@ pygtk.require( '2.0' )
import gtk
import Config
-#TODO: this is a suprising dependency... what's up??
from Generation.GenerationConstants import GenerationConstants
from Util.NoteDB import Note
from Util.CSoundNote import CSoundNote
@@ -12,17 +11,18 @@ from Util.CSoundClient import new_csound_client
KEY_MAP_PIANO = Config.KEY_MAP_PIANO
class KeyboardStandAlone:
- def __init__( self, recordingFunction, adjustDurationFunction, getCurrentTick, getPlayState ):
+ def __init__( self, recordingFunction, adjustDurationFunction, getCurrentTick, getPlayState, loop ):
self.csnd = new_csound_client()
self.recording = recordingFunction
self.adjustDuration = adjustDurationFunction
-# self.getCurrentTick = getCurrentTick
self.getPlayState = getPlayState
self.key_dict = dict()
self.onset_dict = dict()
self.trackCount = 0
self.instrument = 'flute'
self.reverb = 0
+ self.loop = loop
+ self.loopMode = False
def setInstrument( self , instrument ):
self.instrument = instrument
@@ -31,10 +31,21 @@ class KeyboardStandAlone:
self.reverb = reverb
def onKeyPress(self,widget,event):
+ if event.hardware_keycode == 50:
+ if self.loopMode:
+ self.loopMode = False
+ else:
+ self.loopMode = True
+ return
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):
return
+
+ if key >= 39 and self.loopMode:
+ self.loop.start(KEY_MAP_PIANO[key], self.instrument, self.reverb)
+ return
+
# Assign on which track the note will be created according to the number of keys pressed
track = self.trackCount
self.trackCount += 1
@@ -94,6 +105,10 @@ class KeyboardStandAlone:
key = event.hardware_keycode
if KEY_MAP_PIANO.has_key(key):
+ if key >= 39 and self.loopMode:
+ self.loop.stop(KEY_MAP_PIANO[key])
+ return
+
csnote = self.key_dict[key]
if Config.INSTRUMENTSID[ csnote.instrumentId ].csoundInstrumentId == Config.INST_TIED:
csnote.duration = .5
diff --git a/miniTamTam/miniTamTamMain.py b/miniTamTam/miniTamTamMain.py
index c7831db..b9a284c 100644
--- a/miniTamTam/miniTamTamMain.py
+++ b/miniTamTam/miniTamTamMain.py
@@ -18,6 +18,7 @@ from Util.CSoundClient import new_csound_client
from Fillin import Fillin
from KeyboardStandAlone import KeyboardStandAlone
from MiniSequencer import MiniSequencer
+from Loop import Loop
from RythmGenerator import *
from SynthLab.SynthLabWindow import SynthLabWindow
from Util.Trackpad import Trackpad
@@ -45,6 +46,7 @@ class miniTamTamMain(SubActivity):
self.drumFillin = Fillin( self.beat, self.tempo, self.rythmInstrument, self.reverb )
self.regenerate()
self.sequencer= MiniSequencer(self.recordStateButton)
+ self.loop = Loop()
self.csnd.loopSetTempo(self.tempo)
self.noteList = []
time.sleep(0.001)
@@ -55,7 +57,7 @@ class miniTamTamMain(SubActivity):
self.csnd.setMasterVolume(self.volume)
self.sequencer.beat = self.beat
-
+ self.loop.beat = self.beat
self.tooltips = gtk.Tooltips()
self.mainWindowBox = gtk.HBox()
@@ -313,6 +315,7 @@ class miniTamTamMain(SubActivity):
def handleBeatSliderRelease(self, widget, event):
self.beat = int(widget.get_adjustment().value)
self.sequencer.beat = self.beat
+ self.loop.beat = self.beat
self.drumFillin.setBeats( self.beat )
self.regenerate()
@@ -372,7 +375,7 @@ class miniTamTamMain(SubActivity):
self.playStartupSound()
def enableKeyboard( self ):
- self.keyboardStandAlone = KeyboardStandAlone( self.sequencer.recording, self.sequencer.adjustDuration, self.csnd.loopGetTick, self.sequencer.getPlayState )
+ self.keyboardStandAlone = KeyboardStandAlone( self.sequencer.recording, self.sequencer.adjustDuration, self.csnd.loopGetTick, self.sequencer.getPlayState, self.loop )
self.add_events(gtk.gdk.BUTTON_PRESS_MASK)
def setInstrument( self , instrument ):