[ AS3 ] 音の波形をいじってみる - 08/05/29 23:41
800KBくらいあるからちょっと待って。始まると音出るよ。
SoundMixer.computeSpectrumで波形が取れるのでAS3で遊んでみた。
ついでにフーリエ変換をちょっと復習した。学生の頃よりは理解した、と思う。どうでもいい話だ。
左のスライダーを下げるとモロに処理落ちするので注意ね。
流れを書いてみる。
SoundMixer.computeSpectrumでとったByteArrayのデータを左チャンネル、右チャンネルくっつけて、HSV色データにしてぐるっと1周並べる。
HSVデータのHはループのインデックス(512段階)を色角度(360段階)に縮めてセット。
Sは(byteArray.readFloat()+1)*50 のような感じで0〜100に変換。
Vは基本100。これ後でちょっといじる。
次に、中心から放射線状に512本線を引く。線の長さはSの値をそのまま使用。なので、音全開だと半径100の正円になるハズ。
ここで、線の長さが一定以上の時は線の先にムービークリップを生成する。
この時の条件に左のスライダーの値を使用。スライダーを上げる程、条件が厳しくなるのでムービークリップが出来ない。逆に、一番下だと長さ0以上なら生成なので最大512個のムービークリップを一度にnewしてフリーズ。
長さが達していても、さっき作ったムービークリップが残ってた場合は新たに作らず、Vを下げて線を描画。
そもそも長さが達していなかったら描画なし。
作られたムービークリップはsinで揺れながらeaseInCubicで昇天するだけ。場外でremoveChild。
とこんな感じ。
外部サウンドを読み込むswfを置いておきます。
解凍して出来たswfと同階層に sound.mp3 って名前のmp3を置くと見れます。
曲によって色々あるけど、スライダーをいじってみていい感じのところを見っけてみてください。
60まで落とすと処理落ちすると思う。上のサンプルは71。ダウンロードするswfは初期値90にしてあります。
« [ 雑記 ] 世界一でかい嘘だった | ブログトップ | [ AS3 ] 音の波形をパンしてみる »
トラックバックURL :