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)

 

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

 

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 可用的囉,還順便包了三個範例進去。

這樣一來,用 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).

arrow
arrow

    DK 發表在 痞客邦 留言(2) 人氣()