anchor.diff:  (defun on-update-slider ()
     (slider-value 'sl-seek (playback-get-pos)))
   
  +(defun on-slider-gain (new-gain)
  +  (playback-gain new-gain))
  +
   ;; bindings
   (bind-mouse-click 'b-options 'spawn-audio-options)
   (bind-mouse-click 'b-interpreter 'spawn-interpreter)
  
positive.code:   (create-text-button 'b-options "Options" "Audio options")
    (create-text-button 'b-interpreter "Interpreter" "GLISP Interpreter")
    (create-slider 'sl-seek)
    (layout-add-component 'l-buttons 'b-play 30.0 30.0 30.0)
    (layout-add-component 'l-buttons 'b-pause 30.0 30.0 30.0)
    (layout-add-component 'l-buttons 'b-stop 30.0 30.0 30.0)
    (layout-add-component 'l-buttons 'b-options 80.0 80.0 80.0)
    (layout-add-component 'l-buttons 'b-interpreter 80.0 80.0 80.0)
    (layout-add-component 'l-buttons 'sl-seek -0.1 -1.0 -0.1)
    'l-buttons)
  
  (create-layout 'l-main nil)
  
negative.code: (bind-mouse-click 'b-stop 'on-stop)
  (bind-mouse-double-click 'playlist 'on-playlist-click '(selected-row))
  (bind-slider-drag-end 'sl-seek 'on-slider-up '(slider-value))
  (bind-slider-changed 'sl-gain 'on-slider-gain '(slider-value))
  (create-timer 'update-slider 'on-update-slider)
  (bind-playback 'playback-changed)
  
  