java - 实现一个基于Android/java的应用程序,该应用程序需要一个音频文件并生成该音频文件的Guitar选项卡?

标签 java android audio fft midi

在JAVA中使用哪种音频格式会更容易? MIDI还是MP3?
如何从Java中的音频文件中提取音符频率?
以及如何相对于导入到应用程序的音轨显示Guitar标签?我可以使用 Java API 吗?

找到了FFT算法,该算法可以转换原始域中的信号。

最佳答案

使用MIDI比使用MP3文件容易得多。 Java公开MIDI,而MIDI将标准键盘音高直接编码为整数。使用MIDI文件,无需对原始音频数据进行任何频率分析。此外,对MP3进行解码需要使用外部库(就JavaFX而言,我可能是错的)和音频数据的解压缩,并引发了一个问题,即是否需要向MP3专利的所有者支付许可费费用。

如果使用MIDI,则转换为吉他选项卡非常容易。例如,MIDI音符值69是A-440,它是第4弦,第2品格。减去12,得到57,就得到了A-220,它是第二个字符串,是吗? (我可能会倒数我的弦,或者是 Octave 音调!我不了解吉他的具体细节。)无论如何,很容易在网上找到图表:
Note names, MIDI number and frequencies

有关使用MIDI的更多信息,请参见Java教程:Overview of the MIDI package我想您应该注意ShortMessage.NOTE_ON来读取音符值。

另一方面,与MIDI文件相比,加载和播放声音文件更容易。但是,提取给定乐器的音调(特别是如果还有其他乐器也在演奏)所需的分析远远超出了我所知道的方法。

关于java - 实现一个基于Android/java的应用程序,该应用程序需要一个音频文件并生成该音频文件的Guitar选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459795/

相关文章:

java - 哪个监听器可以知道 JTextPane 值已更改?

java - 在 TextView 中显示带有 img html 的图像

java - firebase 检查子进程是否存在

android - Nexus 5 上启动器图标的实际大小是多少?

java - 从应用程序内永久添加按钮

audio - 如何从iPhone 11或iPhone 11 Pro Max获得采样率为44100的音频

java - 无法通过android模拟器发送电子邮件

android - 为什么我们不总是使用 FTS 表?

javascript - ios 上的 Html5 音频 : play it in browser

java - 为什么在使用Eclipse IDE播放.wav声音文件时出现此错误?