From 4afca181244636198d80a5a6e1c717d88e86d5b2 Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Mon, 23 Feb 2026 01:23:49 +0100 Subject: [PATCH] - --- libao/c/ao-play-async/ao_playasync.c | 10 ++++++++++ libao/c/ao-play-async/ao_playasync.h | 1 + libao/lib/ao-play-async.dll | Bin 11264 -> 11776 bytes libao/lib/ao-play-async.exp | Bin 1308 -> 1426 bytes libao/lib/ao-play-async.lib | Bin 2726 -> 2928 bytes libao/libao-async-ffi.rkt | 6 +++++- libao/libao.rkt | 4 ++++ play-test.rkt | 4 ++-- 8 files changed, 22 insertions(+), 3 deletions(-) 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 aa2503812b291acf9b4aaf9c527c8e8c4c15f48c..00a6fbc9cf4a6442cc218db289940e467def4d99 100644 GIT binary patch delta 3747 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 Y3L$;Nr26`6CY=ztE2*qM&3i5BKbu!rd;kCd delta 3562 zcmd^Bk5d%a9e=y9#|a#_aJO>6DW@EG2z3rn0hI<2lb3iVG;tbjOwfoXF=={~!%*Al zp%)y_^{nBI6Vpsu({%gU=F8hH2onqnU-|aVxf&Sj=y5ue%|iGGM(vP z(4G0d&*%GNzwgKQy|>%7s%u5BU7FFd`_*TNcrKHfz6?35oaDeT)iU~7snjyvS3^iY z3?sl+?pO^j0hLLYUPL0$Ayc?tVb@B0_l)?<4yiRe3jp4Xl?9#>b&eC9;z?(Tyd)H zK|{+dWV4l0*SF9O)gSU4Ht@*(ntB=yyxR2`RMEw08 zLu)}O)fZM>quoZN!CBbE)%$!jo;;wTQ;R3{aOJb4aONm>0o=N+|x9#jK3OnRQ2=O z)MFySmH}fZu6W@XJ&P6HKD@2T?~BzffI;qYV^nJpd?mEV<_w>do6vfdpzH?MzTWs`&A#_ub<*u(VbC} zzu$6L;VQiPS<_pY&z5I|r6G1K!&mkf53kV@lyb>sLpuje@23@<|H0ykWgbgE$<)jR z>l*_+9yOrXPt&;4&Q(nG@qrWAvVqtw3A-d#_w784yu)T_i;?7){EQ(efS82iCH{s{ zJQI!+T;B}+(kP}+6G}Ju07urFN##(0-O3!6_OstP=E%V=ROvv#?Xr7yj}ik&aHb{6v_gTBWG>L1}pv#Tz~jyp^2Z^Ay1RJOD0 z&RNnEtWYhN*07M8C*R{{PpOU4XY6hD5$R=iNA+fIa3Mz`vK<}+i-d?9fXNZVtSvj24Q7WjPtU~Cb|EOKoMhgd+Nsq= z*pjg!sVT0MgN~&&=}J)%dp74w(pC0KPN2bsH)w3+PEv7z@yaBXG%%UhD6U+cfzxsL zZ|?R&1bv!RMxhJWInbo?5tChY(bvKEkHm)TNo6M}wlRq-JHQ&Q9rZm}4Q@dIWxyR7yc@ z)(G=KJ!5Hz$_8^DzL?vdNu7r;mc&mcze78SQi@pEST zyxFcW+wYt04zoRIwtLL>M`rsov)yU7o$Q#qPTIm!v@e*N(i{yhAm;O3fjb4hA@G2} zBLbJ#S@H7)<_ok5yt2sh4+|U=xKCh@z)lOJGs0B#HXlfa3% zdJ$J6aKipop+6w-qQH$NK0(MSVb~?GRp5Ss6Nw_zNS6d<0#PAT@BJ^Fh!4Wfj^-}! z>&;y*$t}B?Ew5)~0;lQ6khKMbJnkjrdyo(CvH3Hk9$)WWkWU~4#R@_?eT3Md9t8FP z%?I`_$ehT!&WQi(&vRQB`&XVzKIrSS<*%2PoW?lkbhfUEtRZCLpJdKDOXvS4&3I$Z zGhFvq^0$Mv*w+8CRdE|-zbJ6wN99;SwTyq4I|XZmPP0LtP{M)O-Pz%O@k-j0Nyc4muxbzRm#oT>8T`ruAQVmYzy;u zQxW@f#GQehgwCHgz%M{9`b?Gl6a3~RKi6+rerr!ksS-(TBxFjyjpWaDlKgK@9dUtLAqGqGgkR7nU26+cE067EU8Dv~)sjP2$fc<^?mmeS$<(YU+ z@NFN&r)H9^WFgiaHg(dGxD4A6Y=KEOm9-TX{=c7i)b4+t_`aX|9!U^V#N?GMh6#cjx5aE`V31|I;g2WH_w41%k` z)sS$tg&VPPhhgv3NR)gI#S6!6pdTBv6P)832=A;F=<*Qq7VK_dHH0T>1x5w$0v;0l z2=KDt9F;sP-VO{3&T)y!qu9S7Z$bD-IS!i+3&#cLSc1dBI}QN*ARmJt0EV#G2f#Uo zA>7XK6~TLfpW_BR5BqIk%{2JY7stptp>zTrK0>Y{Xcw>tVy_{j7kCh&f^+2egBvj% f`Q5-d$6JDP>MfN_ti{F@%LrTzLN59Xk;)- diff --git a/libao/lib/ao-play-async.exp b/libao/lib/ao-play-async.exp index 34f2a35cfb5028c50b688307156d2535655f04f7..405b745fc6b6b2133937fb3866b2bc1384342ac5 100644 GIT binary patch delta 551 zcmZ9JJ5Rz;7>2*oQyRHcMG*$wY@!1iP#_Ep3?^P;yhH~#QfOr%Na`(2#6?$+O`M$l z1CHwE*{c?IPcd?te>0D~`3%zinlrS?3A4KG!DhvjV zqpElo9k+hkwDu&E`oj0V*qw_Q7#QNBD6SJxMjCO_DI%Wd^_FXU;&a`%ShhEcCNAfp z5tXv=F_l)}QI&FV`8Q5$@R&*kcv7WJcwD72d_tuictWKLd{U)-xT%s3|3UQ`Jv=gp zm8Phi)BxLk4N3!J_X>Niec}%J3^?Wx-{XNQqwkx}IOPzyry> b63HVBG$0$n5bptz>kOpPAvXP%4({&{Db7z% delta 486 zcmbQlJ%@`orHzTmneKmrK(fYL1G|q z5h%Z5VxT%JE0DuFvC(qkK8}ee)F+3q+D*1*)UD?Q3Ntg<07(uoO9x1T%wh(a#=r?? z830LsFv|rzQT6LB;@O3vv=G zp>iTXIo8RWnG+eKCX2Et*MqzO3JYe2qV#hAB4F4Az(rL241mCpAqP#wh@lou#F(KM zO~iy@F`9@e!$!CWkih_Q8^h$2Eb_*xAQlvW{KLRt4dsC-h=?bONcd!3RtZpK007hj BLqq@o diff --git a/libao/lib/ao-play-async.lib b/libao/lib/ao-play-async.lib index d9a930c84329625521ebf317a9a097223e0bbad0..6560be19ab499d012fa92d9ed72dd48a93b55059 100644 GIT binary patch delta 336 zcmZ1``ax`hrMHEd0t6&*F)%RjGcYjUVPIgBV_;y9VqoB02Ep7wDG=tG0KuFlKye`E zl7L{20}Kot2PW2>6-mxXO)QE}EUwH;W=PDB2XiM|GEVZdMA*X#H0cgA1A`nJ149%$ z1H&?q0MPgeKo^(**%Cnd00-DH42%p+44e$?3@i*B3~UUnF!p3Yreqe7Rg;sM%D{}x z=a}r-)QzE@Q2_bo|9=LCl(vX#=RYd~Enozi0e8__PRYr)Ib1pA-aS991e9c&tjU?l zsn2EbLj%ZTo;;f~U%2FO;XMT)j|HN!ASbbM@>L-8Z%;ZTg ty?S2*$YTQPoP3^1Y;qk}7-wdz)>{RjAoJwAT _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") ) )