用于播放声音的clojure友好库

用于播放声音的clojure友好库,clojure,audio,Clojure,Audio,我正在寻找一个易于编程的库,用于从clojure函数中不经常播放声音(通知等) 编辑:像这样 (use 'my.sound.lib') (play-file "filename") (beep-loudly) (bark-like-a-dog) ... 好的,现在的问题包括一个API愿望列表…;-) 可以在JVM上播放MP3。在Ubuntu上,它被打包为libjlayer java。这里有一个简单的Java使用示例。Clojure包装器: (defn play-file [filename

我正在寻找一个易于编程的库,用于从clojure函数中不经常播放声音(通知等)

编辑:像这样

(use 'my.sound.lib') 
(play-file "filename")
(beep-loudly)
(bark-like-a-dog)
...

好的,现在的问题包括一个API愿望列表…;-)

可以在JVM上播放MP3。在Ubuntu上,它被打包为libjlayer java。这里有一个简单的Java使用示例。Clojure包装器:

(defn play-file [filename & opts]
  (let [fis (java.io.FileInputStream. filename)
        bis (java.io.BufferedInputStream. fis)
        player (javazoom.jl.player.Player. bis)]
    (if-let [synchronously (first opts)]
      (doto player
        (.play)
        (.close))
      (.start (Thread. #(doto player (.play) (.close)))))))
使用
(play file)/path/to/file.mp3“
在单独的线程中播放mp3动画,如果您希望在当前线程上播放,请使用
(play file)/path/to/file.mp3“true)
。根据你的喜好调整。提供您自己的响亮的嘟嘟声和狗吠声mp3

对于加载嘟嘟声等,您也可以使用MIDI。。。如果您选择尝试,这可能会有所帮助


另外,我的原始答案中的链接可能对您的调整仍有帮助:。

自2010年以来,至少出现了三个用于音频播放、操作、可视化和保存的库

clj音频 基于Java声音API构建的通用音频库。具有最少的依赖项,但该项目看起来相当废弃

参见
project.clj
(播放MP3文件需要第二个):

用法示例:

(require '[clj-audio.core :refer :all])

;; Play an MP3 file
(-> (->stream "bell.mp3")
    decode
    play)

;; Playing synthesized sounds is an experimental feature for the library
(require '[dynne.sampled-sound :refer :all])

;; Play an MP3 file
(play (read-sound "bell.mp3"))

;; Play a synthesized sound
(play (sinusoid 1.0 440))
更多详情:

戴恩 简单易用的选择。有大量的依赖关系

参见
项目.clj

[org.craigandera/dynne "0.4.1"]
用法示例:

(require '[clj-audio.core :refer :all])

;; Play an MP3 file
(-> (->stream "bell.mp3")
    decode
    play)

;; Playing synthesized sounds is an experimental feature for the library
(require '[dynne.sampled-sound :refer :all])

;; Play an MP3 file
(play (read-sound "bell.mp3"))

;; Play a synthesized sound
(play (sinusoid 1.0 440))
更多详情:

暗示 一个依赖于合成引擎的高级选项。我想仅仅是玩通知会有点过火,但为了完整起见,我在这里引用它

更多详情: