biblioteca Spettrogramma C ++
-
22-09-2019 - |
Domanda
Per il mio progetto attuale in C ++ / Qt ho bisogno di una libreria (LGPL è preferito) che può calcolare uno spettrogramma da un segnale (in pratica una serie di doppie). Uso già Qwt per la parte grafica.
Qualche suggerimento? Grazie.
Soluzione
Sarebbe abbastanza facile da mettere insieme il proprio spettrogramma. I passi sono:
- funzione finestra (abbastanza banale, per esempio. Hanning)
- FFT (FFTW sarebbe una buona scelta, ma se è un licenza problema poi andare per Kiss FFT o simile)
- calcolare log grandezza di componenti dominio della frequenza (Banale: log (sqrt (ri * re + im * im))
Altri suggerimenti
"Come si crea una frequenza in funzione del tempo trama? " elenca diverse librerie, ognuno dei quali può calcolare uno spettrogramma da un segnale.
copiato e incollato dalla mia risposta:
Alcuni codice sorgente per generare spettrogrammi / trame cascata dai dati audio:
- SoX - Audio eXchange include spettrogramma codice sorgente
- Audacity include spettrogramma codice sorgente
- glfer include il codice di visualizzazione dello spettro cascata fonte spettro
- il codice sorgente che utilizza fftw per calcolare la spettrogramma di un flusso audio
- di più il codice sorgente che utilizza OpenAL e fftw per calcolare il spettrogramma per un flusso audio
- "Registratore di suoni attivato con Spettrogramma in C # " da Jeff Morton
- Topographica per includere spettrogramma codice sorgente
- spettrografo per iTunes
immagine per spettrogramma va nella direzione opposta dalle suddette utenze.
è possibile utilizzare fftw (fftw.org) per calcolare lo spettrogramma, si avrebbe ancora bisogno di tracciare i dati, ma questo non dovrebbe essere un problema
È possibile utilizzare il codice FFT da href="http://www.drdobbs.com/cpp/a-simple-and-efficient-fft-implementatio/199500857" qui . Esso utilizza C ++ template metaprogrammazione per l'efficienza. La sorgente completo è fornito dall'autore qui .
E 'stato suggerito di includere questo codice in Eigen per il suo uso di codice basato su modelli (tipo amichevole).