土曜日, 5月 20, 2006

ドリトルでアート No.06 ステップ・音・ステップ

CGに音が付けば(CG+DTM)さらに面白い作品ができそうだ。そこで、今日は図形と音を同期させられないか試してみた。色んな方法を試したがなかなか難しい。

バンドオブジェクトはテンポの指定ができるので、この値からタイマーオブジェクトのタイマー間隔を計算して試してみる。

それと、四角形(ラベルオブジェクト)の縦横に別の大きさを指定出来るようxpsetメソッドも作ってみた。

//ステップ・音・ステップ

描画:xpset=[ |x y color s1 s2|
 ラベル! 作る (s1)(s2) 大きさ (x)(y) 位置 (color) 色 "" 書く
].
square=配列!作る.
py=-150.[square! (描画! (-100)(py)(白)(200)(28) xpset)入れる. py=py+30]! 12 繰り返す.

調子=配列!作る "ド"入れる "ミ"入れる "ファ"入れる "ソ"入れる "シ"入れる "↑ド"入れる "↑ミ"入れる "↑ファ"入れる "↑ソ"入れる "↑シ"入れる "↑↑ド"入れる "↑↑ミ"入れる.
num=100.
tone=配列!作る. [tone! (random(12)) 入れる]! (num) 繰り返す.
作品=メロディ!作る. piano=001. tempo=120.
時計=タイマー!作る (28.8/tempo) 間隔.

m=0.時計! [m=m+1. n=(tone!(m)見る).
 square!(n) 見る (色!(random(255))(random(255))(random(255))作る) 色.
]実行.

l=0.[l=l+1. 作品! (調子!(tone!(l)見る)見る) 追加]! (num) 繰り返す.
バンド!作る (楽器!(piano) 作る (作品) 設定) 追加 (tempo) テンポ 演奏 待つ.

//--------- ここまで ----------



音と絵が微妙にずれる。やっぱりきっちり音と絵を同期させるのはむずかしい。