Script demo_stickFilter_py
|
|
1 from joy.decl import *
2 from joy import JoyApp, StickFilter
3 from pygame.event import Event as pygame_Event
4
8
10
11 sf = StickFilter(self)
12
13
14
15 evt = pygame_Event(JOYAXISMOTION,joy=0,axis=0,value=None)
16
17 sf.setLowpass( evt, 5 )
18
19 sf.setIntegrator( "joy0axis1", lower=-9, upper=9)
20
21 sf.setIntegrator( "midi3sc1slider2", lower=-9, upper=9, func = lambda x : (x-63.5)/64 )
22
23 sf.start()
24 self.sf = sf
25
26
27 self.timeToShow = self.onceEvery(0.25)
28
30
31 if self.timeToShow():
32 progress("State x %.3f y %.3f sc1slider2 %.3f" % (
33 self.sf.getValue("joy0axis0"), self.sf.getValue("joy0axis1"), self.sf.getValue("midi3sc1slider2")
34 ))
35
36 if evt.type in [JOYAXISMOTION,MIDIEVENT]:
37 self.sf.push(evt)
38 return
39
40
41 JoyApp.onEvent(self,evt)
42
43 if __name__=="__main__":
44 print """
45 Demonstration of the StickFilter plan
46 -------------------------------------
47
48 Shows the use of the StickFilter plan, which allows arbitrary
49 linear filters to be applied to input channels. This includes
50 integrating joystick inputs, smoothing encoder measurements,
51 etc.
52
53 The example shows how axis 0 can be set to low-pass filtering,
54 and axis 1 to integration.
55 """
56 app = StickFilterApp()
57 app.run()
58