一个适合播放声音的clojure友好库

Art*_*ldt 9 audio clojure

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

编辑:像这样

(use 'my.sound.lib') 
(play-file "filename")
(beep-loudly)
(bark-like-a-dog)
...
Run Code Online (Sandbox Code Playgroud)

Mic*_*zyk 8

好了,现在问题包括API愿望清单...... ;-)

您可以使用JLayer在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)))))))
Run Code Online (Sandbox Code Playgroud)

用于(play-file "/path/to/file.mp3")在单独的线程中播放mp3飞行,(play-file "/path/to/file.mp3" true)如果您更喜欢在当前线程上播放它.根据自己的喜好调整.提供你自己的嘟嘟声和吠叫狗mp3.;-)

对于负载蜂鸣声等,您也可以使用MIDI ... 如果您选择尝试,此博客条目可能会有所帮助.

此外,我的原始答案中的链接可能仍然有助于您的调整:Java声音资源:链接.