フラクタル音楽
〜可視化と可聴化の世界〜
MathPower 2016-10-04
岩淵 勇樹 (@butchi_y)
アカウント紹介
 https://twitter.com/butchi_y
 https://www.instagram.com/carpet_fra
ctal/
#フラクタル音楽
で検索
ソース画像と生成された音楽
自己紹介
 岩淵勇樹 ( IWABUCHI Yu(u)ki )
 金沢大学自然科学研究科修了
 博士(工学)
 面白法人カヤック
HTMLファイ部・人事部
 博士論文は
「図形と音声の変換方法と
その応用に関する研究」
用語
 カーペットフラクタル(造語)
 解析信号
 ラスタスキャン
岩淵流フラクタル生成法
 カーペットフラクタル
→ シェルピンスキーのカーペットに
類似した汎用生成方法
 代表的な有名フラクタル
◦ シェルピンスキーのギャスケット
◦ Hexaflake
◦ カントールの塵
 今日はこの手法を発展させます。
シェルピンスキーのカーペットとは
 正方形3分の1ずつ
切り抜く
 それを繰り返した
極限(フラクタル)
 面積0
https://en.wikipedia.org/wiki/Sierpinski_carpet
カーペットフラクタルとは
 1×1配列→3×3配列→9×9配列
と膨張していく
 配列の便宜上、「くり抜く」ではなく
「膨張」の手法をとる
(→あとで縮小すればいい)
1 1 1
1 0 1
1 1 1
0 0 0
0 0 0
0 0 0
1 0を に置換 を に置換
膨張していく様子
1 1 1
1 0 1
1 1 1
1
1 1 1 1 1 1 1 1 1
1 0 1 1 0 1 1 0 1
1 1 1 1 1 1 1 1 1
1 1 1 0 0 0 1 1 1
1 0 1 0 0 0 1 0 1
1 1 1 0 0 0 1 1 1
1 1 1 1 1 1 1 1 1
1 0 1 1 0 1 1 0 1
1 1 1 1 1 1 1 1 1
→ →
カーペットフラクタルの多様性
以外の配列を指定(大きさも自由)
することにより汎用的に使える
1 1 1
1 0 1
1 1 1
0 1
1 1
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
とか
1 1 1
1 0 1
1 1 1
とか とか
デモ
 http://jsdo.it/butchi/carpet_fractal
広義のカーペットフラクタル
 くり抜く部分にビットを埋め込む
 例:
1 1 1
1 0 1
1 1 1
0 0 0
0 1 0
0 0 0
1
0
→
→
ラスタスキャン
 ブラウン管テレビ時代の
表示方式
 左から右へ、そして
上から下へ
 幾何学模様との
相性がいいことが判明
W. S. Yeo, et al. Raster Scanning: A New Approach
to Image Sonification,
Sound Visualization, Sound Analysis And Synthesis
ラスタスキャン
映像
 ソースのカーペットは静止画で味気ない
 解析信号によって音声と連動し可視化
参考: 岩淵勇樹 博士論文
音を形にする
Sinc関数 鋸波 三味線
ハーモニカ ギター バイオリン
予備知識
 三角関数
sin(t+p/2) = cos(t)
 複素平面
x軸が実数部(Re)でy軸が虚数部(Im)
 オイラーの公式
eiwt = cos(t) + i sin(t)
 (フーリエ変換・フーリエ級数展開)
(関数を三角関数に分解する)
三角関数と指数関数
 三角関数
(cos(a t+q))は
指数関数(ei a t+q)の
実数部(オイラーの公式より)
 ばね(指数関数)の方
が自然な形
cf) |{cos(t)}’| =|-sin(t)|
|{ei t}’| =|i ei t| =1
ヒルベルト変換
1. 音声信号を三角関数(正弦波)に分解
2. 位相を1/4周期(90度)ずらす(cosをsinに)
3. 分解した正弦波を足し合わせる
⇒ヒルベルト変換
音声信号
(例: 三角波)
6 4 2 2 4 6
1.0
0.5
0.5
1.0
6 4 2 2 4 6
1.0
0.5
0.5
1.0
6 4 2 2 4 6
1.0
0.5
0.5
1.0
6 4 2 2 4 6
1.0
0.5
0.5
1.0
= + + +…
6 4 2 2 4 6
0.6
0.4
0.2
0.2
0.4
0.6
= 6 4 2 2 4 6
1.0
0.5
0.5
1.0
6 4 2 2 4 6
1.0
0.5
0.5
1.0
6 4 2 2 4 6
1.0
0.5
0.5
1.0
+ + +…
↓ ↓ ↓
⇒
ヒルベルト変換
音声信号の複素化
実数部: 元の音声信号
虚数部: ヒルベルト変換した音声信号
t
t
Re
Im
t
+
Re
Im
Re
Im
Re
Im
複素平面に投影
(時間軸を潰す)
音は形にできる
Sinc関数 鋸波 三味線
ハーモニカ ギター バイオリン
鳴らす
 フラクタル音楽の出来上がり〜
Mathematicaプログラム
生成から画像出力・音声出力まで
たったの3行
Mathematica素晴らしい!
なぜ音楽に聞こえるのか
 一つのフラクタル図形が、音色と音階
と旋律合わせた音声信号を生成
 カーペットのジェネレーターの高さが
偶数だと四拍子的に聞こえる
更新内容
 6月12日〜
2x2カーペットのシフト★
 6月30日〜
2x2カーペット
 7月9日〜
2x4のカーペット★★
 7月17日〜
8x2のカーペット★
 8月1日〜
5x2のカーペット
 8月8日〜
2x5のカーペット
 8月16日〜
2x3のカーペット
 8月22日〜
2x4のカーペット
 8月30日〜
2x13のカーペット★
 9月5日〜
2x7のカーペット★
 9月13日〜
3x2のカーペット
 9月20日〜
4x4のカーペット★
 9月20日〜
3x3のカーペット★
 10月3日〜
2x2カーペットのシフト★
今後の予定
 これまでは0,1列がメインだったので
実数範囲で動く波形を増やしたい!
 そもそもの生成方法を模索
おさらい
1. ジェネレーターを指定
2. カーペットフラクタル生成
3. ラスタスキャンによる可聴化
4. 解析信号による可視化
聴いてください。「Real Xor」
これは何?
 本来は整数に
適用する「BitXor」
 これを間違えて
実数に適用
 そして偶然現れた
音楽。
1桁のBitXor
 BitXor[0, 0] = 0
 BitXor[0, 1] = 1
 BitXor[1, 0] = 1
 BitXor[1, 1] = 0
複数桁のBitXor
 BitXor[61, 15] == 50
 6110 == 1111012
 1510 == 0011112
 5010 == 1100102
実数のBitXor
 BitXor[0.2, 0.2] == 0
 BitXor[0.1, 0.2] == BitXor[0.1, 0.2]
 BitXor[0.2, 0.2, 0.1] == 0.1
 BitXor[0.1, 0.1, 0.2, 0.2] == 0
 BitXor[hoge, hoge] == 0
 BitXor[hoge, piyo, hoge] == piyo
今後のフラクタル音楽候補
ウォルシュ行列
自己加算カーペット
フーリエ変換カーペット
カオスと秩序の狭間1
 「Real Xor」のランダム値に
偏りを持たせる
カオスと秩序の狭間2
 「Real Xor」のランダム値に
もっと偏りを持たせる
まとめ
 規則的な幾何学模様をラスタスキャン
すると音楽になる
 フラクタルによる音楽生成を実現
 様々な生成方法を模索中
以上
 ご清聴ありがとうございました。

フラクタル音楽 〜可視化と可聴化の世界〜