「言霊クラドニ」の開発中に考えたこと、つまずいたこと、直した過程の記録です。
最終更新日:2026年9月
クラドニ図形をモチーフにした模様は、低音・中音・高音のエネルギーをそれぞれ「模様の大きさ」「花びらの数」に変換することで動かしています。ところが実際に色々な曲を聴かせてみると、ジャンルは違っても模様の変化の幅が意外と狭く、「面白い曲もあれば、単調に感じる曲もある」という状態でした。原因を探ってみると、実際の音楽は低音・中音・高音のどれかに極端に偏ることは少なく、多くの曲がそれなりに全帯域を含んでいるため、素直にエネルギー量だけを反映すると似たような値に収束しやすい、という性質が見えてきました。
そこで考えたのが、曲を再生し始めてからの最初の数秒間を「聴き取り」の時間として使い、その間の音の傾向(周波数帯域ごとの平均的な強さ)を、その曲固有の「指紋」として記憶する仕組みです。指紋が決まった後は、その指紋を基本の形(花びらの数・模様の大きさ)として使い、そこに音楽のリアルタイムな変化を小さな揺らぎとして重ねる、という2段構えにしました。
最初は聴き取り時間を短め(3秒)にする案もありましたが、精度と待ち時間のバランスを取って7秒に落ち着きました。また、フレーム数で時間を計っていたところ、端末の描画性能によって実際にかかる時間が変わってしまう(重い処理で30fpsになると、想定の倍の時間がかかる)ことに気づき、実時間(時計の秒数)を基準に計り直す修正も行いました。
※上記3枚は、実際のアプリに周波数特性の異なるテスト音声を読み込ませて撮影した、本物の画面キャプチャです。特定の楽曲を分析したものではありません。
指紋の仕組みを入れた後、今度は「終始安定したアンビエントな曲だと、模様が途中からぴたっと止まってしまう」という新しい課題が出てきました。指紋が確定した後は、曲の傾向が大きく変わらない限り模様が動かないように意図的に設計していたためです。かといって、常に細かく動かしてしまうと、以前対策した「ちらつき」の問題が再発してしまいます。
最終的に、曲の指紋とは完全に独立した「自前の緩やかな時計」を追加することで解決しました。花びらの数や大きさに、1分前後の周期でゆっくり揺れる成分を足しておくことで、音の傾向が完全に一定でも模様は静止せず、かつ急な変化もしない、というバランスを取っています。
模様の大きさの振れ幅を広げた際、中心から離れた場所に、本来の花の模様とは無関係な「たまたま条件を満たしてしまうリング」が現れ、そこに砂が迷い込んで模様と噛み合わない大きな輪を作ってしまう不具合が見つかりました。最初は模様の計算式自体を中心から離れるほど弱める方法を試しましたが、これだと逆に「模様の線に近い」と誤判定されて遠くの場所が明るくなってしまう、という別の不具合を引き起こしてしまいました。最終的には、模様の数式には手を加えず、砂粒の物理演算側で「中心から離れた粒子を穏やかに引き戻す力」と「離れるほど見えにくくする処理」を追加する方式に落ち着きました。
「言霊クラドニ」は今も少しずつ調整を続けています。何か気になる挙動があれば、お問い合わせからお気軽にご連絡ください。