web-dev-qa-db-ja.com

C ++で音楽ビジュアライザーを書き始める方法は?

私はOpenGLの使い方を学ぶことに興味があり、音楽ビジュアライザーを書くことを思いつきました。誰かが私に必要な要素とこれを行うためにどのように学ぶべきかについてのいくつかの指針を教えてもらえますか?

20
victor

C++/CLIを使用する場合、ここに WPF 4(つまり;)表示を使用します。

彼はあなたが何を求めているかについてかなりの情報を持っている このサイトアーカイブ )を参照しています、ここに特定のページからの概要があります。

音を周波数に分割するにはどうすればよいですか?私たちの耳は機械的な手段でそれを行い、数学者はフーリエ変換を使用してそれを行い、コンピューターはFFTを使用してそれを行います。

  1. 音の物理学
    • 調和振動子
  2. サンプリングサウンド
  3. フーリエ解析
  4. 複素数
  5. デジタルフーリエ変換
  6. FFT

ああ、私は thisarchived )を数分後に見つけました、それはネイティブC++アナライザーです。コードが含まれているので、実行できます。

14

BeatHarnessを作成するための私のアプローチ( http://www.beatharness.com ):

  • リアルタイムで音声を録音する
  • 周波数強度を取得するためにオーディオでFFTを実行するスレッドがあります
  • 左右のチャンネルの音量を計算する
  • 周波数をバンド(低音、中音、高音)でフィルタリングします

これで、グラフィックディスプレイで使用するいくつかのNice変数ができました。たとえば、サイズに低音を掛けた画像を表示します。これにより、ビートを拡大する画像が得られます。そこからそれはあなた自身の想像力です! :)

4
Led

あなたはあなた自身のオーディオ/音楽プレーヤーを書こうとしていますか?おそらく、既存のプレーヤー用のプラグインを作成してみて、コーデック、dsp、およびオーディオ出力デバイスの細かな点ではなく、グラフィックスに集中できるようにする必要があります。

WinAMPとFoobarには視覚化プラグイン用のAPIがあることを私は知っています。 Windows MediaPlayerとiTunesにもあると思います。メディアプレーヤーを選んで読み始めるだけです。それらのいくつかは、純粋なOpenGLに集中できるように、そこから開始できる既存のOpenGLプラグインを持っている場合もあります。

1
basszero

FFTWではなくlibvisualのFFT/DCT関数の使用を検討することをお勧めします。それらは操作がはるかに簡単で、ビジュアルを生成するために同様に操作しやすいデータを提供します。いくつかのメディアプレーヤーと視覚化プラグインは、ビジュアルにある程度libvisualを使用しています。例:トーテム(プレーヤー)、GOOM(トーテムおよび他のプレーヤー用のプラグイン)、PsyMP3 2.x(プレーヤー)

0
Kirn Gill

基本的な3Dまたは高速化された2Dの直後の場合は、C++でのOpenGLの基本をカバーするDaveAstleの " OpenGLゲームプログラミングの開始 "のコピーを購入することをお勧めします。

0
PowerApp101

FFTアルゴリズムの実装とその他の有用な情報は、 Cの数値レシピ 本にあります。この本は無料です。 C++の数値レシピ 本もあります。

0
anon

音楽分析の部分では、フーリエ級数の基礎を研究してから、DFFT(デジタル高速フーリエ変換)アルゴリズムの無料の実装を選択する必要があります。

0
Jem