在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/