;;; Chickadee Game Toolkit ;;; Copyright © 2020, 2019 David Thompson ;;; ;;; Licensed under the Apache License, Version 2.0 (the "License"); ;;; you may not use this file except in compliance with the License. ;;; You may obtain a copy of the License at ;;; ;;; http://www.apache.org/licenses/LICENSE-2.0 ;;; ;;; Unless required by applicable law or agreed to in writing, software ;;; distributed under the License is distributed on an "AS IS" BASIS, ;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ;;; See the License for the specific language governing permissions and ;;; limitations under the License. ;;; Commentary: ;; ;; Audio API. ;; ;;; Code: (define-module (chickadee audio) #:use-module (chickadee audio mpg123) #:use-module ((chickadee audio openal) #:prefix openal:) #:use-module (chickadee audio vorbis) #:use-module (chickadee audio wav) #:use-module (chickadee data array-list) #:use-module (chickadee math) #:use-module (chickadee math vector) #:use-module (chickadee utils) #:use-module (ice-9 format) #:use-module (ice-9 match) #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-9 gnu) #:export (init-audio quit-audio update-audio load-audio audio? streaming-audio? static-audio? audio-mode audio-duration audio-bits-per-sample audio-channels audio-sample-rate audio-play make-source source? streaming-source? static-source? source-playing? source-paused? source-stopped? source-pitch source-volume source-min-volume source-max-volume source-max-distance source-reference-distance source-rolloff-factor source-cone-outer-volume source-cone-inner-angle source-cone-outer-angle source-position source-velocity source-direction source-relative? source-play source-pause source-toggle source-stop source-rewind set-source-audio! set-source-loop! set-source-pitch! set-source-volume! set-source-min-volume! set-source-max-volume! set-source-max-distance! set-source-reference-distance! set-source-rolloff-factor! set-source-cone-outer-volume! set-source-cone-inner-angle! set-source-cone-outer-angle! set-source-position! set-source-velocity! set-source-direction! set-source-relative!) #:re-export ((openal:listener-volume . listener-volume) (openal:listener-position . listener-position) (openal:listener-velocity . listener-velocity) (openal:listener-orientation . listener-orientation) (openal:set-listener-volume! . set-listener-volume!) (openal:set-listener-position! . set-listener-position!) (openal:set-listener-velocity! . set-listener-velocity!) (openal:set-listener-orientation! . set-listener-orientation!) (openal:doppler-factor . doppler-factor) (openal:speed-of-sound . speed-of-sound) (openal:distance-model . distance-model) (openal:set-doppler-factor! . set-doppler-factor!) (openal:set-speed-of-sound! . set-speed-of-sound!) (openal:set-distance-model! . set-distance-model!))) (define %default-cone-outer-angle (* 2.0 pi)) (define %default-max-distance (expt 2 31)) (define-record-type