;;;; ;;;; w w w - s n d . s t k -- WWW for STk (Sound files reader) ;;;; ;;;; Copyright © 1996-1999 Erick Gallesio - I3S-CNRS/ESSI ;;;; ;;;; Permission to use, copy, modify, distribute,and license this ;;;; software and its documentation for any purpose is hereby granted, ;;;; provided that existing copyright notices are retained in all ;;;; copies and that this notice is included verbatim in any ;;;; distributions. No written agreement, license, or royalty fee is ;;;; required for any of the authorized uses. ;;;; This software is provided ``AS IS'' without express or implied ;;;; warranty. ;;;; ;;;; This version uses some of the enhancements done by Harvey J. Stein: ;;;; Copyright (c) 1995 Harvey J. Stein (hjstein@math.huji.ac.il) ;;;; ;;;; Author: Erick Gallesio [eg@unice.fr] ;;;; Creation date: 1-Nov-1996 23:39 ;;;; Last file update: 3-Sep-1999 19:57 (eg) ;;;; ;;;; Sound player must be placed in the shell variable PLAY_PRG. If this ;;;; variable is not set, the program "play" is launched. The play program ;;;; is called with one parameter: the file to play. (select-module WWW) (define sound-player (or (getenv "PLAY_PRG") "play")) ;============================================================================= ; ; U t i l i t i e s ; ;============================================================================= (define (get-sound-file url port) ;; Keep the suffix of the sound file, since some players need it (let* ((str-url (url:pretty-url url)) (tmpname (temporary-file-name)) (file (open-file tmpname "w"))) (when file (copy-port-image port file) (close-output-port file)) tmpname)) ;============================================================================= ; ; P l a y - s o u n d ; ;============================================================================= (define (play-sound txt fd url) (let* ((str-url (if (string? url) url (url:unparse-url url))) (in-file? (eq? (url:service url) 'file)) (sound (if in-file? (url:filename url) (get-sound-file url fd)))) (when sound ;; play sound file (system (string-append sound-player " " sound)) ;; If sound is in a temporary file, delete it (unless in-file? (remove-file sound))))) ;============================================================================= ;;;; Add the sound "viewer" (www:add-viewer (string->regexp "\\.au$|\\.wav$") play-sound) (provide "www-snd")