国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用 Java 語言進行算法作曲

2019-11-18 11:01:35
字體:
來源:轉載
供稿:網友

  利用計算機、數學和 java Sound API,加入一些 Java 代碼,就可以制作出一些獨特迷人的音樂來。IBM 專職軟件工程師 Paul Reiners 展示了如何用 Java 語言實現一些基本的算法作曲。他給出了代碼示例和由 Automatous Monk 程序所生成的 MIDI 文件,這個程序使用了開放源代碼 jMusic 框架,以一種名為細胞自動機的數學結構為基礎進行作曲。
很多計算機程序員都是很出色的音樂家,很少有組織不起像樣的室內樂隊的軟件公司。不過,許多程序員/音樂家可能沒有意識到這樣一個能讓他們的職業和業余愛好統一起來的有意思的領域:算法作曲。算法作曲將嚴格的、定義良好的算法應用到作曲過程中。 細胞自動機(Cellular automata,CA)??這是一種隨時間而進化的數學結構??為算法作曲展現了一條迷人的大道。計算機非凡適合計算細胞自動機(CA)的進化并以圖形方式顯示它們。還可以用聲音表現進化,包括音樂。但是尋求將 CA 進化映射為動聽和有意思的音樂不是一個簡單的問題。本文展示了用 Java 語言進行基于 CA 的作曲的一些技術,并探討了得到非凡出色結構的某些映射。

細胞自動機概述
CA 包括:

細胞矩陣或者網格,每個細胞可以處于有限種狀態中的一種。
定義細胞狀態如何隨時間更新的規則。
細胞矩陣可以有任意多維。給出一個細胞和它的鄰居在時間 t 時的狀態,規則會決定在時間 t + 1 時細胞的狀態。(在分析了幾個具體例子后會看得更清楚。)

基本細胞自動機
在本文中我將集中討論一維細胞自動機,它的細胞可以有兩種狀態:0 或者 1。因為 CA 是一維的,所以可以將它想像為一行細胞。細胞在時間 t + 1 的值將只取決于這個細胞和它的左右鄰居在時間 t 時的值。這種 CA 稱為 初級細胞自動機。

CA 圖使用白表示 0,黑表示 1。最上面一行顯示這個細胞和它的左右鄰居可以有的八種顏色組合。底下一行顯示中間這一個細胞下一步的顏色。例如,考慮圖 1 中第四個方塊。在這個方塊中,可以看到假如細胞是白色的,它的左鄰是黑色的,右鄰是白色的,那么這個細胞在下一步將是黑色的。習慣稱它為 150 規則(rule 150):假如想像黑白細胞分別表示二進制 0 和 1,那么底下一行就是加上二進制形式的十進制數 150。圖 1 是 150 規則的虛擬表示。用音樂表示 CA 時,150 規則會生成一些有意思的曲調,因此在本文中我將用它作為例子。

圖 1. 150 規則

現在,考慮一個 150 規則 CA,開始時,除了中間的細胞為黑色,其他所有細胞都是白色。這個 CA 會按照圖 2 所示的一系列步驟進化。

圖 2. 150 規則步驟序列

注重盡管自動機是一維的,但是用一組連續的行從上到下顯示它的進化。圖 2 顯示 CA 前五步的進化(包括初始狀態)。可以看到每一個細胞的顏色都是由上一行中它自己的顏色和最近的鄰居的顏色根據 150 規則所決定的。同時,還要注重考慮一行中所有細胞的值是在進化的每一步中同時更新的。

圖 3 顯示 CA 在 100 步進化后的樣子:

圖 3. 150 規則 100 步后

圖 3 中 CA 的進化碰巧是對稱的,但是并不是所有 CA 進化都是對稱的。

Wolfram 對細胞自動機的研究
CA 半個世紀以來一直是研究的對象。Stanislaw Ulam 和 John von Neumann 于 20 世紀 40 年代發明了 CA 的概念,并于 40 和 50 年代作出了很多重要的發現。John Horton Conway 和 Bill Gosper 于 70 年代對 Conway 發明的一種稱為 Life 的非凡二維 CA 進行了更深入的研究。Stephen Wolfram 于 80 年代開始研究 CA(請參閱 參考資料)。

通過研究初級細胞自動機,Wolfram 發現簡單的機制可以產生出復雜的行為。例如,考慮 30 規則。像所有初級細胞自動機一樣,它的定義??如圖 4 所示??是相當簡單的:一個小圖就可以完全定義它。

圖 4. 30 規則

不過,30 規則所產生的進化是相當復雜的。圖 5 顯示了使用 30 規則時,這個 CA 100 步后的進化。

圖 5. 30 規則 100 步后

分析了 256 個初級 CA 和其他更復雜的 CA 后,Wolfram 發現 CA 可以分為四類。數學家和作家 Rudy RUCker 在其報告“Things Computer Science Tells Us About Philosophy”中準確地描述了這四種類型(請參閱 參考資料)。

第 1 類:恒定。 (所有種子都“死了”)
第 2 類:重復。 (循環,條帶)
第 2A 類: 嵌套。(正則分形)
第 3 類: (偽)隨機。 (激變)
第 4 類: 復雜。 (“不規則”。滑行。 一般性計算)

Wolfram 作出了似乎有道理的聲明,大多數第 3 類和第 4 類 CA 可能是 無法省略計算的(computationally irreducible):給出一個初始狀態,要找出某一細胞在第 n 步時的值,必須從初始配置開始,完成所有 n 步計算。就是說,沒有公式或者快捷方式可以猜測 CA 的未來狀態。

音樂之外
CA 的計算能力是否可以用于作曲以外的地方呢?請看側欄“細胞自動機的應用”。


CA 的計算能力
此外,Wolfram 和 Matthew Cook 還證實了 110 規則在計算上等同于一個一般性圖靈機。(之前 Conway 對 Life 證實了這一點。)即,可以用 110 規則計算任何一般性圖靈機可以計算的函數。這對于其他第 4 類的初級 CA 可能也成立。就是說,一些 CA 盡管定義很簡單,但是可以用于執行任何所需要的計算。

一個未決問題
當然,CA 是純數學結構,CA 的直觀表示幫助我們理解和討論它們。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台安县| 巍山| 商丘市| 林甸县| 遂平县| 西充县| 台江县| 开封县| 富源县| 武鸣县| 奇台县| 澄迈县| 江城| 越西县| 冀州市| 孟津县| 铜梁县| 连云港市| 清涧县| 神木县| 巴彦县| 黔南| 嘉黎县| 潞西市| 永清县| 云龙县| 徐汇区| 天等县| 台南市| 彭泽县| 黄平县| 若尔盖县| 罗定市| 洛阳市| 射洪县| 鞍山市| 铜川市| 五峰| 常熟市| 金川县| 临澧县|