anchor.diff:  (define-subwidget (main-window viz-widget) (make-instance 'fft-drawer)
     "The fft-drawer itself.")
   
  -(define-subwidget (main-window media-source) (q+:make-phonon-mediasource ""))
  +;; (define-subwidget (main-window media-object) 
  +;;   (q+:set-tick-interval media-object 1000))
   
  -(define-subwidget (main-window audio-output) (q+:make-phonon-audiooutput (q+:phonon.music-category) main-window))
  -
  -(define-subwidget (main-window media-object) (q+:make-phonon-mediaobject main-window)
  -  (q+:set-tick-interval media-object 1000)
  -  (q+:phonon-create-path media-object audio-output))
  +;; (define-subwidget (main-window audio-output) 
  +;;   (q+:phonon-create-path media-object audio-output))
   
   (define-slot (main-window open open-file) ()
     (let* ((filename (q+:qfiledialog-get-open-file-name main-window "Select File"
  
positive.code:                                  1.0
                                   (/ width height 1.0)))
               
               (win-center (ceiling (* 44100 (interpolate 0.0 song-duration
                                                          current-location total-frames))))
               (fft-window-size 1024)
               (left-fft-data (bordeaux-fft:windowed-fft (mp3-file-left-channel the-mp3) win-center fft-window-size))
               (right-fft-data (bordeaux-fft:windowed-fft (mp3-file-right-channel the-mp3) win-center fft-window-size))
               (frame (generate-frame left-fft-data right-fft-data)))
          
          ;; Local functions for mapping logical coordinates to physical coordinates
          (flet (
                 ;; xmapper maps logical x coordinates in the range x-min to x-max to
                 ;; screen coordinates in the range 0 to width
                 (xmapper (x) (map-val (* x-aspect-ratio x) -200.0 200.0 0 width))
  
                 ;; ymapper does the same thing, but for y coordinates
                 (ymapper (y) (map-val (* y-aspect-ratio y) 0.0 200.0 0 height)))
  
            ;; Actual drawing goes here.  In this case, just a line.
            (loop for vals in frame
               for idx from 0
               do
                 (q+:draw-line painter
                               (truncate (xmapper (- (car vals)))) (truncate (ymapper (* 1.25 idx)))
                               (truncate (xmapper (cdr vals))) (truncate (ymapper (* 1.25 idx))))))))))
  
  
  ;; Create all of the controls
  
negative.code:   (setf (q+:single-shot timer) nil))
  
  (define-initializer (fft-drawer setup)
    (q+:start timer (round (/ 1000 *fps*))))
  
  (define-slot (fft-drawer tick) ()
    (declare (connected timer (timeout)))
    (if the-mp3
        (incf current-location))
    ;; (format t "Drawing frame: ~a ~a~%" current-location fft-drawer)
    (q+:update fft-drawer))
  
  (define-override (fft-drawer paint-event paint) (ev)
    "Handle paint events."
    ;; (format t "~a ~a ~a~%" current-location the-mp3 ev)
  