2010-01-19 37 views

Trả lời

8

OK này, với câu hỏi bây giờ bao gồm một danh sách mong ước API ... ;-)

Bạn có thể sử dụng JLayer để nghe nhạc MP3 trên JVM. Trên Ubuntu nó được đóng gói như libjlayer-java. Có một ví dụ đơn giản về sử dụng trong Java here. Một wrapper 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))))))) 

Sử dụng (play-file "/path/to/file.mp3") để phát lại một mp3 bay trong một thread riêng biệt, (play-file "/path/to/file.mp3" true) nếu bạn muốn chơi nó trên thread hiện tại để thay thế. Tinh chỉnh theo ý thích của bạn. Cung cấp tiếng bíp và chó sủa to của riêng bạn mp3. ;-)

Để có tiếng bíp tải và tương tự, bạn cũng có thể sử dụng MIDI ... Có lẽ điều này blog entry sẽ hữu ích nếu bạn chọn thử.

Ngoài ra, liên kết từ câu trả lời gốc của tôi vẫn có thể hữu ích trong việc tinh chỉnh của bạn: Java Sound Resources: Links.

0

Từ năm 2010, đã xuất hiện ít nhất ba thư viện để phát lại âm thanh, thao tác, hiển thị và lưu.

clj-audio

Thư viện âm thanh đa năng được xây dựng trên đầu trang của API âm thanh Java. Có số lượng phụ thuộc tối thiểu, nhưng dự án trông khá bị bỏ rơi.

tham khảo trong project.clj (cái thứ hai là cần thiết để chơi các file MP3):

[org.clojars.beppu/clj-audio "0.3.0"] 
[com.googlecode.soundlibs/mp3spi "1.9.5.4"] 

Cách sử dụng Ví dụ:

(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 

Thông tin chi tiết: https://github.com/beppu/clj-audio

Dynne

Một đơn giản và dễ sử dụng lựa chọn. Có tấn phụ thuộc.

tham khảo trong project.clj:

[org.craigandera/dynne "0.4.1"] 

Cách sử dụng Ví dụ:

(require '[dynne.sampled-sound :refer :all]) 

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

;; Play a synthesized sound 
(play (sinusoid 1.0 440)) 

Thông tin chi tiết: https://github.com/candera/dynne

overtone

Một tùy chọn nâng cao dựa trên các công cụ SuperCollider tổng hợp. Tôi đoán nó sẽ là một overkill cho chỉ chơi thông báo, nhưng tôi đề cập đến nó ở đây vì lợi ích của đầy đủ.

Thêm chi tiết: https://github.com/overtone/overtone

Các vấn đề liên quan