从音频样本中识别单个吉他和弦

发布于 2025-01-08 13:12:38 字数 357 浏览 0 评论 0原文

我意识到这里已经有很多关于和弦检测算法的问题;然而,其中大多数似乎更多地与将歌曲解释为和弦集或和弦转录有关。我的问题应该简单得多,因为我只对录制吉他和弦的单个弹奏感兴趣,然后分析它以返回所演奏的和弦。并且,如果这被证明太困难,那么简单地能够判断特定和弦是否被正确演奏就足够了,例如向用户呈现一个和弦以尝试演奏,并且在扫弦之后,应用程序会告诉他们是否演奏了正确的和弦(类似于记忆游戏)。我认为第二个选项会更容易,因为应用程序已经知道需要什么和弦。

我已经在吉他调音器中使用 FFT 和谐波乘积频谱作为同一应用程序的一部分,并且非常希望获得一些关于如何分析 FFT 输出的频谱以识别吉他和弦的建议。我也愿意接受有关此事的任何其他建议,并且非常感谢我能得到的任何帮助。

谢谢

I realise there are a fair few questions on here already with regard to chord detection algorithms; however, most of these seem to be relating more to interpreting songs into sets of chords or chord transcription. My problem ought to be a lot simpler as I am only interested in recording a single strum of a guitar chord and then analysing this to return the chord that was played. And, if this proves to be too difficult, it would be somewhat adequate to simply be able to tell if a particular chord is being played correctly or not, e.g. a user is presented with a chord to attempt to play and, after strumming, the application will tell them whether or not they played the correct chord (something of a memory game). I would think this second option would be easier since the application would already know what chord to expect.

I am already using an FFT and the Harmonic Product Spectrum for a guitar tuner as part of the same application and would really like some advice on how I could analyse the frequency spectrum output by the FFT to recognise guitar chords. I am also open to any other suggestions on the matter and would really appreciate any help I can get.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

你丑哭了我 2025-01-15 13:12:38

您可以尝试对最常见的和弦进行指纹识别,然后在指纹集中寻找最匹配的归一化频谱。例如,将其视为频域中的模式匹配问题。

You could try fingerprinting the most common chords, and then looking for the closest matching normalized spectrum within your set of fingerprints. e.g. Treat it as a pattern matching problem in the frequency domain.

喜你已久 2025-01-15 13:12:38

对于任何想知道如何做这种事情的人,请查看谐波产品频谱和音高等级配置文件/色度矢量。这些的结合是关键。此外,使用搜索词“多重 F0 估计”而不是“和弦检测”将保证更好的结果:)

For anyone wondering how to do this kind of thing, look into Harmonic Product Spectrum and Pitch Class Profiles / Chroma Vectors. A combination of these is the key. Also, using the search terms "multiple F0 estimation" as opposed to "chord detection" will warrant much better results :)

忆悲凉 2025-01-15 13:12:38

虽然回复已经太晚了,但我希望这会对您有所帮助。

如果您正在为电子或 MIDI 吉他或任何其他 MIDI 乐器进行编程,那么有一个非常有效的 Java 包 JFugue 用于这些东西,例如检测和弦音符等。适用于任何仪器,并且该软件包中还有更多功能。
我建议你看一下 Jfugue.org

Though its too late to reply , i hope this will help you..

If you are programming for electronic or MIDI Guitar or any other MIDI instrument then there is a very effective Java package JFugue for these stuffs, like detecting the chords notes etc..for any instrument and there is a lot more functionality in this package.
i suggest you to have a look at it Jfugue.org

夏末 2025-01-15 13:12:38

我自己发现一开始很难使用 FFT 识别整个和弦。但就我的实验而言,我能够使用 FFT 作为获取单个声音数据频率的基本算法来制作吉他和弦标识符。 FFT 调音器的问题在于它们仅检测声音的根音。我的实验证明,您可以记录正在演奏的琴弦的所有音符,并使用识别出的音符来判断正在演奏的和弦。就目前而言,我的研究仍然仅限于检测吉他大和弦和一些小和弦(例如 Em 和 Am)以供进一步研究。

I myself found it hard at first to identify a whole chord using FFT. But as far as my experiment went, I was able to make a guitar chord identifier using FFT as the basic algorithm for obtaining frequencies of a single sound data. The problem of FFT tuners is that they only detect the root note of a sound. Whilst my experiment proved that you can take all the notes of the strings being played and use the identified notes to tell what chord was being played. As for now, my research was still limited to detecting Major Guitar Chords and some minor chords like Em and Am for further study.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文