マンデルブロ音楽の作り方
マンデルブロ音楽生成プログラムのヘルプファイルから音楽生成規則を解説している部分をHTML変換したものです。生成プログラムは Windowsでしか動かないので、他の機種でブラウジングしている方々にも、どんな具合に音楽を作っているのか知って頂くために作成しました。
ヘルプファイルでポップアップウィンドウを使っている部分はフォントの色を変え、引用として処理していますが、多少見づらいかもしれません。
Windowsでゆっくり読みたいという方は、プログラムをダウンロードし、ヘルプファイルをご覧になってください。
は休符となります。
- MIDデータの生成ルール
以下の説明はマンデルブロ演算の仕組みを理解した上で読んで下さい。マンデルブロ演算の仕組みについては、FMIDICLA「サルでも作れる現代音楽(MES 5)」会議室の#407からのメッセージを参照して下さい。
また適当なマンデルブロ図形表示プログラムか解説書を入手され、グラフィカルな図形を眺めてから、お読みになれば、より理解しやすいかと思います。
山本さんの最初の提案の
マンデルブロ図形表示プログラムはFWINMM(Multi Media)LIB 4(グラフィクスソフト)いろいろなものが登録されています。お勧めは
3 SDI00189 93/10/26 241247 576 B WNFRA171.ZIP Fractint for Windows
です。拡大したマンデルブロ図の上でカーソルを動かすと座標をリアルタイムに表示する機能があり、音楽化するポイントを正確に掴むのにとても便利です。山本準さんの紹介された本 : 別冊サイエンス#92「コンピューターレクリエーション II 遊びの探索」A. K. Dewdney
僕の推薦する本 : ジェイムス・グリック カオス−新しい科学をつくる− 新潮文庫
「X軸を固定しておいてY軸を細かく変えて計算していってその結果を16分音符の音高にあてはめる(ピアノなら88段階使える)」ルールを基本にして、軸の方向(xi, yi)、長さ(刻む回数 w)、刻み幅(xi, yi)、スタートさせる座標位置(x, y)を任意に決められるという仕組みにしました。
マンデルブロ演算の乖離値でつくられる山並みを適当な断面で切りとって、水平軸(座標)を時間の移動、垂直軸(乖離値)を音高、音価、音強のパラメータとして使うことになります。
- 時間の移動
時間の移動は指定された刻み幅(xi,yi)と刻む回数(w)で行います。時間は刻み幅1あたりの時間の長さ(step)を最小単位として経過します。
一番短い音符、tick値で長さを指定、TimeBase 120 なので step=30ならば16分音符となるしたがって、w*stepが曲の長さ、route((w*xi)*(w*xi)+(w*xi)*(w*xi))が軸の線分の長さを示すことになります。
w=1000,step=30ならば16分音符が1000個分が曲の長さ
xi=0.004, yi=-0.003, w=100ならば東南東の方向に長さ0.5の線分で時間軸をとることになります
- 音高
音高は、指定された音律に応じて、乖離値を音域幅(scale)で割った余りか、乖離値を音域幅に合わせて拡大/縮小し変換された値で、決定されます。
音域幅に合わせて変換する方式はマンデルブロの山並みをそのまま音の高さとして表すことが出来ますが、乖離値の上限の値に対して音域幅が小さすぎると、圧縮がかかりすぎるて、同音の反復だらけというこになります。使用する軸上の乖離値の内容に応じて、適当に使い分けて下さい。
また音の高低を乖離値の上からとるか、下からとるか指定できます。上からとると視覚的なイメージと音の高さが一致し、下からとるとひっくりかえしになります。これもお好み合わせて、適当に使い分けて下さい。
音高の最低音は note で指定します。音域幅は選択している音律に基づき音の数を上方に scale 値で指定することになりますが、音律によってオクターブ内の音の数は変わります(当たり前か(^^;)のでご注意ください。ディフォルトの音域設定はピアノの音域となっています。
乖離値が上限の演算回数(i)を越えた点
iteration limitを超えたマンデルブロ集合内の点
音価
音価は
聞きなれない言葉かもしれませんが、音符の長さのことです同じ乖離値が時間軸上で連続した場合、時間の長さ(step)を足し込むという方式で決定しています。
ようするに同じ乖離値が続いたら、長い音符になるということです視覚的に言えば、平面が長さが音の長さを決めることになります。
マンデルブロ集合の特性として、かなり長い平面が連続する場所があっちこっちに発生します。この場合、異常に長い音が発生することになるので、音価の最長を制限(maxstep) し、その長さで同音を連打させる指定も可能です。使用する音色とお好みで決めて下さい。
多声化させて、適当な場所と値をとると、ミニマル風音楽となり、なかなか面白いです
音強
視覚的に言うと、上りの傾斜はクレシェンド、下りの傾斜はディクレシェンド、平面は音強は変化しないとなります。急傾斜になればなるほど激しくクレシェンド/ディクレシェンドします。音強の指定は全てヴェロシティで行っていますので、一音のなかでクレシェンド/ディクレシェンドさせることはできません。
ヴェロシティの中間値はvelで指定できます。ヴェロシティの範囲は vel - (127 - vel) から 127 となります。
曲全体のポリュームはトラックの頭に埋め込まれる volでコントロールできます。
多声化
指定された多声数(part)に基づき、 MIDファイル・フォーマット1形式でトラックを分け、多声化させることができます。
part=0 ならば、単声の音楽となります各トラックのチャネル番号は channelで指定された値を使い設定され、トラックが変わる毎に1づつ増分されます。
多声化の方法ですが、時間軸をパート間の移動の増分指定(xpi,ypi)で平行移動させるという方法で行っています。
マンデルブロ平面を、xpi=0 ならば上下に、ypi=0ならば左右に、それ以外ならば斜行することになります視覚的に言えば平行関係にある時間軸の断面図を重ね合わせて見るということになります。
その他
音律
微分音指定
12音平均率、西欧の7音階、6音の全音階、ヨナ抜き5音階、タイの7等分音階、ガムラン5種類(インドネシア)、ラーガ7種類(インド)、マカーム5種類(アラブ)、笙の音律(4種類)、メシアンの移調の限られた旋法(M.T.L.2 M.T.L.3 M.T.L.4 M.T.L.5 M.T.L.6 M.T.L.7)、琉球の音階、ピュタゴラス音律、純正律、スクリュアビン音階、チュプレニン音階、ルーマニア(5音階と7音階)、日本の陰旋法 以上合計40の音律が
これも聞き慣れない言葉かもしれません。音組織の調律法みたいなものです登録されています。簡単に登録できるので、他にこんな音律で聴いてみたいという方は音階のノートナンパーとピッチベンド値を教えて下さい。個別対応いたします。
本当は設定ファイルを使い自由に登録できるようにすればいいのですが、ちょっとフログラミングが面倒なので、パスです(^^;;;
この指定は音律を12音平均率(orgrをchromatic)にした時のみ有効になります。半音をmicroで指定された数値で割った値が生成される微分音の値となります。
つまり、1:半音、2:4分音、3:6分音...となります微分音を指定すると音域幅の音の数は scale×micro となるので、ご注意ください。
例えば、ピアノの音域(note=20,scale=88)でmicro=3を指定すると、音域幅内の音の数は 266 になります微分音のチューニングはピッチベンドを使って行っていますのでGM規格に準ずる音源であれば、機種に関係なく、正しく演奏できます。
演算精度
マンデルブロ演算を倍精度浮動小数点演算(32ビット)で行っています。したがって、x,yは10E-15、xi,yi, xpi,ypiは10E-7位までが有効となります。この範囲内でxi,yi, xpi,ypiをいろいろ 変化させる
マンデルブロマップの縮尺度を変えるわけですねと様々の表情に音楽が変わります。
マンデルブロ集合はこの縮尺度を拡大すると、小さい縮尺度では見えなかった図形が見えてくるという特性を持っているのが面白いところです。
乖離値
マンデルブロ集合内の点(休符となる)を判定する乖離値(i) は指定可能です。小さくすると休符だらけの荒い(?)音楽となり、大きくすると休みのない息苦しい(??)音楽となります。比喩的に言えば、乖離値を小さくすると、マンデルブロ湖(有界点の集合)の水量を大きくして湖岸周辺を水浸しにすることになり、乖離値を大きくすると、水量を少なくして湖岸周辺の水面下の地形を見えるようすることになります。適当に操作して、様々な変化をお楽しみ下さい。
乖離値を多少変えるだけで結構音楽の表情が変わります。是非、お試しあれ。