Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOli <olpc@localhost.localdomain>2007-02-17 23:21:09 (GMT)
committer Oli <olpc@localhost.localdomain>2007-02-17 23:21:09 (GMT)
commit0ed64a99c5d2b139f50ac0eb1eff515d2519c343 (patch)
tree1d07df08c5d2d6389dd9dd1021a5cd77e36b1e34
parent1d4a7de608cba27fa533fa20e2f75fe48cbc5f8f (diff)
new controls in synthLab
-rw-r--r--Player/KeyboardStandAlone.py5
-rw-r--r--Player/RythmPlayer.py18
-rw-r--r--Player/StandalonePlayer.py2
-rw-r--r--Resources/tooltips_en.py16
-rw-r--r--Resources/univorc.csd6
-rwxr-xr-xSynthLab/SynthLabConstants.py8
-rw-r--r--SynthLab/SynthLabParametersWindow.py9
-rw-r--r--SynthLab/SynthLabWindow.py5
8 files changed, 49 insertions, 20 deletions
diff --git a/Player/KeyboardStandAlone.py b/Player/KeyboardStandAlone.py
index c3d53cf..0931e19 100644
--- a/Player/KeyboardStandAlone.py
+++ b/Player/KeyboardStandAlone.py
@@ -6,6 +6,7 @@ import Config
#TODO: this is a suprising dependency... what's up??
from Generation.GenerationConstants import GenerationConstants
from Util.CSoundNote import CSoundNote
+from Util.Clooper.SClient import sc_loop_getTick
KEY_MAP_PIANO = Config.KEY_MAP_PIANO
@@ -14,7 +15,7 @@ class KeyboardStandAlone:
self.csnd = client
self.recording = recordingFunction
self.adjustDuration = adjustDurationFunction
- self.getCurrentTick = getCurrentTick
+# self.getCurrentTick = getCurrentTick
self.getPlayState = getPlayState
self.key_dict = dict()
self.onset_dict = dict()
@@ -78,7 +79,7 @@ class KeyboardStandAlone:
reverbSend = self.reverb)
self.key_dict[key].playNow(0.3)
if self.getPlayState():
- recOnset = self.getCurrentTick() / 3
+ recOnset = sc_loop_getTick() / 3
self.onset_dict[key] = recOnset
self.recording( CSoundNote(
onset = recOnset,
diff --git a/Player/RythmPlayer.py b/Player/RythmPlayer.py
index 0de57e1..1142cd8 100644
--- a/Player/RythmPlayer.py
+++ b/Player/RythmPlayer.py
@@ -5,6 +5,7 @@ import gobject
import time
import Config
from Util.CSoundNote import CSoundNote
+from Util.Clooper.SClient import sc_loop_getTick
class RythmPlayer:
def __init__( self, client, recordButtonState ):
@@ -24,7 +25,7 @@ class RythmPlayer:
self.playState = 0
def getCurrentTick( self ):
- return self.csnd.loopGetTick()
+ return sc_loop_getTick()
def setTempo( self, tempo ):
self.tempo = tempo
@@ -40,6 +41,7 @@ class RythmPlayer:
self.upBeats = [i+2 for i in self.beats]
self.realTick = [i for i in range(self.beat*4)]
self.startLooking = 1
+ self.startPlayback()
def getPlayState( self ):
return self.playState
@@ -67,18 +69,20 @@ class RythmPlayer:
for note in self.sequencer:
if note.pitch == pitch and note.onset == onset:
if offset > note.onset:
- note.duration = ( offset - note.onset ) * 3 + 5
+ note.duration = ( offset - note.onset ) * 3 + 3
else:
- note.duration = ( (offset+(self.beat*4)) - note.onset ) * 3 + 5
+ note.duration = ( (offset+(self.beat*4)) - note.onset ) * 3 + 3
+ theNote = (note.onset, note)
+ #sc_loop_addScoreEvent15( theNote )
self.pitchs.remove( pitch )
def handleClock( self ):
if self.tick != self.getCurrentTick() / 3:
self.tick = self.getCurrentTick() / 3
- if self.sequencer and self.sequencerPlayback:
- for note in self.sequencer:
- if self.realTick[note.onset-1] == self.tick:
- self.csnd.sendText(note.getText(self.tickDuration,0)) #play
+# if self.sequencer and self.sequencerPlayback:
+# for note in self.sequencer:
+# if self.realTick[note.onset] == self.tick:
+# self.csnd.sendText(note.getText(self.tickDuration,0)) #play
if self.startLooking:
self.sequencerPlayback = 0
diff --git a/Player/StandalonePlayer.py b/Player/StandalonePlayer.py
index e4a8b67..7c22c47 100644
--- a/Player/StandalonePlayer.py
+++ b/Player/StandalonePlayer.py
@@ -18,7 +18,7 @@ from Player.KeyboardStandAlone import KeyboardStandAlone
from Player.RythmPlayer import RythmPlayer
from Player.RythmGenerator import *
from SynthLab.SynthLabWindow import SynthLabWindow
-from Player.Trackpad import Trackpad
+from Util.Trackpad import Trackpad
Tooltips = Config.Tooltips
diff --git a/Resources/tooltips_en.py b/Resources/tooltips_en.py
index 748d2dd..2ad98ce 100644
--- a/Resources/tooltips_en.py
+++ b/Resources/tooltips_en.py
@@ -46,6 +46,18 @@ class Tooltips:
DECAY = 'Decay'
SUSTAIN = 'Sustain'
RELEASE = 'Release'
+
+ TRACKPADX = 'Trackpad X'
+ MIN = MIN
+ MAX = MAX
+ NOTUSED = 'Not used'
+ NOTUSED = NOTUSED
+
+ TRACKPADY = 'Trackpad Y'
+ MIN = MIN
+ MAX = MAX
+ NOTUSED = 'Not used'
+ NOTUSED = NOTUSED
#Source
FM = 'FM'
@@ -139,10 +151,12 @@ class Tooltips:
MIX = MIX
GAIN = GAIN
- SYNTHTYPES = [[LFO, RANDOM, ADSR], [FM, BUZZ, VCO, PLUCK, NOISE, SAMPLE, VOICE, GRAIN], [DELAY, DIST, FILTER, RINGMOD, REVERB, HARMON], [ADSR]]
+ SYNTHTYPES = [[LFO, RANDOM, ADSR, TRACKPADX, TRACKPADY], [FM, BUZZ, VCO, PLUCK, NOISE, SAMPLE, VOICE, GRAIN], [DELAY, DIST, FILTER, RINGMOD, REVERB, HARMON], [ADSR]]
SYNTHPARA = { 'lfo': [AMP, FREQ, WAVEFORM, OFFSET],
'rand': [MIN, MAX, FREQ, SEED],
'adsr': [ATTACK, DECAY, SUSTAIN, RELEASE],
+ 'trackpadX': [MIN, MAX, NOTUSED, NOTUSED],
+ 'trackpadY': [MIN, MAX, NOTUSED, NOTUSED],
'fm': [CAR, MOD, INDEX, GAIN],
'buzz': [FREQ, NHARM, FSLOPE, GAIN],
'vco': [FREQ, WAVEFORM, FSLOPE, GAIN],
diff --git a/Resources/univorc.csd b/Resources/univorc.csd
index b2ee4a7..8f5932c 100644
--- a/Resources/univorc.csd
+++ b/Resources/univorc.csd
@@ -12,6 +12,8 @@ gainrev init 0
gaoutL init 0
gaoutR init 0
gasynth init 0
+gkTrackpadX init 0
+gkTrackpadY init 0
/*****************************
matrix for TamTam's SynthLab
@@ -210,6 +212,10 @@ elseif iControlType == 2 then
kControl randi irange, iPar3, iPar4-.001, 0, irange+iPar1
elseif iControlType == 3 then
kControl adsr iPar1*idur+.0001, iPar2*idur, iPar3, iPar4*idur
+elseif iControlType == 4 then
+ kControl = ((gkTrackpadX+1)*.5)*(iPar2-iPar1)+iPar1
+elseif iControlType == 5 then
+ kControl = ((gkTrackpadY+1)*.5)*(iPar2-iPar1)+iPar1
endif
xout kControl
diff --git a/SynthLab/SynthLabConstants.py b/SynthLab/SynthLabConstants.py
index 0f8d23c..dfecb89 100755
--- a/SynthLab/SynthLabConstants.py
+++ b/SynthLab/SynthLabConstants.py
@@ -42,6 +42,8 @@ class SynthLabConstants:
TYPES = { 'lfo': [.5, 1, 0, 0, 0, 1, 0, 20, 0, 5, 0, 1, FLOAT, FLOAT, INTEGER],
'rand': [.5, 1.5, 2, 0, 0, 2, 0, 2, 0, 20, 0, 1, FLOAT, FLOAT, FLOAT],
'adsr': [.02, .05, .8, .1, 0, 1, 0, 1, 0, 1, 0, 1, FLOAT, FLOAT, FLOAT],
+ 'trackpadX': [0, 1, 0, 0, -1, 1, 0, 2, 0, 1, 0, 1, FLOAT, FLOAT, FLOAT],
+ 'trackpadY': [0, 1, 0, 0, -1, 1, 0, 2, 0, 1, 0, 1, FLOAT, FLOAT, FLOAT],
'fm': [1, .5, 5, 1, 0, 2, 0, 2, 0, 10, 0, 2, FLOAT, FLOAT, FLOAT],
'buzz': [1, 30, .85, 1, 0, 2, 0, 40, 0, 1, 0, 2, FLOAT, INTEGER, FLOAT],
'vco': [1, 1, .2, 1, 0, 2, 0, 2, 0, .5, 0, 2, FLOAT, INTEGER, FLOAT],
@@ -57,9 +59,9 @@ class SynthLabConstants:
'reverb': [1.5, 3000, .5, 1, 0, 4, 100, 7000, 0, 1, 0, 2, FLOAT, FLOAT, FLOAT],
'harmon': [1.25, .04, .5, 1, 0, 2, 0, 1, 0, 1, 0, 2, FLOAT, FLOAT, FLOAT]}
- CONTROL_TYPES = ['lfo', 'rand', 'adsr']
- CONTROL_TYPES_SEL = ['lfosel', 'randsel', 'adsrsel']
- CONTROL_TYPES_PLUS = ['lfo+', 'rand+', 'adsr+']
+ CONTROL_TYPES = ['lfo', 'rand', 'adsr', 'trackpadX', 'trackpadY']
+ CONTROL_TYPES_SEL = ['lfosel', 'randsel', 'adsrsel', 'trackpadXsel', 'trackpadYsel']
+ CONTROL_TYPES_PLUS = ['lfo+', 'rand+', 'adsr+', 'trackpadX+', 'trackpadY+']
SOURCE_TYPES = ['fm', 'buzz', 'vco', 'pluck', 'noise', 'sample', 'voice', 'grain']
SOURCE_TYPES_SEL = ['fmsel', 'buzzsel', 'vcosel', 'plucksel', 'noisesel', 'samplesel', 'voicesel', 'grainsel']
SOURCE_TYPES_PLUS = ['fm+', 'buzz+', 'vco+', 'pluck+', 'noise+', 'sample+', 'voice+', 'grain+']
diff --git a/SynthLab/SynthLabParametersWindow.py b/SynthLab/SynthLabParametersWindow.py
index bfdb351..79fd371 100644
--- a/SynthLab/SynthLabParametersWindow.py
+++ b/SynthLab/SynthLabParametersWindow.py
@@ -6,11 +6,12 @@ import Config
from Util.ThemeWidgets import *
from SynthLab.SynthLabConstants import SynthLabConstants
from SynthLab.Parameter import Parameter
+from Util.Trackpad import Trackpad
Tooltips = Config.Tooltips
class SynthLabParametersWindow( gtk.Window ):
- def __init__( self, instanceID, synthObjectsParameters, writeTables, playNoteFunction ):
+ def __init__( self, instanceID, synthObjectsParameters, writeTables, playNoteFunction, client ):
gtk.Window.__init__( self, gtk.WINDOW_TOPLEVEL )
self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
self.set_title("SynthLab Parameters")
@@ -32,6 +33,8 @@ class SynthLabParametersWindow( gtk.Window ):
self.synthObjectsParameters = synthObjectsParameters
self.writeTables = writeTables
self.playNoteFunction = playNoteFunction
+ self.csnd = client
+ self.trackpad = Trackpad( self, self.csnd )
self.playingPitch = []
self.parameterOpen = 0
self.clockStart = 0
@@ -55,7 +58,7 @@ class SynthLabParametersWindow( gtk.Window ):
self.initRadioButton( types, types2, typesLabelList, self.typeCallback, self.typeBox, self.choosenType )
self.mainBox.pack_start(self.typeBox)
- typeText = Tooltips.SYNTHTYPES[self.objectType][self.choosenType]
+ typeText = Tooltips.SYNTHTYPES[self.objectType][self.choosenType]
self.text = gtk.Label(typeText)
self.mainBox.pack_start(self.text)
@@ -138,7 +141,6 @@ class SynthLabParametersWindow( gtk.Window ):
def onKeyPress(self,widget,event):
key = event.hardware_keycode
- print 'from slider window: %ld' % key
if key not in Config.KEY_MAP:
return
midiPitch = Config.KEY_MAP[key]
@@ -156,7 +158,6 @@ class SynthLabParametersWindow( gtk.Window ):
def resize( self ):
selectedType = SynthLabConstants.CHOOSE_TYPE[self.objectType][self.choosenType]
-
slider1Init = SynthLabConstants.TYPES[selectedType][0]
slider2Init = SynthLabConstants.TYPES[selectedType][1]
slider3Init = SynthLabConstants.TYPES[selectedType][2]
diff --git a/SynthLab/SynthLabWindow.py b/SynthLab/SynthLabWindow.py
index 4686915..979aba7 100644
--- a/SynthLab/SynthLabWindow.py
+++ b/SynthLab/SynthLabWindow.py
@@ -16,7 +16,7 @@ from SynthLab.SynthLabParametersWindow import SynthLabParametersWindow
from SynthLab.SynthObjectsParameters import SynthObjectsParameters
from SynthLab.SynthLabConstants import SynthLabConstants
from SynthLab.Parameter import Parameter
-
+from Util.Trackpad import Trackpad
Tooltips = Config.Tooltips
class SynthLabWindow( gtk.Window ):
@@ -27,6 +27,7 @@ class SynthLabWindow( gtk.Window ):
self.set_border_width(Config.MAIN_WINDOW_PADDING)
self.set_keep_above(False)
self.csnd = client
+ self.trackpad = Trackpad( self, self.csnd )
self.table = table
self.closeCallback = closeCallback
self.set_decorated(False)
@@ -343,7 +344,7 @@ class SynthLabWindow( gtk.Window ):
if self.bounds[i][0] < event.x < self.bounds[i][2] and self.bounds[i][1] < event.y < self.bounds[i][3]:
if self.instanceOpen:
self.synthLabParametersWindow.destroy()
- self.synthLabParametersWindow = SynthLabParametersWindow( i, self.synthObjectsParameters, self.writeTables, self.playNote )
+ self.synthLabParametersWindow = SynthLabParametersWindow( i, self.synthObjectsParameters, self.writeTables, self.playNote, self.csnd )
self.instanceOpen = 1
def handleMotion( self, widget, event ):