Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Welcome.py
blob: 6255a5bd0599552a1237f78e45d793e85b988551 (plain)
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()