[CM] Unbound variable?
KJC
kcross@pop.linex.com
Thu, 25 Apr 2002 18:31:18 -0700
I'm new to Linux and configuring 'snd'. Can anyone tell me how to avoid the
'unbound variable' found in the 'misc.scm' file?
[18:00:17] Unbound variable: root/snd-5
; (load "/root/snd-5/misc.scm")
(while loading "/root/snd-5/misc.scm")
here's the complete file:
(root/snd-5 "examp.scm")
(root/snd-5 "extensions.scm")
(root/snd-5 "dsp.scm")
(root/snd-5 "draw.scm")
(root/snd-5 "env.scm")
(root/snd-5 "enved.scm")
(root/snd-5 "hooks.scm")
(root/snd-5 "marks.scm")
(root/snd-5 "mix.scm")
(root/snd-5 "moog.scm")
(root/snd-5 "play.scm")
(root/snd-5 "popup.scm")
(root/snd-5 "rubber.scm")
(root/snd-5 "zip.scm")
(root/snd-5 "special-menu.scm")
(root/snd-5 "new-backgrounds.scm")
(root/snd-5 "panic.scm")
(root/snd-5 "plugins-menu.scm")
(root/snd-5 "fft-menu.scm")
(root/snd-5 "contrib/edit123.scm")
(title-with-date)
(keep-file-dialog-open-upon-ok)
(keep-mix-dialog-open-upon-ok)
(make-hidden-controls-dialog)
(check-for-unsaved-edits #t)
(add-hook! after-open-hook show-disk-space)
;(define wd (make-pixmap (|Widget (cadr (main-widgets))) rough))
;(for-each-child (|Widget (cadr (main-widgets))) (lambda (w) (|XtSetValues w
(list |XmNbackgroundPixmap wd))))
(define wd (make-pixmap (|Widget (cadr (main-widgets))) rough))
;(define (paint-all widget)
; (for-each-child
; (|Widget widget)
; (lambda (w)
; (|XtSetValues w (list |XmNbackgroundPixmap wd)))))
(define (paint-all widget)
(for-each-child
(|Widget widget)
(lambda (w)
(if (not (or (|XmIsPushButton w)))
; (|XmIsArrowButton w)))
; (|XmIsToggleButton w)))
(|XtSetValues w (list |XmNbackgroundPixmap wd))))))
(paint-all (cadr (main-widgets)))
(for-each
(lambda (w)
(if w
(paint-all w)))
(dialog-widgets))
(add-hook! new-widget-hook paint-all)
(set! (mix-waveform-height) 32)
;;; (with-level-meters 2)
(add-mark-pane)
(add-sound-file-extension "ogg")
(add-sound-file-extension "OGG")
(add-sound-file-extension "sf")
(add-sound-file-extension "SF2")
(add-sound-file-extension "mp3")
(add-sound-file-extension "MP3")
(add-sound-file-extension "W01")
(add-sound-file-extension "W02")
(add-sound-file-extension "W03")
(add-sound-file-extension "W04")
(add-sound-file-extension "W05")
(add-sound-file-extension "W06")
(add-sound-file-extension "W07")
(add-sound-file-extension "W08")
(add-sound-file-extension "W09")
(add-sound-file-extension "W10")
(add-sound-file-extension "w01")
(add-sound-file-extension "w02")
(add-sound-file-extension "w03")
(add-sound-file-extension "w04")
(add-sound-file-extension "w05")
(add-sound-file-extension "w06")
(add-sound-file-extension "w07")
(add-sound-file-extension "w08")
(add-sound-file-extension "w09")
(add-sound-file-extension "w10")
;;;
;;; disable original Play radio button
;;;
;(add-hook! after-open-hook
; (lambda (snd)
; (|XtUnmanageChild (find-child (|Widget (list-ref (sound-widgets
snd) 2)) "play"))))
;;;
;;; main menu additions
;;;
;;; -------- add delete and rename options to the file menu
(define (add-delete-option)
(add-to-menu 0 "Delete" ; add Delete option to File menu
(lambda ()
;; close current sound and delete it (after
requesting confirmation)
(if (>= (selected-sound) 0)
(let ((filename (file-name)))
(close-sound)
(if (yes-or-no? (format #f "delete ~S?" filename))
(delete-file filename)))))
8)) ; place after File:New
(define (add-rename-option)
(let ((rename-dialog #f)
(rename-text #f))
(add-to-menu 0 "Rename"
(lambda ()
;; open dialog to get new name, save-as that name, open
(if (not rename-dialog)
;; make a standard dialog
(let* ((xdismiss (|XmStringCreate "Dismiss"
|XmFONTLIST_DEFAULT_TAG))
(xhelp (|XmStringCreate "Help" |XmFONTLIST_DEFAULT_TAG))
(xok (|XmStringCreate "DoIt" |XmFONTLIST_DEFAULT_TAG))
(titlestr (|XmStringCreate "Rename"
|XmFONTLIST_DEFAULT_TAG))
(new-dialog (|XmCreateTemplateDialog
(|Widget (cadr (main-widgets))) "Rename"
(list |XmNcancelLabelString xdismiss
|XmNhelpLabelString xhelp
|XmNokLabelString xok
|XmNautoUnmanage #f
|XmNdialogTitle titlestr
|XmNresizePolicy |XmRESIZE_GROW
|XmNnoResize #f
|XmNbackground
(|Pixel (snd-pixel (basic-color)))
|XmNtransient #f))))
(for-each
(lambda (button)
(|XtVaSetValues
(|XmMessageBoxGetChild new-dialog button)
(list |XmNarmColor (|Pixel (snd-pixel
(pushed-button-color)))
|XmNbackground (|Pixel (snd-pixel (basic-color))))))
(list |XmDIALOG_HELP_BUTTON |XmDIALOG_CANCEL_BUTTON
|XmDIALOG_OK_BUTTON))
(|XtAddCallback new-dialog |XmNcancelCallback
(lambda (w c i) (|XtUnmanageChild w)))
(|XtAddCallback new-dialog |XmNhelpCallback
(lambda (w c i)
(help-dialog "Rename" "Give a new
file name to rename the currently
selected sound.")))
(|XtAddCallback new-dialog |XmNokCallback
(lambda (w c i)
(let ((new-name
(|XmTextFieldGetString rename-text)))
(if (and (string? new-name)
(> (string-length new-name) 0)
(>= (selected-sound) 0))
(let ((current-name (file-name)))
(save-sound-as new-name)
(close-sound)
(rename-file current-name new-name)
(open-sound new-name)
(|XtUnmanageChild w))))))
(|XmStringFree xhelp)
(|XmStringFree xok)
(|XmStringFree xdismiss)
(|XmStringFree titlestr)
(set! rename-dialog new-dialog)
(let* ((mainform (|XtCreateManagedWidget "formd"
|xmRowColumnWidgetClass rename-dialog
(list |XmNleftAttachment
|XmATTACH_FORM
|XmNrightAttachment
|XmATTACH_FORM
|XmNtopAttachment
|XmATTACH_FORM
|XmNbottomAttachment
|XmATTACH_WIDGET
|XmNbottomWidget
(|XmMessageBoxGetChild rename-dialog
|XmDIALOG_SEPARATOR)
|XmNorientation |XmVERTICAL
|XmNbackground
(|Pixel (snd-pixel (basic-color))))))
(label (|XtCreateManagedWidget "new name:"
|xmLabelWidgetClass mainform
(list |XmNleftAttachment
|XmATTACH_FORM
|XmNrightAttachment
|XmATTACH_NONE
|XmNtopAttachment
|XmATTACH_FORM
|XmNbottomAttachment
|XmATTACH_FORM
|XmNbackground
(|Pixel (snd-pixel (basic-color)))))))
(set! rename-text
(|XtCreateManagedWidget "newname"
|xmTextFieldWidgetClass mainform
(list |XmNleftAttachment
|XmATTACH_WIDGET
|XmNleftWidget label
|XmNrightAttachment
|XmATTACH_FORM
|XmNtopAttachment
|XmATTACH_FORM
|XmNbottomAttachment
|XmATTACH_FORM
|XmNbackground
(|Pixel (snd-pixel (basic-color))))))
(|XtAddEventHandler rename-text |EnterWindowMask #f
(lambda (w context ev flag)
(|XmProcessTraversal w
|XmTRAVERSE_CURRENT)
(|XtSetValues w (list
|XmNbackground (white-pixel)))))
(|XtAddEventHandler rename-text |LeaveWindowMask #f
(lambda (w context ev flag)
(|XtSetValues w (list
|XmNbackground (|Pixel (snd-pixel
(basic-color))))))))))
(if (not (|XtIsManaged rename-dialog))
(|XtManageChild rename-dialog)
(raise-dialog rename-dialog)))
8)))
(install-searcher-with-colors (lambda (file) #t))
(add-delete-option)
(add-rename-option)
;;;
;;; poup menu stuff
;;;
(change-graph-popup-color "pink")
;;;(add-selection-popup)
(define (change-selection-popup-color new-color)
;; new-color can be the color name, an xm Pixel, a snd color, or a list of
rgb values (as in Snd's make-color)
(let ((color-pixel
(if (string? new-color) ; assuming X11 color names here
(let* ((shell (|Widget (cadr (main-widgets))))
(dpy (|XtDisplay shell))
(scr (|DefaultScreen dpy))
(cmap (|DefaultColormap dpy scr))
(col (|XColor)))
(if (= (|XAllocNamedColor dpy cmap new-color col col) 0)
(snd-error "can't allocate ~S" new-color)
(|pixel col)))
(if (color? new-color)
(|Pixel (snd-pixel new-color))
(if (|Pixel? new-color)
new-color
;; assume a list of rgb vals?
(|Pixel (snd-pixel (apply make-color new-color))))))))
(for-each-child
selection-popup-menu
(lambda (n)
(|XmChangeColor n color-pixel)))))
(change-selection-popup-color "coral")
(define (change-fft-popup-color new-color)
(let ((color-pixel
(if (string? new-color) ; assuming X11 color names here
(let* ((shell (|Widget (cadr (main-widgets))))
(dpy (|XtDisplay shell))
(scr (|DefaultScreen dpy))
(cmap (|DefaultColormap dpy scr))
(col (|XColor)))
(if (= (|XAllocNamedColor dpy cmap new-color col col) 0)
(snd-error "can't allocate ~S" new-color)
(|pixel col)))
(if (color? new-color)
(|Pixel (snd-pixel new-color))
(if (|Pixel? new-color)
new-color
;; assume a list of rgb vals?
(|Pixel (snd-pixel (apply make-color new-color))))))))
(for-each-child
fft-popup-menu
(lambda (n)
(|XmChangeColor n color-pixel)))))
(change-fft-popup-color "orange")
;(change-listener-popup-color "red")
(add-to-menu 1 #f #f) ; separator
;;;
;;; additions to Edit menu
;;;
(define selctr 0)
;;; -------- cut selection -> new file
(define (cut-selection->new)
(if (selection?)
(let ((new-file-name (format #f "sel-~D.snd" selctr)))
(set! selctr (+ selctr 1))
(save-selection new-file-name)
(delete-selection)
(open-sound new-file-name))))
;;; (add-to-menu 1 "Cut Selection -> New" cut-selection->new)
;;; -------- append sound (and append selection for lafs)
(define (append-sound name)
;; appends sound file
(insert-sound name (frames)))
(define (append-selection)
(if (selection?)
(insert-selection (frames))))
(add-to-menu 1 "Append Selection" append-selection)
;;; Replace with selection
;;;
(define (replace-with-selection)
(let ((beg (cursor))
(len (selection-length)))
(delete-samples beg len)
(insert-selection beg)))
(add-to-menu 1 "Replace with Selection" replace-with-selection)
;;; (add-to-menu 1 #f #f)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; open and convert stereo MP3 files automatically
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook! open-raw-sound-hook
(lambda (file choices)
(list 2 44100 (if (little-endian?) mus-lshort mus-bshort))))
(add-hook! open-hook
(lambda (filename)
(if (= (mus-sound-header-type filename) mus-raw)
(let ((rawfile (string-append filename ".raw")))
(system (format #f "mpg123 -s ~A > ~A" filename rawfile))
rawfile)
#f)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; open and convert stereo OGG files automatically
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook! open-raw-sound-hook
(lambda (file choices)
(list 2 44100 (if (little-endian?) mus-lshort mus-bshort))))
(add-hook! open-hook
(lambda (filename)
(if (= (mus-sound-header-type filename) mus-raw)
(let ((rawfile (string-append filename ".raw")))
(system (format #f "ogg123 -d raw -f ~A ~A" rawfile
filename))
rawfile)
#f)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; set up a region play list
;;; TODO: a GUI for this feature !
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (region-play-list data)
;; data is list of lists (list (list time region)...), time in secs
(for-each
(lambda (tone)
(let ((time (* 1000 (car tone)))
(region (cadr tone)))
(if (region? region)
(in time (lambda () (play-region region))))))
data))
;;; (region-play-list (list (list 0.0 0) (list 0.5 1) (list 1.0 2) (list 1.0
0)))
;;; Deselect function
;;;
(define (deselect-all)
(if (selection?)
(set! (selection-member? #t) #f)))
Thanks,
Keith