Я использовал cljs-bach , обертку вокруг Web Audio API . Это проще, чем использовать HTML5 Audio , поскольку позволяет одновременно воспроизводить несколько аудиобуферов без необходимости создания нескольких узлов DOM.
Вот пример, который я искал:
(ns foo.bar (:require [cljs-bach.synthesis :as b]))
(defonce audio-context (b/audio-context))
(defn playback-mp3
[url]
(let [mp3 (b/connect-> (b/sample url) ; read file using js ajax, including caching
(b/gain 0.5) ; you can chain optional effects here
b/destination) ; loudspeakers
]
(b/run-with mp3
audio-context
(b/current-time audio-context)
3.0 ; play for 3 seconds
)))
; (playback-mp3 "/music/qux.mp3")