initial import from racket-sound -> racket-audio
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
#lang racket/base
|
||||
|
||||
|
||||
(require ffi/unsafe
|
||||
ffi/unsafe/define
|
||||
"private/utils.rkt"
|
||||
;"libao-ffi.rkt"
|
||||
)
|
||||
|
||||
(provide ao_create_async
|
||||
ao_real_output_bits_async
|
||||
ao_stop_async
|
||||
ao_play_async
|
||||
ao_is_at_music_id_async
|
||||
ao_is_at_second_async
|
||||
ao_music_duration_async
|
||||
ao_bufsize_async
|
||||
ao_clear_async
|
||||
ao_pause_async
|
||||
ao_set_volume_async
|
||||
ao_volume_async
|
||||
make-BufferInfo_t
|
||||
)
|
||||
|
||||
(define _BufferType_t
|
||||
(_enum '(ao = 1
|
||||
flac = 2
|
||||
mp3 = 3
|
||||
ogg = 4
|
||||
)))
|
||||
|
||||
;#define AO_FMT_LITTLE 1
|
||||
;#define AO_FMT_BIG 2
|
||||
;#define AO_FMT_NATIVE 4
|
||||
|
||||
(define _Endian_t
|
||||
(_enum '(little-endian = 1
|
||||
big-endian = 2
|
||||
native-endian = 4
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define-cstruct _BufferInfo_t
|
||||
(
|
||||
[type _BufferType_t]
|
||||
[sample_bits _int]
|
||||
[sample_rate _int]
|
||||
[channels _int]
|
||||
[endiannes _Endian_t]
|
||||
))
|
||||
|
||||
|
||||
(when (eq? (system-type 'os) 'windows)
|
||||
(void (get-lib '("libao-1.2.2") '(#f))))
|
||||
|
||||
(define lib (get-lib '("ao-play-async" "libao-play-async") '(#f)))
|
||||
;(define lib (ffi-lib "/home/hans/src/racket/racket-sound-lib/lib/linux-x86_64/libao-play-async.so"))
|
||||
(define-ffi-definer define-libao-async lib
|
||||
#:default-make-fail make-not-available)
|
||||
|
||||
(define _libao-async-handle-pointer (_cpointer 'ao-async-handle))
|
||||
|
||||
;extern int ao_async_version()
|
||||
(define-libao-async ao_async_version (_fun -> _int))
|
||||
|
||||
;extern void *ao_create_async(int bits, int rate, int channel, int byte_format);
|
||||
(define-libao-async ao_create_async(_fun _int _int _int _Endian_t _string/utf-8 -> _libao-async-handle-pointer))
|
||||
|
||||
;extern int ao_real_output_bits(void *handle)
|
||||
(define-libao-async ao_real_output_bits_async
|
||||
(_fun _libao-async-handle-pointer -> _int))
|
||||
|
||||
;extern void ao_stop_async(void *handle);
|
||||
(define-libao-async ao_stop_async(_fun _libao-async-handle-pointer -> _void))
|
||||
|
||||
;extern void ao_play_async(void *handle, int music_id, double at_second, double music_duration, int buf_size, void *mem, BufferInfo_t info);
|
||||
(define-libao-async ao_play_async(_fun _libao-async-handle-pointer _int _double _double _uint32 _pointer _BufferInfo_t -> _void))
|
||||
|
||||
;extern double ao_is_at_second_async(void *handle);
|
||||
(define-libao-async ao_is_at_second_async(_fun _libao-async-handle-pointer -> _double))
|
||||
|
||||
;extern int ao_is_at_music_id_async(void *handle);
|
||||
(define-libao-async ao_is_at_music_id_async (_fun _libao-async-handle-pointer -> _int))
|
||||
|
||||
;extern double ao_music_duration_async(void *handle);
|
||||
(define-libao-async ao_music_duration_async(_fun _libao-async-handle-pointer -> _double))
|
||||
|
||||
;extern int ao_bufsize_async(void *handle);
|
||||
(define-libao-async ao_bufsize_async(_fun _libao-async-handle-pointer -> _int))
|
||||
|
||||
;extern void ao_clear_async(void *handle);
|
||||
(define-libao-async ao_clear_async(_fun _libao-async-handle-pointer -> _void))
|
||||
|
||||
;extern void ao_pause_async(void *handle, int pause);
|
||||
(define-libao-async ao_pause_async(_fun _libao-async-handle-pointer _int -> _void))
|
||||
|
||||
;extern void ao_set_volume_async(void *handle, double percentage)
|
||||
(define-libao-async ao_set_volume_async (_fun _libao-async-handle-pointer _double -> _void))
|
||||
|
||||
;extern double ao_volume_async(void *handle)
|
||||
(define-libao-async ao_volume_async (_fun _libao-async-handle-pointer -> _double))
|
||||
Reference in New Issue
Block a user