From 73e778e4a58e6e3443a5c1f38d8312de540992c5 Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Mon, 18 May 2026 16:36:19 +0200 Subject: [PATCH] ao buffer timing --- audio-placed-player.rkt | 14 ++++++++++++++ audio-player.rkt | 10 ++++++++++ libao-async-ffi-racket.rkt | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/audio-placed-player.rkt b/audio-placed-player.rkt index 2e08e47..2eb40f0 100644 --- a/audio-placed-player.rkt +++ b/audio-placed-player.rkt @@ -351,6 +351,14 @@ (define (volume percentage) (set! req-volume percentage)) + (define (ao-buf-ms) + (ao-playback-buf-ms)) + + (define (ao-buf-ms! ms) + (let ((the-ms (if (< ms 50) 50 (if (> ms 1000) 1000 ms)))) + (ao-set-playback-buf-ms! the-ms) + (ao-buf-ms))) + (define (state msg cb . force) (let ((h (make-hash))) (with-mutex ao-mutex @@ -474,6 +482,12 @@ (let ((st #f)) (state "'state command" (λ (s) (set! st s)) 'force) st))) + ((eq? cmd 'ao-buf-ms) + (do-rpc + (if (null? (cdr data)) + (list (ao-buf-ms)) + (list (ao-buf-ms! (cadr data)))) + )) (else (do-rpc (list 'error (format "Unknown command ~a" cmd)))) diff --git a/audio-player.rkt b/audio-player.rkt index 0a69e0f..55c518f 100644 --- a/audio-player.rkt +++ b/audio-player.rkt @@ -30,6 +30,8 @@ audio-file audio-play? audio-buf-seconds! + audio-ao-buf-ms! + audio-ao-buf-ms audio-known-exts? ) @@ -269,6 +271,14 @@ (let ((from (if (< min 1) 1 (if (> min 10) 10 min))) (until (if (< max min) (+ min 1) (if (> max 30) 30 max)))) ((audio-play-rpc handle) 'buf-seconds from until))) + +(define/contract (audio-ao-buf-ms! handle ms) + (-> audio-play? integer? (or/c integer? boolean?)) + ((audio-play-rpc handle) 'ao-buf-ms ms)) + +(define/contract (audio-ao-buf-ms handle) + (-> audio-play? (or/c integer? boolean?)) + ((audio-play-rpc handle) 'ao-buf-ms)) diff --git a/libao-async-ffi-racket.rkt b/libao-async-ffi-racket.rkt index 3cc4cc6..6a8c015 100644 --- a/libao-async-ffi-racket.rkt +++ b/libao-async-ffi-racket.rkt @@ -197,7 +197,7 @@ ;; Playback buffer to send to libao in milliseconds ;; ------------------------------------------------------------------------- -(define ao-buf-ms 150) ;; Playback buffer of 0.15s +(define ao-buf-ms 350) ;; Playback buffer of 0.35s (define (ao-playback-buf-ms) ao-buf-ms)