Sono interessato ad imparare ad usare OpenGL e ho avuto l'idea di scrivere un visualizzatore musicale. Qualcuno può darmi qualche suggerimento su quali elementi ho bisogno e su come dovrei andare a imparare a fare questo?Come iniziare a scrivere un visualizzatore musicale in C++?
risposta
Se si utilizza C++/CLI, ecco an example che utilizza il display WPF quattro (fourier is;).
Si riferisce a this site che ha informazioni considerevoli su ciò che si sta chiedendo, qui è una linea esterna dalla pagina specifica;
Come suddividere l'audio nelle frequenze ? Le nostre orecchie lo fanno tramite i mezzi meccanici , i matematici lo fanno utilizzando le trasformate di Fourier e i computer utilizzando FFT.
- The Physics of Sound 1.2. Oscillatore armonico
- Suoni campionati
- Fourier Analysis
- numeri complessi
- digitale Fourier Transform
- FFT
Ahhh, ho trovato this pochi minuti dopo, è un analizzatore nativo C++ . Codice incluso, che dovrebbe farti andare e correre.
Dal mio punto di vista ... controllare questo sito: http://nehe.gamedev.net/
davvero una buona informazione e Tutorial per l'utilizzo di OpenGL
Stai cercando di scrivere il proprio audio /lettore musicale? Forse dovresti provare a scrivere un plug-in per un player esistente in modo da poterti concentrare sulla grafica piuttosto che sui minimi dettagli di codec, dsp e dispositivi di output audio.
So che WinAMP e Foobar hanno API per i plug-in di visualizzazione. Sono sicuro che Windows Media Player e iTunes hanno anche loro. Basta scegliere un lettore multimediale e iniziare a leggere. Alcuni di essi potrebbero anche avere plugin OpenGL esistenti dai quali è possibile iniziare in modo da potersi concentrare sulla pura OpenGL.
Non sto provando a scrivere un lettore o altro, solo qualcosa che prenderà in MP3 e visualizzarlo, ma non so nulla su come collegare tutti quei pezzi. Sono su Linux, quindi mi limiterei a qualcosa di semplice. Non ho davvero pensato di integrarlo in qualcos'altro. – victor
considera l'utilizzo di una libreria come mpg123, libmad o ffmpeg per decodificare quindi mp3 in campioni audio. Da lì ti consigliamo di usare DFT (FFT) per convertire le informazioni audio in frequenza (vedi FFTW). A questo punto avrai dati di frequenza raw simili a quelli che vedi nella maggior parte dei visuliazers (linee mobili di winamp/xmms con picchi). Dopodiché è necessario capire cosa visualizzare in base alla frequenza e ai cambiamenti di frequenza. – basszero
Se si è appena dopo un 2D di base o 2D accelerato, consiglierei di acquistare una copia di "Beginning OpenGL Game Programming" di Dave Astle che copre le nozioni di base di OpenGL in C++.
Per la parte di analisi musicale, è necessario studiare la base delle serie di Fourier, quindi scegliere un'implementazione gratuita di un algoritmo DFFT (digital fast fourier transform).
È possibile trovare l'implementazione degli algoritmi FFT e altre informazioni utili nel libro Numerical Recipes in C. Il libro è gratuito AFAIK. C'è anche il libro Numerical Recipes in C++.
Il mio approccio per la creazione di BeatHarness (http://www.beatharness.com):
- registrare audio in tempo reale
- avere un filo che corre una FFT sul audio per ottenere le intensità di frequenza
- calcolare audio volume per sinistro e canale destro
- filtro le frequenze nelle 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 il basso: questo ti darà un'immagine che ingrandirà il battito. Da lì in poi è la tua immaginazione! :)
Si consiglia di prendere in considerazione l'utilizzo delle funzioni FFT/DCT di libvisual su FFTW; sono molto più semplici da utilizzare e forniscono dati altrettanto facili da utilizzare per generare immagini. Diversi lettori multimediali e plug-in di visualizzazione utilizzano in una certa misura le immagini libvisue. Esempi: Totem (lettore), GOOM (plugin per Totem e altri giocatori), PsyMP3 2.x (lettore)