2011-11-12 竹内関数で音楽生成 
Lisperの人ならみんな知ってる竹内関数(たらいまわし関数)という関数があります。
定義としてはこんな感じ。
そのシンプルな定義からは想像もつかないほど複雑で膨大な再帰呼び出しがおこなわれるとても興味深い関数です。たとえば引数にTarai(10,5,0)を与えると343,073回も再帰呼び出しされたりします。
この関数呼び出しの引数がどのように変化するか知りたくてプログラムを書いて調べてみたところ、Tarai(10,5,0)の場合は3つの引数がそれぞれ0〜10(xは-1〜10)の間で少しずつ変化するなかで、2つの値を固定してひとつの値が下降していくような挙動があったりして、なんだか音楽の3和音のコード進行を思わせるような動き方です。
そういうことなら、ということで実際に音にして聴いてみました。Tarai関数が呼ばれるたびに引数のx、y、zを、0=ミ、1=ファ、2=ソ、……、のように音に割りあて3和音にして鳴らしています。せっかくなので音源の自動アルペジオ機能でミニマルっぽくしています。この手の自動生成音楽にしては緊張感の変化があってちょっと面白いんじゃないかと思います。
動画では60小節で止めていますが、この曲のフルバージョンは343,073小節あります。
関連エントリー:竹内関数が音楽的に聴こえる理由について考えてみた
トラックバック - http://d.hatena.ne.jp/aike/20111112
- Smalltalkのtは小文字です - 竹内関数で音楽生成を Squeak Smallta...
- aikeの日記 - 竹内関数が音楽的に聴こえる理由について考えてみた
- [IT産業と経済]SIerが技術力を求めているという誤解
- fumiexcelの日記 - Haskell Advent Calendar 2011 20日目
- ひらたともよしの日記 - 宇宙&セブナイトにいったこと
- chamekanの日記 - 竹内関数で音楽
- aikeの日記 - SuperColliderで竹内関数音楽
- やねうらお−よっちゃんイカを食べながら、息子語録を書き綴る - ...
- aikeの日記 - JavaScriptにsleepを実装しようとして気づいたら新言...
ねこ速@VIPというブログをやっている水月と言います
よろしければ相互リンクしていただけないでしょうか?
内容はツール、マンガ、アニメ、その他ニュース等です
検討のほう、よろしくお願いします
サイト名:ねこ速@VIP
URL:http://nic.chu.jp/
RSS:http://nic.chu.jp/feed/
低音部に属音の保持があって、
その上を分散和音で、
下降する順位進行の響きは、
まるでClementiが現代に甦ったみたいですね。
ほかにも現代音楽をやっている人からは「これがいい音楽に聞こえる理由は、ダイアトニックなところで、書いてあるからです」というコメントももらっています.
これはTarai(6, 3, 0)とかだとずっとつまらない音楽になってしまうんですよね?
いずれにせよ,長生きはしてみるもんです.
Tak (NUE)
十数年前に「初めての人のためのLISP」を大学の図書館で読んで以来
LISPと再帰計算の不思議な魅力にすっかりやられてしまいましたので
今回、竹内先生から直接コメントをいただいて大変驚き、感激しています。
音色やテンポの設定をいかにもミニマルミュージック的にしたこともあり、
たしかにSteve Reichのマリンバ曲に通ずるものがあるような気がします。
次のエントリーで竹内関数の音楽的構造について自分なりに考察して
みたので、もしよろしければこちらもご覧ください。
http://d.hatena.ne.jp/aike/20111115
本当にありがとうございました。
Tak (NUE)
要望があるのですが、10分〜30分(300小節〜900小節)版を作成していただけないでしょうか。作業用のBGMとして使用してみたいのです。検討のほど、よろしくお願いします。