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小節あります。
関連エントリー:竹内関数が音楽的に聴こえる理由について考えてみた
- Smalltalkのtは小文字です - 竹内関数で音楽生成を Squeak Smallta...
- aikeの日記 - 竹内関数が音楽的に聴こえる理由について考えてみた
- [IT産業と経済]SIerが技術力を求めているという誤解
- fumiexcelの日記 - Haskell Advent Calendar 2011 20日目
- ひらたともよしの日記 - 宇宙&セブナイトにいったこと
- chamekanの日記 - 竹内関数で音楽
- aikeの日記 - SuperColliderで竹内関数音楽
- やねうらお−よっちゃんイカを食べながら、息子語録を書き綴る - ...
- aikeの日記 - JavaScriptにsleepを実装しようとして気づいたら新言...
水月 2011/11/12 22:13 はじめまして
ねこ速@VIPというブログをやっている水月と言います
よろしければ相互リンクしていただけないでしょうか?
内容はツール、マンガ、アニメ、その他ニュース等です
検討のほう、よろしくお願いします
サイト名:ねこ速@VIP
URL:http://nic.chu.jp/
RSS:http://nic.chu.jp/feed/
シマタニノリヒデ 2011/11/13 04:24 スバラシイ。是非ともフルバージョンをお聴かせ願いたく候。
竹内郁雄 2011/11/15 14:52 当の本人の竹内です.友人から教えてもらってアクセスしました.素晴らしいですね.嬉しかったので,このURLをみんなに紹介しまくっています.私はSteve Reichは結構趣味なのですが,聴きやすさという意味ではいい勝負になっていると思います.紹介した音楽仲間からは,以下のような感想をもらいました.
低音部に属音の保持があって、
その上を分散和音で、
下降する順位進行の響きは、
まるでClementiが現代に甦ったみたいですね。
ほかにも現代音楽をやっている人からは「これがいい音楽に聞こえる理由は、ダイアトニックなところで、書いてあるからです」というコメントももらっています.
これはTarai(6, 3, 0)とかだとずっとつまらない音楽になってしまうんですよね?
いずれにせよ,長生きはしてみるもんです.
Tak (NUE)
aike 2011/11/16 00:44 竹内先生、はじめまして。
十数年前に「初めての人のためのLISP」を大学の図書館で読んで以来
LISPと再帰計算の不思議な魅力にすっかりやられてしまいましたので
今回、竹内先生から直接コメントをいただいて大変驚き、感激しています。
音色やテンポの設定をいかにもミニマルミュージック的にしたこともあり、
たしかにSteve Reichのマリンバ曲に通ずるものがあるような気がします。
次のエントリーで竹内関数の音楽的構造について自分なりに考察して
みたので、もしよろしければこちらもご覧ください。
http://d.hatena.ne.jp/aike/20111115
本当にありがとうございました。
竹内郁雄 2011/11/19 01:24 aikeさん,初めまして.というか,上記のような投稿をしたのが,私にとって初めてのことでした :-). 音楽的構造のエントリーも拝見しました.音楽的なことにずいぶんと深い配慮がなされているのに感服いたしました.この変な関数もこれで浮かばれるということです.お時間があればぜひ英語でもエントリーを書いていただければ,外国の連中にも紹介したいと思います.面倒であれば,私が翻訳いたしますが….
Tak (NUE)
ペペロンチーノ 2011/11/19 23:45 とても興味深く聞かせていただきました。『初めての人のためのLISP』で最初に出てくる関数から、このような音楽が生成されるとは予想だにしておりませんでした。面白いですね。
要望があるのですが、10分〜30分(300小節〜900小節)版を作成していただけないでしょうか。作業用のBGMとして使用してみたいのです。検討のほど、よろしくお願いします。