#+linux (defmethod om-draw-contents ((self soundPanel)) (call-next-method) (if (equal (state (player (editor self))) :recording) (om-with-focused-view self (om-with-fg-color self *om-red2-color* (om-with-font *om-default-font4b* (let ((halftext (round (om-string-size "Recording" *om-default-font4b*) 2))) (om-draw-string (- (round (w self) 2) halftext) (round (h self) 2) "Recording"))))) (if (and (om-sound-file-name (object (om-view-container self))) (om-sound-sample-rate (object (om-view-container self)))) ;;; TEMP : crashes if there is a name but no actual sound (let* ((thesound (object (om-view-container self))) (sr (if (om-sound-las-using-srate-? thesound) las-srate (om-sound-sample-rate thesound))) (size (om-sound-n-samples-current thesound)) (dur (or (and (and sr size) (/ size sr)) 0)) (dur-ms (round size (/ sr 1000.0))) (total-width (om-point-h (om-field-size self))) (thepicture (and dur (pic-to-draw thesound))) (window-h-size (om-point-h (om-view-size self))) (window-v-size (om-point-v (om-view-size self))) (stream-buffer (om-sound-sndbuffer thesound)) (system-etat (get-system-etat self)) (xmin (car (rangex self))) (pixmin (om-point-h (point2pixel self (om-make-point xmin 0) system-etat))) (xmax (cadr (rangex self))) (pixmax (om-point-h (point2pixel self (om-make-point xmax 0) system-etat))) (xview (- xmax xmin)) (pict-threshold (if (> size (* 5 sr)) (/ dur-ms 3.0) 15000)) (step-1smp 1) (step-100us (/ sr 10000.0)) (step-200us (/ sr 5000.0)) (step-400us (/ sr 2500.0)) (step-800us (/ sr 1250.0)) (step-1ms (/ sr 1000.0)) (step-2ms (/ sr 500.0)) (step-3ms (/ sr 333.3333)) (step-4ms (/ sr 250.0)) (step-5ms (/ sr 200.0)) (step-10ms (/ sr 100.0)) (step-20ms (/ sr 50.0)) (step-30ms (/ sr 33.3333)) (step-40ms (/ sr 25.0)) (step-50ms (/ sr 20.0))) (om-with-focused-view self (when (and thesound thepicture) (om-with-fg-color self *om-dark-gray-color* (om-draw-picture self thepicture (om-make-point 0 0) (om-subtract-points (om-field-size self) (om-make-point 0 15))) (om-with-fg-color self *om-blue-color* (loop for item in (markers thesound) for k = 0 then (+ k 1) do (om-with-line-size (if (member k (selection? self)) 2 1) (om-draw-line (round (* total-width item) dur) 0 (round (* total-width item) dur) (h self)) (om-fill-rect (- (round (* total-width item) dur) 2) 0 5 5))))) (when (grille-p self) (draw-grille self)) (draw-interval-cursor self) (unless thepicture (if (and (om-sound-file-name thesound) (zerop dur)) (om-with-focused-view self (om-draw-string 30 30 (format nil "Error: file ~s is empty" (om-sound-file-name (object (editor self)))))) (om-with-focused-view self (om-draw-string (round (w self) 2) (round (h self) 2) "...")) ) )))) (om-with-focused-view self (om-draw-string 10 40 (format nil "You have to load a file."))))))