aboutsummaryrefslogtreecommitdiff
path: root/demo/sgi/gl_panel/apanel/apanel.py
blob: a5adfdbee9d48ca9375864a05f5eb2a4591b9663 (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
#! /ufs/guido/bin/sgi/python

# A (too) trivial control panel to record a sound sample and play it back.
# Requires the audio built-in module.
# Requires the NASA AMES Panel Library.

import sys

import gl
import panel

panel.block(1)

import audio

def main():
	gl.foreground()
	gl.noport()
	#gl.prefposition(700, 850, 950, 970)
	wid = gl.winopen('audio demo')
	#
	panels = panel.defpanellist('apanel.s') # XXX
	p = panels[0]
	p.playbackbutton.back = p
	p.recordbutton.back = p
	p.sample = ''
	#
	def quit(a):
		sys.exit(0)
	#
	p.quitbutton.downfunc = quit
	#
	def playback(a):
		p = a.back
		gain = int(255.0*p.outputgain.val)
		a.val = 1.0
		a.fixact()
		panel.drawpanel()
		audio.setoutgain(gain)
		audio.write(p.sample)
		audio.setoutgain(0)
		a.val = 0.0
		a.fixact()
	#
	p.playbackbutton.downfunc = playback
	#
	def record(a):
		p = a.back
		size = int(10.0 * 8192.0 * p.recordsize.val)
		a.val = 1.0
		a.fixact()
		panel.drawpanel()
		audio.setoutgain(0)
		p.sample = audio.read(size)
		a.val = 0.0
		a.fixact()
	#
	p.recordbutton.downfunc = record
	#
	while 1:
		act = panel.dopanel()

main()