2010-05-03 36 views
7

我想用JavaScript生成一系列MIDI音符,然後播放它。許多插件支持MIDI,但我不知道任何支持「data:」URL。生成MIDI內容並不是什麼大問題 - 但是將這些內容提供給玩家是。任何人都知道如何做到這一點 - 如果不是一般的話,那麼至少對於像QuickTime這樣的特定插件來說呢?在javascript中生成MIDI

回答

1

聽起來最簡單的方法是將MIDI數據傳遞給一個PHP腳本,然後返回輸入。 然後您可以使用「yourscript.php?your-midi-data」而不是「data:your-mini-data」。

4

非常整潔的問題。最近我使用base64編碼圖像進行了很多工作,並且經常使用http://www.greywyvern.com/code/php/binary2base64進行圖像編碼。我只是試圖轉換一個MIDI文件,並將base64文本流轉換爲HTML格式,並且在Firefox中表現得很好(令我驚訝)。下面的代碼(與簡潔,刪除了Base64編碼流):

<embed 
    autostart="true" 
    loop="false" 
    volume="100" 
    hidden="false" 
    src="data:audio/x-midi;base64,abc...." 
></embed> 

我不知道這是可能的從二進制圖像去JS爲Base64,但我懷疑從MIDI去可能。這是一個開始。

2

你可能想看看我的以下博客文章。這是關於一個圖書館,正是你所要做的,客戶端。請注意,瀏覽器中的跨瀏覽器MIDI再現性並不是真的一致,但。

http://sergimansilla.com/blog/dinamically-generating-midi-in-javascript/

+0

Sergi,你的解決方案似乎不能解決主要問題。如果使用「嵌入」或「對象」,則無法控制播放。 QuickTime界面解決了這個問題。你可以從JavaScript完全控制它,甚至可以動態地生成和添加東西。它適用於數據網址。這是原始問題的一個重點。 – shurik 2011-01-29 11:58:42

1

的QuickTime數據url和Firefox和Chrome一起工作(最近發佈,沒有測試版)你必須遵循quicktime website的指示:通過調用QT_WriteOBJECT函數初始化QuickTime函數(我必須提供指向Beethoven mp3文件的初始有效src,以防止抱怨 - 也許這是沒有必要的),註冊聽衆詳細說明在所述在獲得回調函數qt_load後,調用document.movie1.SetURL(myDataURL)方法。我在數據url中使用了base64編碼:"data:audio/midi;base64,..."。 (內容是由javascript生成的)。所有事情都很奏效:Play(),Stop()等等。最難的部分是閱讀他們的紀念文檔(注意它也有「HTML」部分)

+0

鏈接不好... – milesaron 2016-12-23 03:15:45