Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 吉他调音的频率检测_Java_Android_Audio_Frequency_Frequency Analysis - Fatal编程技术网

Java 吉他调音的频率检测

Java 吉他调音的频率检测,java,android,audio,frequency,frequency-analysis,Java,Android,Audio,Frequency,Frequency Analysis,我计划实施一个移动吉他调谐器应用程序。我做了初步的研究,发现了一些常用的基音检测方法,如快速傅立叶变换、自相关等 我还发现FFT不是一种很好的频率检测机制。 由于本项目中有两个部分是检测吉他弦的频率,并将该频率与该弦应该处于的频率相匹配,因此我考虑使用一个已经实现的类库来检测弦的频率 我目前不知道这个项目有多艰难,所以我的问题是项目的哪个部分更艰难?它是匹配两个频率还是检测一个字符串的频率?还有一种方法可以使用FFT,但同时可以获得字符串的准确频率 谢谢您抽出时间。 有许多库可以帮助您做到这一点

我计划实施一个移动吉他调谐器应用程序。我做了初步的研究,发现了一些常用的基音检测方法,如快速傅立叶变换、自相关等

我还发现FFT不是一种很好的频率检测机制。 由于本项目中有两个部分是检测吉他弦的频率,并将该频率与该弦应该处于的频率相匹配,因此我考虑使用一个已经实现的类库来检测弦的频率

我目前不知道这个项目有多艰难,所以我的问题是项目的哪个部分更艰难?它是匹配两个频率还是检测一个字符串的频率?还有一种方法可以使用FFT,但同时可以获得字符串的准确频率

谢谢您抽出时间。

  • 有许多库可以帮助您做到这一点。

  • 手机麦克风应该能够检测到您想要的音频频谱

  • 检测频率是第一部分,FFT应该能够做到这一点

  • 将频率转换为音高是你必须考虑的事情

  • 匹配频率只是第二部分

这是一个好的开始:

FFTW是“西方最快的傅立叶变换”,并有一些Java包装:


TarsosDSP项目是一个java音频处理库,包含几种基音检测算法。您可以使用提供的测试工具对它们进行测试,看看哪一个最适合您的情况。源代码可以在

该库是开源的,可在Android上使用。我认为这很适合你的申请


为了将一个频率与一个目标频率相匹配,我将两者都转换为绝对分频标度(或MIDI分频)。100美分等于半色调。然后,您可以四舍五入到最接近的100,以获得假定的目标音调。请参阅本页以了解

由于硬件规格不适合提出此问题,您无法获得准确的频率。只有与代码相关的问题才应该发布在这里。@Antoniossss你的意思是因为程序将通过麦克风获取输入?@Ranjith抱歉,我看到一个关于频率的问题,这个问题与我的问题有些相似。这就是我把我的贴在这里的原因。试着把它贴在android.stackexchange.com上。我无法想象这会太难。哇,谢谢你提供的信息。你认为匹配频率不会像检测频率那样困难吗?在这个问题上也不乏疑问。