2

我正在使用位于以下位置的 EZAudio 项目:

https://github.com/syedhali/EZAudio

我正在尝试创建一个基于音频源的 FFT 输出模式的应用程序。基本上,音频播放时间沿 x 轴,FFT 沿 y 轴。当音乐播放时,一个由正方形组成的图案,正方形的颜色将由该 FFT 子区域中的频率幅度决定。

代码如下所示:

//------------------------------------------------------------------------------
#pragma mark - EZAudioPlayerDelegate
//------------------------------------------------------------------------------

- (void)  audioPlayer:(EZAudioPlayer *)audioPlayer
          playedAudio:(float **)buffer
       withBufferSize:(UInt32)bufferSize
 withNumberOfChannels:(UInt32)numberOfChannels
          inAudioFile:(EZAudioFile *)audioFile
{
    [self.fft computeFFTWithBuffer:buffer[0] withBufferSize:bufferSize];
}

//------------------------------------------------------------------------------
#pragma mark - EZAudioFFTDelegate
//------------------------------------------------------------------------------

- (void)        fft:(EZAudioFFT *)fft
 updatedWithFFTData:(float *)fftData
         bufferSize:(vDSP_Length)bufferSize
{
    __weak typeof (self) weakSelf = self;
    dispatch_async(dispatch_get_main_queue(), ^{
        [weakSelf.audioPlot updateBuffer:fftData withBufferSize:(UInt32)bufferSize];
        for (int i = 0; i<bufferSize; i++) {
            NSLog(@"fft val %f", fftData[i]);
        }
    });
}

NSLog 是为了证明我的问题。我从一个时间点选择了两个随机列表并将它们粘贴在下面。基本上我认为 FFT 值的最大值可能是 1,但其中一个值是 6.952471,而在另一个值中,所有值都很小,例如 0.001,即使我能听到它正在播放某些东西。我究竟做错了什么?

我正在尝试重现使用 Flash 的 computeSpectrum 函数的东西,该函数返回 0 到 1 之间的 256 个浮点数的数组。这看起来很简单!

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundMixer.html#computeSpectrum()

Point 1 | Point 2
------- | -------
0.005816 | 6.952471
0.010704 | 1.260185
0.004519 | 0.266269
0.002781 | 0.152540
0.038111 | 0.073087
0.274509 | 0.125507
0.004770 | 0.010155
0.001016 | 0.023328
0.000611 | 0.032141
0.000115 | 0.003583
0.001193 | 0.009749
0.000731 | 0.011863
0.000630 | 0.027307
0.000996 | 0.002040
0.000452 | 0.005508
0.002430 | 0.004133
0.001266 | 0.006598
0.000089 | 0.001877
0.000483 | 0.002913
0.000826 | 0.004395
0.005266 | 0.003958
0.014211 | 0.002250
0.008589 | 0.008281
0.004920 | 0.002627
0.008350 | 0.002476
0.002999 | 0.003924
0.002559 | 0.007930
0.005831 | 0.004289
0.011384 | 0.001885
0.012413 | 0.005358
0.006980 | 0.002461
0.013374 | 0.000612
0.015251 | 0.005339
0.003759 | 0.002789
0.006180 | 0.000378
0.003345 | 0.001412
0.008930 | 0.001558
0.003787 | 0.002587
0.000106 | 0.001820
0.001123 | 0.000735
0.000924 | 0.001579
0.000151 | 0.001727
0.002845 | 0.000791
0.008067 | 0.001092
0.005768 | 0.002239
0.000094 | 0.001397
0.001194 | 0.002666
0.001379 | 0.001862
0.006607 | 0.002025
0.000655 | 0.002483
0.004555 | 0.001759
0.000482 | 0.001794
0.002681 | 0.002802
0.000500 | 0.000716
0.002257 | 0.002413
0.000055 | 0.001505
0.001836 | 0.002478
0.002179 | 0.001258
0.006315 | 0.001065
0.000939 | 0.001652
0.000145 | 0.002018
0.004384 | 0.001556
0.002653 | 0.002018
0.000954 | 0.001747
0.000014 | 0.001198
0.000021 | 0.001133
0.000004 | 0.000924
0.000018 | 0.000901
0.000051 | 0.000748
0.000023 | 0.000646
0.000022 | 0.000739
0.000114 | 0.000669
0.000567 | 0.000658
0.001699 | 0.000710
0.000680 | 0.000622
4

0 回答 0