Domanda

Sono interessato a imparare ad usare OpenGL e ho avuto l'idea di scrivere un visualizzatore musicale. Qualcuno può darmi alcuni suggerimenti su quali elementi avrò bisogno e come dovrei imparare a fare questo?

È stato utile?

Soluzione

Se usi C ++ / CLI, ecco un esempio che utilizza il display WPF quattro (fourier che è;).

Fa riferimento a questo sito ( archiviato ) che contiene informazioni considerevoli su ciò che stai chiedendo , ecco una descrizione dalla pagina specifica;

  

Come suddividiamo il suono in   frequenze? Le nostre orecchie lo fanno   mezzi meccanici, i matematici lo fanno   usando le trasformate di Fourier e   i computer lo fanno usando FFT.

     
      
  1. La fisica del suono      
        
    • Oscillatore armonico
    •   
  2.   
  3. Suoni di campionamento
  4.   
  5. Analisi di Fourier
  6.   
  7. Numeri complessi
  8.   
  9. Trasformata di Fourier digitale
  10.   
  11. FFT
  12.   

Ahhh, ho trovato questo ( archiviato ) pochi minuti dopo, è un analizzatore C ++ nativo. Codice incluso, che dovrebbe farti funzionare.

Altri suggerimenti

Il mio approccio per creare BeatHarness ( http://www.beatharness.com ):

  • registra l'audio in tempo reale
  • hanno un thread che esegue un FFT sull'audio per ottenere le intensità di frequenza
  • calcola il volume audio per il canale sinistro e destro
  • filtra le frequenze in bande (bassi, mezzitoni, acuti)

ora hai alcune belle variabili da usare nel tuo display grafico. Ad esempio, mostra un'immagine in cui la dimensione viene moltiplicata per i bassi: questo ti darà un'immagine che ingrandirà il ritmo. Da lì in poi è la tua immaginazione! :)

Stai provando a scrivere il tuo lettore audio / musicale? Forse dovresti provare a scrivere un plug-in per un lettore esistente in modo da poter concentrarti sulla grafica piuttosto che sulla minuzia di codec, dsp e dispositivi di output audio.

So che WinAMP e Foobar hanno API per i plugin di visualizzazione. Sono sicuro che anche Windows Media Player e iTunes li hanno. Basta scegliere un lettore multimediale e iniziare a leggere. Alcuni di essi potrebbero anche avere plugin OpenGL esistenti da cui è possibile iniziare in modo da poter concentrarsi su OpenGL puro.

Se stai cercando un 3D di base o un 2D accelerato, ti consiglio di acquistare una copia di Dave Astle " Inizio della programmazione di giochi OpenGL " che copre le basi di OpenGL in C ++.

Per la parte dell'analisi musicale, dovresti studiare le basi della serie di Fourier, quindi scegliere un'implementazione gratuita di un algoritmo DFFT (digital fast fourier transform).

Puoi trovare l'implementazione degli algoritmi FFT e altre informazioni utili in Ricette numeriche in C libro. Il libro è AFAIK gratuito. C'è anche Ricette numeriche in C ++ libro.

Potresti prendere in considerazione l'uso delle funzioni FFT / DCT di libvisual su FFTW; sono molto più semplici da utilizzare e forniscono dati che sono altrettanto facili da utilizzare per generare effetti visivi. Diversi lettori multimediali e plug-in di visualizzazione utilizzano in qualche modo il libvisual per la loro grafica. Esempi: Totem (giocatore), GOOM (plugin per Totem e altri giocatori), PsyMP3 2.x (giocatore)

Dal mio punto di vista ... controlla questo sito: http://nehe.gamedev.net/

Informazioni ed esercitazioni davvero valide sull'uso di OpenGL

modifica: http://www.opengl.org/code/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top