mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-19 17:40:15 +02:00
132 lines
4.0 KiB
Common Lisp
132 lines
4.0 KiB
Common Lisp
; machine.lsp -- machine/system-dependent definitions
|
|
; Windows
|
|
|
|
;; default behavior is to call SETUP-CONSOLE to get large white typescript
|
|
;;
|
|
;; set *setup-console* to nil in your personal init.lsp to override this behavior
|
|
;; (this may be necessary to work with emacs)
|
|
;;
|
|
(if (not (boundp '*setup-console*)) (setf *setup-console* t))
|
|
(if *setup-console* (setup-console))
|
|
|
|
(if (not (boundp '*default-sf-format*))
|
|
(setf *default-sf-format* snd-head-Wave))
|
|
|
|
(if (not (boundp '*default-sound-file*))
|
|
(compute-default-sound-file))
|
|
|
|
(if (not (boundp '*default-sf-dir*))
|
|
(setf *default-sf-dir* ""))
|
|
|
|
(if (not (boundp '*default-sf-mode*))
|
|
(setf *default-sf-mode* snd-mode-pcm))
|
|
|
|
(if (not (boundp '*default-sf-bits*))
|
|
(setf *default-sf-bits* 16))
|
|
|
|
(if (not (boundp '*default-plot-file*))
|
|
(setf *default-plot-file* "points.dat"))
|
|
|
|
;(if (not (boundp '*plotscript-file*))
|
|
; (setf *plotscript-file* "sys/unix/rs6k/plotscript"))
|
|
|
|
; local definition for play
|
|
(defmacro play (expr)
|
|
`(s-save-autonorm ,expr NY:ALL *default-sound-file* :play *soundenable*))
|
|
|
|
|
|
(defun r ()
|
|
(s-save (s-read *default-sound-file*) NY:ALL "" :play t)
|
|
)
|
|
|
|
|
|
; PLAY-FILE -- play a file
|
|
(defun play-file (name)
|
|
(s-save (s-read name) NY:ALL "" :play t))
|
|
|
|
|
|
; FULL-NAME-P -- test if file name is a full path or relative path
|
|
;
|
|
; (otherwise the *default-sf-dir* will be prepended
|
|
;
|
|
(defun full-name-p (filename)
|
|
(or (eq (char filename 0) #\\)
|
|
(eq (char filename 0) #\/)
|
|
(eq (char filename 0) #\.)
|
|
(and (> (length filename) 2)
|
|
(both-case-p (char filename 0))
|
|
(equal (char filename 1) #\:))))
|
|
|
|
; RELATIVE-PATH-P -- test if filename or path is a relative path
|
|
;
|
|
; note that properly converting a Windows path from relative to
|
|
; absolute is complicated by paths like: E:MYFILE.LSP
|
|
; Nyquist assumes that if there is a drive letter, the path is
|
|
; absolute, e.g. E:\TMP\MYFILE.LSP and if there is no drive,
|
|
; the path is relative, e.g. you cannot have \TMP\MYFILE.LSP
|
|
;
|
|
(defun relative-path-p (filename)
|
|
(or (< (length filename) 2)
|
|
(not (both-case-p (char filename 0)))
|
|
(not (equal (char filename 1) #\:))))
|
|
|
|
|
|
(setf *file-separator* #\\)
|
|
|
|
(defun ny:load-file () (load "*.*"))
|
|
(defun ny:reload-file () (load "*"))
|
|
|
|
|
|
; save the standard function to write points to a file
|
|
;
|
|
;(setfn s-plot-points s-plot)
|
|
|
|
;(defun array-max-abs (points)
|
|
; (let ((m 0.0))
|
|
; (dotimes (i (length points))
|
|
; (setf m (max m (abs (aref points i)))))
|
|
; m))
|
|
|
|
;(setf graph-width 600)
|
|
;(setf graph-height 220)
|
|
|
|
;(defun s-plot (snd &optional (n 600))
|
|
; (show-graphics)
|
|
; (clear-graphics)
|
|
; (cond ((soundp snd)
|
|
; (s-plot-2 snd n (/ graph-height 2) graph-height))
|
|
; (t
|
|
; (let ((gh (/ graph-height (length snd)))
|
|
; hs)
|
|
; (dotimes (i (length snd))
|
|
; (setf hs (s-plot-2 (aref snd i) n (+ (/ gh 2) (* i gh)) gh hs)))))))
|
|
;
|
|
;
|
|
;(defun s-plot-2 (snd n y-offset graph-height horizontal-scale)
|
|
; (prog ((points (snd-samples snd n))
|
|
; maxpoint horizontal-scale vertical-scale)
|
|
; (setf maxpoint (array-max-abs points))
|
|
; (moveto 0 y-offset)
|
|
; (lineto graph-width y-offset)
|
|
; (moveto 0 y-offset)
|
|
; (cond ((null horizontal-scale)
|
|
; (setf horizontal-scale (/ (float graph-width) (length points)))))
|
|
; (setf vertical-scale (- (/ (float graph-height) 2 maxpoint)))
|
|
; (dotimes (i (length points))
|
|
; (lineto (truncate (* horizontal-scale i))
|
|
; (+ y-offset (truncate (* vertical-scale (aref points i))))))
|
|
; (format t "X Axis: ~A to ~A (seconds)\n" (snd-t0 snd) (/ (length points) (snd-srate snd)))
|
|
; (format t "Y Axis: ~A to ~A\n" (- maxpoint) maxpoint)
|
|
; (format t "~A samples plotted.\n" (length points))
|
|
; (return horizontal-scale)
|
|
; ))
|
|
;
|
|
; S-EDIT - run the audio editor on a sound
|
|
;
|
|
;(defmacro s-edit (&optional expr)
|
|
; `(prog ()
|
|
; (if ,expr (s-save ,expr 1000000000 *default-sound-file*))
|
|
; (system (format nil "audio_editor ~A &"
|
|
; (soundfilename *default-sound-file*)))))
|
|
|