自從ㄚ琪發現Java的JavaSound API的偉大功能之後,開始想說瞭解樂譜可能是件有趣的事了,就繼續往這方面找資訊,沒多久又看到JFugue這個API,這個API可說是提供音樂程式設計的開源 Java API,真好,有原始碼可以看說,不過這不是重點,重點是他沒有JavaSound API的複雜,JFugue 讓撰寫音樂程式更輕鬆,例如下例:
Player player = new Player();
player.play("C D E F G A B");
ㄚ琪一看到這,這不就是ㄚ桀再唱詩班教樂理時的符號嗎?說是符號是因為ㄚ琪完全看不懂,什麼樂譜Do Re Mi只聽過,但是混雜在一起看不懂,更不用談說Do Re Mi轉到這種A B C又是怎樣的轉法,也不懂,我只會跟著唱詩班看歌詞唱四部,其它完全都不懂,但是在程式這裡看到似曾相似的符號,就覺得好好玩,就很想抽空玩玩這個API,這個API有很多的功能,讓ㄚ琪簡單說一說:
- Music Strings可以讓你指定音符、和弦、樂器、樂曲等等。
- 音樂可以設定在執行時演奏或是儲存起來然後用MIDI檔案來開啟。
- 音樂可以從外接裝置:像是鍵盤、混音器等等,送出或是接收。
- 音樂的格式可以用有趣的方式轉換及處理
- 支援microtonal music、 intuitive rhythm tracks、anticipating musical events
- 其他音樂的解析器跟描繪器可以容易地整合到JFugue架構中
JFugue是理想的執行音樂產生的應用程式,像是:
- Algorithmic(準則音樂)、generative(衍生式音樂)、aleatoric(機率音樂),或 evolutionary (互動式演化算法)等音樂
- 音樂的編輯、beat boxes(節拍盒), drum machines(鼓類樂器)
- 爵士樂的即興演奏、mimicking classical composers(模仿古典作曲家)、人工智慧音樂
- Procedural synthesis(程序合成)、virtual instruments(虛擬樂器)、互動式軟體玩具
- 動態心情設定、adaptive music(適應性音樂)根據遊戲狀況的音樂、需要音樂技巧的遊戲
- …還有很多的應用程式,就看你的想像有多少就有多少!
- 使用JFugue是鼓勵未來的程式設計師,用音樂理論及作品來做實驗。