• 大小: 9KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: Qt  频谱图  

资源简介

基于Qt4.5的一个频谱绘制源码,下载后编译,运行即可

资源截图

代码片段和文件信息

/***************************************************************************
 *   Copyright (C) 2008 - Giuseppe Cigala                                  *
 *   g_cigala@virgilio.it                                                  *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not write to the                         *
 *   Free Software Foundation Inc.                                       *
 *   59 Temple Place - Suite 330 Boston MA  02111-1307 USA.             *
 ***************************************************************************/


#include “qfreq.h“

QFreq::QFreq(QWidget *parent) : QWidget(parent)
{
    initValue();
    initColor();

}

void QFreq::initValue()
{
    start_point = 0;
    zoom_point = ((1024/2)+1)*20000/22050;
    freq1 = 0;
    freq2 = 5;
    freq3 = 10;
    freq4 = 15;
    freq5 = 20;
    range_freq = 20;
    typeFFT = 0;
    lockFFT = false;

}

void QFreq::initColor()
{
colLin = Qt::black;
    colLog = Qt::black;
    col512 = Qt::black;
    col1024 = Qt::black;
    col2048 = Qt::black;
    col4096 = Qt::black;
    colLock = Qt::red;
}

void QFreq::setZoomPoint(int N)
{
    zoom_point = ((N/2)+1)*20000/22050;
}

void QFreq::calculateFFT(int N)
{
    /*
       QFile file (“test.wav“);
       if (!file.open(QIODevice::ReadOnly))
           return;
       char *data;
       file.read(data N);

       for (i =0; i <=N; i++)
       {
           in[i] = (double)data[i];
           i++;
       }
      
       */
    double *in;
    double *out;
    fftw_plan plan;
    double A[N];
    magnitudeLin = 0;
    magnitudeLog = 0;
    min_val_lin = 5000000;
    max_val_lin = -1000;
    min_val_log = 5000000;
    max_val_log = -1000;
    int is16bitfile = 1;
    int val val2;
    char inc[N];
    FILE *infile;
    const char * fileName = wavFile.toLatin1().data();
    infile = fopen(fileName “r“);

    // skip wav file header
    fgets(inc37infile);
    fgets(inc9infile);

    // read data and fill “A“-array
    for (int v=0; v    {
        val = fgetc(infile);
        if (is16bitfile)
        {
            val2 = f

评论

共有 条评论