竹内関数で音楽生成

Lisperの人ならみんな知ってる竹内関数(たらいまわし関数)という関数があります。
定義としてはこんな感じ。
 
f:id:aike:20200809043452p:plain
 
そのシンプルな定義からは想像もつかないほど複雑で膨大な再帰呼び出しがおこなわれるとても興味深い関数です。たとえば引数に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小節あります。
 
youtu.be

 
音を聴いて試せるページ作りました(英語):Tarai Function Music
関連エントリー竹内関数が音楽的に聴こえる理由について考えてみた
 


初めての人のためのLISP[増補改訂版]

初めての人のためのLISP[増補改訂版]

  • 水月

    はじめまして
    ねこ速@VIPというブログをやっている水月と言います
    よろしければ相互リンクしていただけないでしょうか?
    内容はツール、マンガ、アニメ、その他ニュース等です
    検討のほう、よろしくお願いします
    サイト名:ねこ速@VIP
    URL:http://nic.chu.jp/
    RSS:http://nic.chu.jp/feed/

  • シマタニノリヒデ

    スバラシイ。是非ともフルバージョンをお聴かせ願いたく候。

  • 竹内郁雄

    当の本人の竹内です.友人から教えてもらってアクセスしました.素晴らしいですね.嬉しかったので,このURLをみんなに紹介しまくっています.私はSteve Reichは結構趣味なのですが,聴きやすさという意味ではいい勝負になっていると思います.紹介した音楽仲間からは,以下のような感想をもらいました.

    低音部に属音の保持があって、
    その上を分散和音で、
    下降する順位進行の響きは、
    まるでClementiが現代に甦ったみたいですね。

    ほかにも現代音楽をやっている人からは「これがいい音楽に聞こえる理由は、ダイアトニックなところで、書いてあるからです」というコメントももらっています.

    これはTarai(6, 3, 0)とかだとずっとつまらない音楽になってしまうんですよね?
    いずれにせよ,長生きはしてみるもんです.

    Tak (NUE)

コメントを書く

竹内関数で音楽生成

プロフィール
注目記事