aboutsummaryrefslogtreecommitdiff
path: root/demo/sgi/gl_panel/apanel
diff options
context:
space:
mode:
Diffstat (limited to 'demo/sgi/gl_panel/apanel')
-rwxr-xr-xdemo/sgi/gl_panel/apanel/apanel.py63
-rw-r--r--demo/sgi/gl_panel/apanel/apanel.s76
2 files changed, 139 insertions, 0 deletions
diff --git a/demo/sgi/gl_panel/apanel/apanel.py b/demo/sgi/gl_panel/apanel/apanel.py
new file mode 100755
index 0000000..de9a710
--- /dev/null
+++ b/demo/sgi/gl_panel/apanel/apanel.py
@@ -0,0 +1,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()
diff --git a/demo/sgi/gl_panel/apanel/apanel.s b/demo/sgi/gl_panel/apanel/apanel.s
new file mode 100644
index 0000000..7c94da2
--- /dev/null
+++ b/demo/sgi/gl_panel/apanel/apanel.s
@@ -0,0 +1,76 @@
+;;; This file was automatically generated by the panel editor.
+;;; If you read it into gnu emacs, it will automagically format itself.
+
+(panel (prop help creator:user-panel-help)
+(prop user-panel #t)
+(label "Audio Control Panel")
+(x 395)
+(y 69)
+(al (pnl_filled_vslider (name "outputgain")
+(prop help creator:user-act-help)
+(label "output gain")
+(x 6.5)
+(y 0.75)
+(w 0.4)
+(h 4.35)
+(val 0.329)
+(labeltype 13)
+(downfunc move-then-resize)
+)
+(pnl_frame (prop help creator:user-frame-help)
+(x 0.25)
+(y 2.75)
+(w 5.1)
+(h 2.3)
+(downfunc move-then-resize)
+(al (pnl_filled_hslider (name "recordsize")
+(prop help creator:user-act-help)
+(label "recording length")
+(x -0.75)
+(w 3.3)
+(h 0.4)
+(val 0.1)
+(labeltype 11)
+(downfunc move-then-resize)
+)
+(pnl_label (prop help creator:user-act-help)
+(label "(max 10 seconds)")
+(x -0.75)
+(y -0.75)
+(downfunc move-then-resize)
+)
+(pnl_wide_button (name "recordbutton")
+(prop help creator:user-act-help)
+(label "record from microphone...")
+(x -0.75)
+(y 0.75)
+(w 4.7)
+(downfunc move-then-resize)
+)
+)
+)
+(pnl_wide_button (name "playbackbutton")
+(prop help creator:user-act-help)
+(label "playback to speaker")
+(x 0.25)
+(y 2)
+(w 5.15)
+(downfunc move-then-resize)
+)
+(pnl_wide_button (name "quitbutton")
+(prop help creator:user-act-help)
+(label "quit")
+(x 0.25)
+(y 0.25)
+(w 1.75)
+(downfunc move-then-resize)
+)
+)
+)
+;;; Local Variables:
+;;; mode: scheme
+;;; eval: (save-excursion (goto-char (point-min)) (kill-line 3))
+;;; eval: (save-excursion (goto-char (point-min)) (replace-regexp "[ \n]*)" ")"))
+;;; eval: (indent-region (point-min) (point-max) nil)
+;;; eval: (progn (kill-line -3) (delete-backward-char 1) (save-buffer))
+;;; End: