2008 / 10 / 16

MarioClock

遅ればせながら東京てら子初参戦してきますた。

全然準備できてなかったので、以前作ったものを無理矢理時計にこじつけて発表。

ただそれではあまりにあれなので、FlashPlayer10 の DynamicSoundGeneration 使ってこんな時計も作りました。
一秒毎に徐々にメロディが変化しながら短いメロディが流れて日付が変わるタイミングでスーパーマリオのあの音が鳴ります。

MarioClock
※要FlashPlayer10

ただ、それだけです。。
バッファしたりとかしないで、SampleDataEvent.SAMPLE_DATA イベントハンドラ内で毎回波形生成/合成してるので音が正しく再生されるかどうかはCPUに依存します。

波形生成がおっつかなかったときはプチプチノイズが混じったり、ビーって変な音が鳴ったりします。
プチプチノイズは、DAW上でリージョンをぶつ切りにしたときに鳴る音と一緒で、波形に急激な変化があったときにDA変換できずに混入するノイズですね。きっと。
ビーッって音は、サンプラーで短いスパンをループさせたときの音と一緒で、新しく波形を生成できなかったときに前に生成した波形が連続して再生されてしまうからですね。きっと。

それから、一秒毎にピッって音も混ぜているんですが波形合成して鳴らしてます(Soundクラスはひとつだけってことです)。
が、ただ単に加算してるだけです。

ちなみに時計エンジンは TeraClock、オシレーター部分は sazameki 使わせてもらいました。

で、せっかく音ネタなので音に反応して文字の色が変わる表示を申し訳なさげに追加。
周波数分析した結果をおおまかに三分割して高い方から順に RGB チャンネルそれぞれに割り当てて文字の色に反映しています。

SoundMixer.computeSpectrum は例のサンドボックス問題があるのできんくまデザインさんの自前FFTを利用してみました。
(ただ、SoudMixer.computeSpectrum の結果とはちがうみたいです)

ソースはこちら

- posted in GEEEEEEEEK

/ 2 comments to MarioClock

  • + あつのすけ

  • + compuedit

  • / leave a comment