1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!/usr/bin/env python
import pygtk
pygtk.require( '2.0' )
import gtk
import Config
from Util.ThemeWidgets import *
from Util.CSoundClient import new_csound_client
from Util import NoteDB
from Util.NoteDB import Note
from miniTamTam.RythmGenerator import generator
from SubActivity import SubActivity
class Welcome(SubActivity):
def __init__(self, set_mode):
SubActivity.__init__(self, set_mode)
actVBox = RoundVBox(fillcolor = Config.WS_BCK_COLOR, bordercolor = Config.WS_BCK_COLOR, radius = Config.PANEL_RADIUS)
actHBox = gtk.HBox()
for activity in ['mini','edit','type','synth']:
actBtnBox = RoundVBox(fillcolor = Config.WS_PANEL_COLOR, bordercolor = Config.WS_BCK_COLOR, radius = Config.PANEL_RADIUS)
actBtnBox.set_size_request(200,200)
actBtnBox.set_border_width(Config.PANEL_SPACING)
actBtn = ImageButton(Config.IMAGE_ROOT + activity +'Tam.png' , Config.IMAGE_ROOT + activity +'TamDown.png', Config.IMAGE_ROOT + activity +'TamOver.png' )
if activity != 'type': # temp
actBtn.connect('clicked', self.onActivityBtnClicked, activity)
actBtnBox.pack_start(actBtn,True,False,0)
actHBox.pack_start(actBtnBox,True,False,0)
title = gtk.Image()
title.set_from_file(Config.IMAGE_ROOT + 'TamTam.png')
actVBox.pack_start(actHBox,False,False, 200)
actVBox.pack_start(title,False,False, 0)
self.add(actVBox)
self.show_all()
self.activate_count = 0
def onActivityBtnClicked(self, widget, data):
widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
self.set_mode(data)
def onActivate(self, arg):
def flatten(ll):
rval = []
for l in ll:
rval += l
return rval
if self.activate_count == 0:
i = 0
csnd = new_csound_client()
beat = 8
density = 0.8
regularity = 0.77
reverb = 0.2
for x in flatten( generator('drum3kit', beat, density, regularity, reverb) ):
n = Note(0, x.trackId, i, x)
i = i + 1
csnd.loopPlay(n,1) # add as active
csnd.loopSetNumTicks( beat * Config.TICKS_PER_BEAT)
csnd.loopSetTick(0)
csnd.loopStart()
self.activate_count = self.activate_count + 1
self.show_all()
def onDeactivate(self):
if (self.activate_count == 1):
csnd = new_csound_client()
csnd.loopPause()
csnd.loopClear()
|