java - 根据频率计算音符

标签 java audio audio-processing

我正在 android 上创建一个调谐器,我从设备的麦克风获取音频并对其进行处理以获得频率。但是,一旦我开始转换音符上的频率,我想知道是否有一种方法可以做到这一点而不必使用一堆“IF”,是否有计算以更有效的方式做到这一点?

最佳答案

是的,这是可以做到的。但是,首先您必须知道工作的关键。假设是普通的 C 大调,您将从音符 a1 开始,频率为 440Hz。每升高一个 Octave 音阶,频率就会加倍,每降低一个 Octave 音阶,频率就会减半,所以你得到了一个很好的对数刻度,底数为 2。

在对数标度内,乘法变成加法。因此,如果您将音符 _ 的音程相对于 a 计算,则所有 Octave 音阶的频率比率都保持不变。所以你只需要找出你在哪个 Octave 音阶,减去或加上那个数字,残差就是频率间隔的对数。找到 Octave 也很简单,只需计算 floor(log2(f/440Hz))

关于java - 根据频率计算音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357727/

相关文章:

java - 在eclipse中调试tomcat服务器实例

java - 如何判断类的类型并通过fromJson方法括号传递给gson

java - 即使使用 START_STICKY,Android 也不会重新创建服务

ios - 应用程序运行时无法将蓝牙耳机与AVAudioSessionCategoryPlayAndRecord连接

javascript - 播放 html5 的 Audio 对象的多个实例

java - 有谷歌声音API吗

audio-processing - Bpm音频检测库

java - 我可以在 ActionListener 上使用 get 和 set 吗?为什么不工作?

java - 使用互相关的声音文件的时间延迟

audio - XAudio2 遮挡处理