问题标签 [spectrum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
317 浏览

actionscript-3 - 在 Flash Player 11 中按通道分析声音

参考我的旧问题AS3:使用 Flash 播放器 11 并使用 Sound.extract 一次一个通道地分析声谱,是否可以提取单个通道并操纵/可视化它的频谱?

我的意思是,如果我将 2 个声音混合到一个文件中,我可以分别控制它们,作用于它们的声波或音量之类的东西吗?

0 投票
1 回答
292 浏览

audio - 音乐样本中的谐波计数

为了确定声音的丰富度,我想确定音乐样本中的谐波数量。为此,我将ProcessingMinim库一起使用,它为我提供了带有FFT的完整频谱。我想知道如何计算FFT产生的频谱中的所有峰值,我什至对基频都不感兴趣。

0 投票
2 回答
1616 浏览

java - 来自正弦样本的离散傅立叶频谱分析的意外结果

http://jvalentino2.tripod.com/dft/index.html

我的代码实际上只是上面的一个副本:

当我在这个样本上运行它时:http: //vigtig.it/sin440.wav

我得到这个结果:

我预计 440 赫兹的最高响应,但事实并非如此。有人可以看到错误或启发我如何误解结果吗?

编辑

在查看了字节/整数转换后,我将脚本改为使用 ByteBuffer。它现在似乎按预期工作。这是工作副本:

0 投票
0 回答
1746 浏览

c# - Bass.dll 只是频谱数据 C#

我正在尝试创建一个基于节拍和频谱检测的游戏。我目前坚持我的函数返回的不是我想要的,因为数组没有完全分配。填充的最后一个元素是错误的,我不知道为什么。

数组大小为 20,此代码仅填充 12 甚至更少

问题是:

  1. 我做得对吗?
  2. 为什么它不返回所有值?
  3. 获取所需数据的最简单方法是什么?

谢谢你的答案。

我很抱歉我的英语不好......

[编辑]

我发现 if 语句或我计算 Times 的方式是错误的:-(

因此,如果您对如何将数据从 4000 个元素的数组获取到 20 个元素的数组有更好的想法,如果您在此处发布您的建议,我会很高兴。

0 投票
2 回答
936 浏览

r - 将 NMR ascii 文件转换为峰列表

我有一些 Bruker NMR 光谱,我用它们来创建一个程序作为项目的一部分。我的程序需要在实际频谱上工作。所以我将布鲁克核磁共振光谱的 1r 文件转换为 ASCII。对于肉碱,这是 ascii 文件的样子(这不是完整列表。完整列表有数千行。这只是一个快照):

这就是频谱:(来源:wisc.edu替代文字

我的程序必须从这些数据中识别出峰值。所以我需要知道如何解释这些数字。以及它们如何准确地转换为光谱中的适当值。到目前为止,这是我学到的:

1.) 第一列代表光谱点位置(ppm)

2.) 第二列代表每个峰的强度。

3.) 请注意,在第二列中有一些数字不是完全对齐但更接近第一列。例如:-34613、-28925、-19395。我认为这很重要。

为了充分披露——我正在用 R 进行编程。

注意:我也在 Biostar 上问过这个问题,但我认为我在这里比那里更有机会得到答案,因为似乎没有多少人在那里回答问题。

编辑:这是我发现的一种解决方案是合理的:

一位朋友给了我一个想法,即使用 awk 脚本来检查文件中强度从正变为负的确切位置,以找到局部最大值。这是一个工作脚本:

如果你不明白,请告诉我。我会改进解释。

另外,我问了这个相关的问题。

0 投票
2 回答
866 浏览

c# - 使用 Bass 库将 libmfcc 移植到 C#

我目前正在使用低音库进行音频分析,它可以计算 FFT 并将其作为数组返回,libmfcc 使用此数据来计算我需要的 MFCC 系数的值。(信息:MFCC 就像一个音频频谱,但它更适合人类听觉和频率缩放的工作方式)低音库返回从 0 到 1 的值作为 FFT 值。

现在我遇到了几个问题和疑问:

  • 他们的 FFT 示例数据似乎具有不同的格式,值非常高,并且 8192 个 FFT 值的总和为 10739.24 ,这怎么可能?[/li]
  • 在他们的示例应用程序中,他们调用函数,如下所示。如果他们只加载 8192 个值,为什么他们使用 128 作为 FFT 数组大小?
  • 使用我复制和编辑的他们的 MFCC 类以匹配 C# 语法/函数我得到一些系数的负值,我不认为应该是这种情况。

谁能帮我解释为什么它返回负值或我做错了什么?我做了一个简单的示例 Ready to Try Program,它完成了上述操作,对调试很有用。
链接:http ://www.xup.in/dl,17603935/MFCC_Test.rar/

我的 C# 应用程序的输出(很可能不正确)

Coeff 16 = 0,017919318626506 Coeff 17 = -0,155580763009355 Coeff 18 = -0,76072865841987 Coeff 19 = 0,108961510335727 Coeff 20 = 0,819025783804398 Coeff 21 = -0,660508603974514 Coeff 22 = -0,951623924906163 Coeff 23 = 0 ,424922129906254 Coeff 24 = 0,0129727009313168 Coeff 25 = -0,388796833267654 Coeff 26 = 0,270839393161931 Coeff 27 = -0,138515788828431 Coeff 28 = -0,454837674981149 Coeff 29 = -0,448629344922371 Coeff 30 = -0,11908663618393 Coeff 31 = 0,237500036702818 Coeff 32 = 0,114874386870208 Coeff 33 = -0,100822381384326 Coeff 34 = 0,144242143551012 Coeff 35 = 0,209338502838453 Coeff 36 = 0,247588420953066 Coeff 37 = -0,451654204112441 Coeff 38 = 0,0346927542067229 Coeff 39 = 0,180816031061584

他们的示例 FFT 数据(不同格式?)

14.524506 38.176063 10.673860 3.705076 2.102398 1.461585 1.145616 0.974108 0.878079 0.825304 0.798959 0.789067 0.789914 0.797102 0.808576 0.822048 0.836592 0.851101 0.864869 0.877625 0.888780 0.897852 0.905033 0.910054 0.912214 0.912414 0.909593 0.904497

0 投票
4 回答
1619 浏览

fft - 从音频样本中识别单个吉他和弦

我意识到这里已经有一些关于和弦检测算法的问题。然而,其中大部分似乎更多地与将歌曲解释成和弦集或和弦转录有关。我的问题应该简单得多,因为我只对录制吉他和弦的单个弹奏感兴趣,然后对其进行分析以返回播放的和弦。并且,如果这被证明太难了,那么简单地能够判断一个特定的和弦是否被正确弹奏就足够了,例如,向用户展示一个尝试弹奏的和弦,并且在弹奏之后,应用程序会告诉他们他们是否演奏了正确的和弦(某种记忆游戏)。我认为第二个选项会更容易,因为应用程序已经知道期望什么和弦。

作为同一应用程序的一部分,我已经在吉他调音器中使用 FFT 和谐波乘积频谱,并且非常想获得一些关于如何分析 FFT 输出的频谱以识别吉他和弦的建议。我也愿意接受有关此事的任何其他建议,并且非常感谢我能得到的任何帮助。

谢谢

0 投票
1 回答
2680 浏览

java - 在java中实现谐波乘积谱算法

我目前正在使用 Java 开发吉他调音器程序,并且正在尝试实现谐波乘积频谱算法以确定基频。

目前,我制作了一种方法,可以将我的频谱下采样f因子。

我现在正试图将所有不同的下采样频谱相乘。我正在用 java 编码并使用数组。因此,我有针对已下采样的索引的数组和针对我的频谱的不同值的数组。我现在正试图将所有不同的数组设置为相同的大小并组织它们的值,以便它们对应于正确的下采样索引。我在大小和值方面有很多问题....

此外,我正在尝试根据我在纸上的一个例子来实现这个算法......因此我只能用 4 个下采样频谱来实现这个算法,但我怀疑当我实际使用真实的声音信号时这是否足够.

下面是下采样方法的代码:

这种方法似乎奏效了。

到目前为止,这是我对 HPS 算法的方法:

我被困在这里。我想做一个将两个不同长度的数组相乘的方法。

基本上,如您所见,当我对频谱图进行下采样时,我得到两个数组:

  • 一个索引是下采样的
  • 另一个具有下采样后的值。

我想做的是创建一个与indexDownSample:大小相同的数组valuesDownSample。例如,我们有indexDownSample[0] = 0. 我想拥有valuesDownSample[0]的乘积,valuesSpectCut[0] *valuesSpect2[0]*valuesSpect3[0]*valuesSpect4[0]因为所有这些数组都有一个对应于索引 0 ( indexSpectCut[0] = 0, indexSpect2[0] = 0 = indexSpect3[0] = indexSpect4[0]) 的值。

对于indexDownSample[1]=0.25,我们注意到只有indexSpect4[1]= indexDownSample[1] = 0.25 We 将默认为 0 valuesDownSample[1]

我们继续这样,直到我们填满了数组。

如果一切顺利,我们应该在最后:

  • valuesDownSample 包含产品的不同值
  • indexDownSample 包含不同的下采样索引。

我只需要找到最大峰值就可以找到我的基频。

我唯一的问题是我不知道如何进行乘法......

如果有人有想法,我将不胜感激!

0 投票
2 回答
1431 浏览

java - 使用 FFT 进行频谱分析,基频推导

我需要对一个简单的 wav 文件进行光谱分析。我已经做过的事情:

将文件读入字节数组:

然后我将其转换为真实值(双打)。我已经将样本值存储在 double[] 数组中。

如何对这些样本进行 FFT + 估计基频?

使用JTranforms库我尝试了这样的事情:

这是对的吗?

感谢所有建议;)

0 投票
1 回答
7245 浏览

ios - iOS FFT Accerelate.framework draw spectrum during playback

UPDATE 2016-03-15

Please take a look at this project: https://github.com/ooper-shlab/aurioTouch2.0-Swift. It has been ported to Swift and contains every answer you're looking for, if you cam here.


I did a lot of research and learned a lot about FFT and the Accelerate Framework. But after days of experiments I'm kind of frustrated.

I want to display the frequency spectrum of an audio file during playback in a diagram. For every time interval it should show the magnitude in db on the Y-axis (displayed by a red bar) for every frequency (in my case 512 values) calculated by a FFT on the X-Axis.

The output should look like this: enter image description here

I fill a buffer with 1024 samples extracting only the left channel for the beginning. Then I do all this FFT stuff.

Here is my code so far:

Setting up some variables

Doing the FFT. FrequencyArray is just a data structure that holds 512 float values.

The output looks always kind of weird although it some how seems to move according to the music.

I'm happy that I came so far thanks to some very good posts here like this: Using the apple FFT and accelerate Framework

But now I don't know what to do. What am I missing?