diff --git a/libao/c/ao-play-async/ao_playasync.c b/libao/c/ao-play-async/ao_playasync.c index 64e268e..f706676 100644 --- a/libao/c/ao-play-async/ao_playasync.c +++ b/libao/c/ao-play-async/ao_playasync.c @@ -245,6 +245,16 @@ void ao_play_async(void *ao_handle, double at_second, int buf_size, void *mem) MUTEX_UNLOCK(h->mutex); } + + +void ao_clear_async(void *ao_handle) +{ + AO_Handle *h = (AO_Handle *) ao_handle; + MUTEX_LOCK(h->mutex); + clear(h); + MUTEX_UNLOCK(h->mutex); +} + double ao_is_at_second_async(void *ao_handle) { AO_Handle *h = (AO_Handle *) ao_handle; diff --git a/libao/c/ao-play-async/ao_playasync.h b/libao/c/ao-play-async/ao_playasync.h index 3d11f18..696bfa1 100644 --- a/libao/c/ao-play-async/ao_playasync.h +++ b/libao/c/ao-play-async/ao_playasync.h @@ -14,6 +14,7 @@ AOPLAYASYNC_EXPORT void *ao_create_async(void *ao_handle, void *ao_play_f); AOPLAYASYNC_EXPORT void ao_stop_async(void *handle); AOPLAYASYNC_EXPORT void ao_play_async(void *handle, double at_second, int buf_size, void *mem); +AOPLAYASYNC_EXPORT void ao_clear_async(void *handle); AOPLAYASYNC_EXPORT double ao_is_at_second_async(void *handle); AOPLAYASYNC_EXPORT int ao_bufsize_async(void *handle); diff --git a/libao/lib/ao-play-async.dll b/libao/lib/ao-play-async.dll index aa25038..00a6fbc 100644 Binary files a/libao/lib/ao-play-async.dll and b/libao/lib/ao-play-async.dll differ diff --git a/libao/lib/ao-play-async.exp b/libao/lib/ao-play-async.exp index 34f2a35..405b745 100644 Binary files a/libao/lib/ao-play-async.exp and b/libao/lib/ao-play-async.exp differ diff --git a/libao/lib/ao-play-async.lib b/libao/lib/ao-play-async.lib index d9a930c..6560be1 100644 Binary files a/libao/lib/ao-play-async.lib and b/libao/lib/ao-play-async.lib differ diff --git a/libao/libao-async-ffi.rkt b/libao/libao-async-ffi.rkt index 097597a..03df948 100644 --- a/libao/libao-async-ffi.rkt +++ b/libao/libao-async-ffi.rkt @@ -14,6 +14,7 @@ ao_play_async ao_is_at_second_async ao_bufsize_async + ao_clear_async ) (define-runtime-path libao-async-lib-path "./lib") @@ -46,4 +47,7 @@ (define-libao-async ao_is_at_second_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)) \ No newline at end of file +(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)) \ No newline at end of file diff --git a/libao/libao.rkt b/libao/libao.rkt index 7c04a7f..f117d1d 100644 --- a/libao/libao.rkt +++ b/libao/libao.rkt @@ -14,6 +14,7 @@ ao-default-driver-id ao-at-second ao-bufsize-async + ao-clear-async ) (define devices (make-hash)) @@ -178,6 +179,9 @@ (define (ao-bufsize-async handle) (ao_bufsize_async (ao-handle-async-player handle))) +(define (ao-clear-async handle) + (ao_clear_async (ao-handle-async-player handle))) + ;(let* ((handle-num (ao-handle-handle-num handle)) ; (ao-device (hash-ref devices handle-num #f))) ; (if (eq? ao-device #f) diff --git a/play-test.rkt b/play-test.rkt index 561d3d4..e9ae00f 100644 --- a/play-test.rkt +++ b/play-test.rkt @@ -9,8 +9,8 @@ (when (eq? os 'unix) (set! test-file3 "/muziek/Klassiek-Viool/Alina Ibragimova/Paganini_24 Caprices (2021)/24. 24 Caprices, Op 1 - No. 24 in A minor- Tema con variazioni. Quasi presto.flac")) (when (eq? os 'windows) - ;(set! test-file3 "C:\\Muziek\\Klassiek-Strijkkwartet\\Quatuor Zaïde\\Franz\\01 Erlkönig, D. 328 (Arr. For String Quartet by Eric Mouret).flac") - (set! test-file3 "C:\\Muziek\\Klassiek-Viool\\Janine Jansen\\Janine Jansen - Sibelius en Prokovief 1 (2024)\\02 - Violin Concerto in D Minor, Op. 47 II. Adagio di molto.flac") + (set! test-file3 "C:\\Muziek\\Klassiek-Strijkkwartet\\Quatuor Zaïde\\Franz\\01 Erlkönig, D. 328 (Arr. For String Quartet by Eric Mouret).flac") + ;(set! test-file3 "C:\\Muziek\\Klassiek-Viool\\Janine Jansen\\Janine Jansen - Sibelius en Prokovief 1 (2024)\\02 - Violin Concerto in D Minor, Op. 47 II. Adagio di molto.flac") ) )