2011-11-26 73 views
2

假設我想編寫一個應用程序來編寫音樂編寫音樂的算法

我想爲作曲家提供了一套音樂樂譜 - 例如,巴赫的脾氣好的鍵盤' - 並且程序應該以類似的風格準備新分數

算法或甚至庫已知此任務?

WikiPedia提供此頁面關於algorithmic music composition

+2

這個問題太廣泛了。有關於這個主題的博士論文。太大的答案放在這裏。你可以用所有可能的答案填滿家庭圖書館。 –

+0

@JonathanM我不覺得它比這個流行和非封閉的問題更廣泛 - http://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions – SteAp

+0

...人們可以很容易地給一個關於學期重寫系統的大學水平課程。實際上,用戶常常對非完整的特別信息或廣泛的信息感到滿意。我也是。請給我一天的答案。 – SteAp

回答

5

你可以使用Markov chains做一些基本的事情。其原理是首先產生一些音樂單位(例如單個音符),然後根據最後產生的單位隨機選擇下一個單位。

首先,通過輸入音樂。每次您看到特定的音符/其他音樂單位時,只需在表格中記錄它後面的內容即可。當你走完整個輸入材料時,你將得到一個頻率表,其中('A','B'出現29次,'C'出現12次,'A'出現兩次;'B' '...等)。

現在選擇一個初始筆記。根據表中記錄的頻率隨機選擇下一個。重複,直到滿意。

如果應用於單個筆記,這可能不會產生良好的結果,而是嘗試簡短的短語。此外,如果您可以訪問大量音樂源文件,音質將得到改善。

+1

Thx!我要去調查馬爾可夫鏈。 – SteAp

+0

Rick Taube在Metalevel_的_Notes章節中討論了馬爾可夫鏈。請參閱Lisp [此處]中該章的示例(http://www.moz.ac.at/sem/lehre/lib/cm/Notes%20from%20the%20Metalevel/19/markov.html)。我用Python實現了它們(包括n階馬爾可夫鏈)。它在Github上[這裏](https://github.com/curtisullerich/cmix/blob/master/metalevel/markov.py)。 – Curtis