私は OpenGL の使い方を学ぶことに興味があり、音楽ビジュアライザーを作成するというアイデアがありました。必要な要素と、これを行うにはどうすればよいかについて、誰かが私にいくつかの指針を与えることができますか?
8 に答える
C++/CLI を使用する場合、WPF 4 (フーリエ) 表示を使用する例を次に示します。
彼はこのサイト(アーカイブ済み) を参照しています。このサイトには、あなたの質問に関するかなりの情報が含まれています。特定のページの概要を次に示します。
音をどのように周波数に分割しますか? 私たちの耳は機械的な方法で、数学者はフーリエ変換を使用して、コンピューターは FFT を使用してそれを行います。
- 音の物理学
- 高調波発振器
- サンプリング音
- フーリエ解析
- 複素数
- デジタルフーリエ変換
- FFT
ああ、数分後にこれ(アーカイブ済み) を見つけました。これはネイティブの C++ アナライザーです。コードが含まれているので、すぐに実行できます。
BeatHarness ( http://www.beatharness.com ) を作成するための私のアプローチ:
- オーディオをリアルタイムで録音する
- オーディオでFFTを実行して周波数強度を取得するスレッドがあります
- 左右のチャンネルの音量を計算する
- 帯域内の周波数をフィルタリングします (低音、中音、高音)
これで、グラフィックス ディスプレイで使用できる便利な変数がいくつかできました。たとえば、サイズに低音を掛けた画像を表示します。これにより、ビートにズームインする画像が得られます。そこから先はあなたのイマジネーション!:)
独自のオーディオ/音楽プレーヤーを作成しようとしていますか? おそらく、既存のプレーヤー用のプラグインを作成してみて、コーデック、dsp、およびオーディオ出力デバイスの詳細ではなく、グラフィックスに集中できるようにする必要があります。
WinAMP と Foobar には、視覚化プラグイン用の API があることを知っています。Windows Media Player と iTunes にもあると思います。メディアプレーヤーを選んで読み始めてください。それらの一部には、純粋な OpenGL に集中できるように、そこから開始できる既存の OpenGL プラグインさえある場合があります。
Numerical Recipes in C bookでは、FFT アルゴリズムの実装やその他の有用な情報を見つけることができます。この本は無料です。Numerical Recipes in C++の本もあります。
基本的な 3D または高速化された 2D を使用したい場合は、Dave Astle の「Beginning OpenGL Game Programming」のコピーを購入することをお勧めします。これは、C++ での OpenGL の基本をカバーしています。
音楽分析の部分では、フーリエ級数の基礎を学習してから、DFFT (デジタル高速フーリエ変換) アルゴリズムの自由な実装を選択する必要があります。
libvisual の FFT/DCT 関数を FFTW で使用することを検討してください。それらは操作がはるかに簡単で、ビジュアルを生成するために同様に操作しやすいデータを提供します。いくつかのメディア プレーヤーと視覚化プラグインは、ビジュアルに libvisual をある程度使用しています。例: Totem (プレーヤー)、GOOM (Totem および他のプレーヤー用のプラグイン)、PsyMP3 2.x (プレーヤー)
私の観点からは...このサイトをチェックしてください: http://nehe.gamedev.net/
OpenGL を使用するための非常に優れた情報とチュートリアル