想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
已关闭6年。
Improve this question
处理音频以便输出正在播放的音符的最佳方法是什么?我正在为大学任务创建吉他调音器,并且是Android开发的新手。
我已经看过Android例子来录制来自Google API的声音,但是我想知道从那里去哪里?
我知道我必须进行傅立叶变换或其他方法来获得频率,只是想知道是否有人对如何执行此操作有任何建议?
一旦我们能够在屏幕上显示正确的频率,我们就将完成大部分项目。
谢谢你的帮助。
最佳答案
如果您从未做过Android开发,并且几乎没有或根本没有数字信号处理和傅立叶变换方面的经验,那么您将面临一个艰巨的挑战。
另一方面,如anthropomo所建议的,如果您可以使用现有的库进行分配,那么您可能有很好的机会将其完成。
但是,如果您的教授不允许您使用现有的库,则需要解决以下难题:
您的程序如何自动找到正在演奏的音符的基本频率?看一看真实的古典吉他弹奏E2音符的频率/frequency_decibelMagnitude图。观察到基本频率(82.4 Hz)在一次谐波之下衰减了大约17分贝(17 dB)(一次谐波为164.8 Hz)。
下面是同一图的特写,您可以在其中更清晰地看到基本峰:
在一次谐波以下衰减17 dB的基频是很大的衰减。以下是相同的E2音符频谱,但现在它是在线性频率幅度轴上绘制的(垂直轴现在是线性频率幅度而不是分贝频率幅度)。现在,您可以更清楚地看到基本频率峰值实际上在一次谐波以下。
您的程序将必须自动检测82.4 Hz处的17 dB衰减基频,但是在通常情况下您的程序无法提前知道用户正在弹吉他的音调时,该如何处理?
上面的频谱适用于古典民谣吉他上的E2。钢弦吉他上E2的频谱有何不同?放大电吉他上的E2呢?您的程序将如何处理这些不同光谱之间的差异?
这个问题并非微不足道。问题是您有多少时间进行这项作业,您的教授会认为什么是完成的作业。
此引用文献提供了更深的理解:Musical instrument spectra to 102.4 KHz
您可以绘制频谱图并听到吉他音符E2至Bb5,在这里:Musical instrument spectrum
关于吉他调音器的Android处理音频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14740567/