読者です 読者をやめる 読者になる 読者になる

pco2699’s blog

学んだコード・技術について、保存しておく場所

ライフゲームをNovation Launchpadに実装して、シーケンサーにしてみる

引き続き、前回紹介した「ジェネラティブアート」の本読んでます。 その中で、後半に出てくる「ライフゲーム」が面白かったので、ちょっと発展させて楽器にしてみました。

[普及版]ジェネラティブ・アート―Processingによる実践ガイド

つくったもの

こんな感じになりました
(我ながらTENORI-ON感がすごい音)
うす緑色の縦線が現在、鳴っている音で、Cメジャー・スケールで音を鳴らしてます。

youtu.be

ライフゲームとは

碁盤の目のような格子があって、それぞれの格子が周りの状態を見て 自立的に、一定のルールで自分の状態を決める。(これがセル・オートマトンと呼ばれるもの) で、このセル・オートマトン上で、以下のルールに従って格子の状態が決まるのがライフゲーム

  1. 生きている格子は、2つか3つの隣接セルが生きていればそのまま生き続ける。
    さもなければ過疎か過密のどちらかで死んでしまう。
  2. 死んだ格子の周囲に、ちょうど3個の生きた隣接セルがあれば奇跡が起こり
    その格子は生き返る。

百聞は一見にしかず、以下のサイトを見てみるとなにかよくわかる。

ライフゲーム

ちなみにGoogleで「ライフゲーム」で検索すると実は裏側で ライフゲームが動いているという。。。さすがGoogle f:id:pco2699:20161210153635p:plain

参考資料など

Launchpadをプログラミングするときは Novationから出ている Launchpad プログラミングリファレンスが参考になりました。

https://d19ulaff0trnck.cloudfront.net/sites/default/files/novation/downloads/4080/launchpad-programmers-reference.pdf

ソースコード

PythonMIDIライブラリmidoで実装しました。

gist7806d8a4dc543a2ca71ed23d360b294b