網頁 貼吧 文章 作者 工作  
網頁搜尋
 
 愛PO吧 >> 亞馬遜外星人 >> 瀏覽文章
回覆 加入我的最愛 與好友分享

音樂程式設計 JFugue on Processing

本被文章 0 次, 共有回覆 0  
0
 
0
水滸傳 料理鼠王 inventor 2012[hr]
Music Programming on Processing!
JFugue 是一個提供"音樂程式設計"的開源 Java API,有音樂背景的程式設計者不需要懂如何呼叫複雜的 MIDI 訊號,隻需要短短幾行程式碼,即可輕鬆做出樂曲。
JFugue 讓撰寫音樂程式更輕鬆,例如下例:
Player player = new Player();
player.play("C D E F G A B");
僅需新建 (new) 一個 Player 物件,即可讓他照你的需求撥放音樂 (C D E F G A B) (do re me fa so la te)

Aware2007在官方的範例中,更是輕鬆撰寫膾炙人口的童謠"兩隻老虎"程式碼。

Using Patterns to Build a Song



Sheet music for "Frere Jacques" (Chinese "Frere Jacques" named "兩隻老虎")





// pattern1 "兩隻老虎"
Pattern pattern1 = new Pattern("C5q D5q E5q C5q");

// pattern2 "跑得快"
Pattern pattern2 = new Pattern("E5q F5q G5h");

// pattern3 "一隻沒有XX"
Pattern pattern3 = new Pattern("G5i A5i G5i F5i E5q C5q");

// pattern4 "真奇怪"
Pattern pattern4 = new Pattern("C5q G4q C5h");

// 將上面的 pattern1~pattern4 加入歌曲 song
Pattern song = new Pattern();
song.add(pattern1, 2); // 加入兩個 'pattern1' 至歌曲
song.add(pattern2, 2); // 加入兩個 'pattern2' 至歌曲
song.add(pattern3, 2); // 加入兩個 'pattern3' 至歌曲
song.add(pattern4, 2); // 加入兩個 'pattern4' 至歌曲

// 播放歌曲 song
Player player = new Player(); player.play(song);




官網上還有許多音樂程式範例,也能為您的程式碼或pattern換不同的樂器(Instrument),或是平行撥放,例如為你的歌曲配上鼓聲。
這裡放上一些官方提供的 JFugue 產生的 MIDI:frerejacques.mid beat16.mid
以及一些電子資源:http://www.jfugue.org/book.html

不過,看到這裡或許有些人很納悶用程式碼寫出死的音樂有何有趣?
因此不能免俗的,我們順手把它包成 Processing 可用的囉,還順便Dodonpachi包了三個範例進去。
這樣一來,用 Processing 或 Arduino 製作跟音樂有關的互動小作品將簡單許多!
(網路上已有人將 JFugue 包進 Android,所以這篇討論的範圍便不包含囉,請見諒)

JFugue Java API: http://www.jfugue.org/
JFugue for Processing (including examples & apache log4j library) [Download]. Package Wrapped by DK Tai-Wei Kan (with example code). Processing, Java, Music Programming

逛上一篇:   逛下一篇:

作者: vbbjlmivc
  (2011-11-20 20:13)
推薦文章: 將本文章推薦到【百度收藏】 將本文章推薦到【YouPush】 將本文章推薦到【udn共享書籤】 將本文章推薦到【Fiigo】書籤

 本文章共有回覆 0 篇,分 1 頁
 聲明:以上內容不代表本站立場,且內容由網友發表提供,若有爭議或違法由發表者承擔,本站將不負責連帶責任,謝謝。

 IPoBar  愛PK  愛遊戲  愛online
新手教學 客服中心 站務公告 交換連結 合作提案 關於我們
 
版權所有©ipobar Ltd., All Rights Reserved.
論壇內會員言論僅代表個人觀點,不代表本站同意其說法,本討論區不承擔由該言論所引起的法律責任