1#! /usr/bin/env python
2
3from Tkinter import *
4from tkSnack import *
5
6root = Tkinter.Tk()
7
8initializeSnack(root)
9"""AudioControllerSingleton().playLatency(100)"""
10
11s = Sound()
12
13filt = Filter('generator', 440.0)
14
15def play():
16   s.stop()
17   s.play(filter=filt)
18
19def stop():
20   s.stop()
21
22def config(arg):
23   type = var.get()
24   if var.get() == "sine" :
25      shape = 0.0
26   elif var.get() == "rectangle" :
27      shape = 0.5
28   elif var.get() == "triangle" :
29      shape = 0.5
30   elif var.get() == "sawtooth" :
31      type = "triangle"
32      shape = 0.0
33   else :
34      shape = 0.0
35   filt.configure(s1.get(), s2.get(), shape, type, -1)
36
37f = Frame(root)
38f.pack()
39
40s1 = Scale(f, from_=4000, to=50, label="Frequency", length=200, command=config)
41s1.pack(side='left')
42
43s2 = Scale(f, from_=32767, to=0, label="Amplitude", length=200, command=config)
44s2.pack(side='left')
45
46s1.set(440.0)
47s2.set(20000)
48
49var  = StringVar()
50var.set("sine")
51
52menu = OptionMenu(root, var, "sine", "rectangle", "triangle", "sawtooth", "noise")
53menu.pack()
54root.bind_all("<Button1-ButtonRelease>", config)
55
56fb = Frame(root)
57fb.pack(side='bottom')
58Button(fb, bitmap='snackPlay', command=play).pack(side='left')
59Button(fb, bitmap='snackStop', command=stop).pack(side='left')
60
61root.mainloop()
62