实现一个基于 android/java 的应用程序,该应用程序获取音频文件并为音频文件生成吉他谱?
Implementing an android/java based application that takes an audio file and and generates the guitar tab to the audio file?
在 JAVA 中使用哪种音频格式更容易? MIDI 还是 MP3?
如何从java中的音频文件中提取音符频率?
以及如何显示与导入到应用程序的音轨相关的吉他选项卡?有没有好的javaAPI可以合作?
找出从原始域转换信号的FFT算法。
使用 MIDI 比使用 MP3 文件要容易得多。 Java 公开 MIDI,MIDI 直接将标准键盘音符音高编码为整数。使用 MIDI 文件时,无需对原始音频数据进行任何频率分析。此外,解码 MP3 需要使用外部库(我可能错了,就 JavaFX 而言)和音频数据的解压缩以及是否需要向所有者付费的问题MP3专利授权费。
如果您使用 MIDI,则转换为吉他谱非常容易。例如,69 的 MIDI 音符值为 A-440,即第 4 弦第 2 品。减去 12 得到 57,得到 A-220,它是第二根弦,对吗? (我可能在倒数我的琴弦,或者相差一个八度!我不了解吉他的具体细节。)无论如何,很容易在网上找到图表:
Note names, MIDI number and frequencies
有关使用 MIDI 的更多信息,请参阅 Java 教程:Overview of the MIDI package 我认为您需要关注 ShortMessage.NOTE_ON用于读取音符值。
另一方面,加载和播放声音文件比 MIDI 文件更容易。然而,提取给定乐器的音高所需的分析(特别是如果还有其他乐器也在演奏)远远超出我所知道的。
在 JAVA 中使用哪种音频格式更容易? MIDI 还是 MP3? 如何从java中的音频文件中提取音符频率? 以及如何显示与导入到应用程序的音轨相关的吉他选项卡?有没有好的javaAPI可以合作?
找出从原始域转换信号的FFT算法。
使用 MIDI 比使用 MP3 文件要容易得多。 Java 公开 MIDI,MIDI 直接将标准键盘音符音高编码为整数。使用 MIDI 文件时,无需对原始音频数据进行任何频率分析。此外,解码 MP3 需要使用外部库(我可能错了,就 JavaFX 而言)和音频数据的解压缩以及是否需要向所有者付费的问题MP3专利授权费。
如果您使用 MIDI,则转换为吉他谱非常容易。例如,69 的 MIDI 音符值为 A-440,即第 4 弦第 2 品。减去 12 得到 57,得到 A-220,它是第二根弦,对吗? (我可能在倒数我的琴弦,或者相差一个八度!我不了解吉他的具体细节。)无论如何,很容易在网上找到图表: Note names, MIDI number and frequencies
有关使用 MIDI 的更多信息,请参阅 Java 教程:Overview of the MIDI package 我认为您需要关注 ShortMessage.NOTE_ON用于读取音符值。
另一方面,加载和播放声音文件比 MIDI 文件更容易。然而,提取给定乐器的音高所需的分析(特别是如果还有其他乐器也在演奏)远远超出我所知道的。